@rafaelaugusto/jolt 0.1.0-beta.1 → 0.1.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +367 -18
- package/dist/animate.d.ts +19 -3
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +186 -14
- package/dist/animate.js.map +1 -1
- package/dist/color.d.ts +11 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +73 -0
- package/dist/color.js.map +1 -0
- package/dist/config.d.ts +31 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +73 -0
- package/dist/config.js.map +1 -0
- package/dist/decay.d.ts +11 -0
- package/dist/decay.d.ts.map +1 -0
- package/dist/decay.js +22 -0
- package/dist/decay.js.map +1 -0
- package/dist/decoration.d.ts +18 -0
- package/dist/decoration.d.ts.map +1 -0
- package/dist/decoration.js +155 -0
- package/dist/decoration.js.map +1 -0
- package/dist/drag-input.d.ts +15 -0
- package/dist/drag-input.d.ts.map +1 -0
- package/dist/drag-input.js +66 -0
- package/dist/drag-input.js.map +1 -0
- package/dist/drag-physics.d.ts +20 -0
- package/dist/drag-physics.d.ts.map +1 -0
- package/dist/drag-physics.js +75 -0
- package/dist/drag-physics.js.map +1 -0
- package/dist/drag.d.ts +58 -0
- package/dist/drag.d.ts.map +1 -0
- package/dist/drag.js +324 -0
- package/dist/drag.js.map +1 -0
- package/dist/driver/android-color.d.ts +20 -0
- package/dist/driver/android-color.d.ts.map +1 -0
- package/dist/driver/android-color.js +136 -0
- package/dist/driver/android-color.js.map +1 -0
- package/dist/driver/android-decoration.d.ts +22 -0
- package/dist/driver/android-decoration.d.ts.map +1 -0
- package/dist/driver/android-decoration.js +139 -0
- package/dist/driver/android-decoration.js.map +1 -0
- package/dist/driver/android-playback.d.ts +13 -0
- package/dist/driver/android-playback.d.ts.map +1 -0
- package/dist/driver/android-playback.js +141 -0
- package/dist/driver/android-playback.js.map +1 -0
- package/dist/driver/android.d.ts +1 -1
- package/dist/driver/android.d.ts.map +1 -1
- package/dist/driver/android.js +165 -13
- package/dist/driver/android.js.map +1 -1
- package/dist/driver/index.d.ts +25 -2
- package/dist/driver/index.d.ts.map +1 -1
- package/dist/driver/index.js.map +1 -1
- package/dist/driver/ios-color.d.ts +16 -0
- package/dist/driver/ios-color.d.ts.map +1 -0
- package/dist/driver/ios-color.js +392 -0
- package/dist/driver/ios-color.js.map +1 -0
- package/dist/driver/ios-decoration.d.ts +17 -0
- package/dist/driver/ios-decoration.d.ts.map +1 -0
- package/dist/driver/ios-decoration.js +271 -0
- package/dist/driver/ios-decoration.js.map +1 -0
- package/dist/driver/ios-layout.d.ts +9 -0
- package/dist/driver/ios-layout.d.ts.map +1 -0
- package/dist/driver/ios-layout.js +52 -0
- package/dist/driver/ios-layout.js.map +1 -0
- package/dist/driver/ios-playback.d.ts +10 -0
- package/dist/driver/ios-playback.d.ts.map +1 -0
- package/dist/driver/ios-playback.js +47 -0
- package/dist/driver/ios-playback.js.map +1 -0
- package/dist/driver/ios-shadow.d.ts +6 -0
- package/dist/driver/ios-shadow.d.ts.map +1 -0
- package/dist/driver/ios-shadow.js +52 -0
- package/dist/driver/ios-shadow.js.map +1 -0
- package/dist/driver/ios.d.ts.map +1 -1
- package/dist/driver/ios.js +163 -28
- package/dist/driver/ios.js.map +1 -1
- package/dist/engine.d.ts +75 -5
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +293 -23
- package/dist/engine.js.map +1 -1
- package/dist/haptics.d.ts +21 -0
- package/dist/haptics.d.ts.map +1 -0
- package/dist/haptics.js +120 -0
- package/dist/haptics.js.map +1 -0
- package/dist/image-effect-native.d.ts +26 -0
- package/dist/image-effect-native.d.ts.map +1 -0
- package/dist/image-effect-native.js +73 -0
- package/dist/image-effect-native.js.map +1 -0
- package/dist/image-effect.d.ts +50 -0
- package/dist/image-effect.d.ts.map +1 -0
- package/dist/image-effect.js +290 -0
- package/dist/image-effect.js.map +1 -0
- package/dist/image-owner.d.ts +3 -0
- package/dist/image-owner.d.ts.map +1 -0
- package/dist/image-owner.js +11 -0
- package/dist/image-owner.js.map +1 -0
- package/dist/index.d.ts +43 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/interaction-surface.d.ts +12 -0
- package/dist/interaction-surface.d.ts.map +1 -0
- package/dist/interaction-surface.js +36 -0
- package/dist/interaction-surface.js.map +1 -0
- package/dist/items.d.ts +20 -0
- package/dist/items.d.ts.map +1 -0
- package/dist/items.js +109 -0
- package/dist/items.js.map +1 -0
- package/dist/keyboard.d.ts +41 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +256 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/label.d.ts +7 -0
- package/dist/label.d.ts.map +1 -0
- package/dist/label.js +60 -0
- package/dist/label.js.map +1 -0
- package/dist/layout.d.ts +13 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +348 -0
- package/dist/layout.js.map +1 -0
- package/dist/liquid-grid.d.ts +3 -0
- package/dist/liquid-grid.d.ts.map +1 -0
- package/dist/liquid-grid.js +24 -0
- package/dist/liquid-grid.js.map +1 -0
- package/dist/liquid.d.ts +18 -0
- package/dist/liquid.d.ts.map +1 -0
- package/dist/liquid.js +234 -0
- package/dist/liquid.js.map +1 -0
- package/dist/loader.d.ts +19 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +173 -0
- package/dist/loader.js.map +1 -0
- package/dist/motion-scope.d.ts +39 -0
- package/dist/motion-scope.d.ts.map +1 -0
- package/dist/motion-scope.js +238 -0
- package/dist/motion-scope.js.map +1 -0
- package/dist/motion-states.d.ts +36 -0
- package/dist/motion-states.d.ts.map +1 -0
- package/dist/motion-states.js +165 -0
- package/dist/motion-states.js.map +1 -0
- package/dist/particles.d.ts +39 -0
- package/dist/particles.d.ts.map +1 -0
- package/dist/particles.js +265 -0
- package/dist/particles.js.map +1 -0
- package/dist/path.d.ts +12 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +90 -0
- package/dist/path.js.map +1 -0
- package/dist/playback-group.d.ts +6 -0
- package/dist/playback-group.d.ts.map +1 -0
- package/dist/playback-group.js +141 -0
- package/dist/playback-group.js.map +1 -0
- package/dist/playback.d.ts +25 -0
- package/dist/playback.d.ts.map +1 -0
- package/dist/playback.js +35 -0
- package/dist/playback.js.map +1 -0
- package/dist/press.d.ts.map +1 -1
- package/dist/press.js +23 -7
- package/dist/press.js.map +1 -1
- package/dist/properties.d.ts +6 -3
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +26 -2
- package/dist/properties.js.map +1 -1
- package/dist/reveal.d.ts +25 -0
- package/dist/reveal.d.ts.map +1 -0
- package/dist/reveal.js +294 -0
- package/dist/reveal.js.map +1 -0
- package/dist/roll-diff.d.ts +22 -0
- package/dist/roll-diff.d.ts.map +1 -0
- package/dist/roll-diff.js +36 -0
- package/dist/roll-diff.js.map +1 -0
- package/dist/roll.d.ts +29 -0
- package/dist/roll.d.ts.map +1 -0
- package/dist/roll.js +442 -0
- package/dist/roll.js.map +1 -0
- package/dist/scroll-linked.d.ts +10 -0
- package/dist/scroll-linked.d.ts.map +1 -0
- package/dist/scroll-linked.js +58 -0
- package/dist/scroll-linked.js.map +1 -0
- package/dist/sequence.d.ts +10 -5
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +208 -14
- package/dist/sequence.js.map +1 -1
- package/dist/shimmer.d.ts +12 -0
- package/dist/shimmer.d.ts.map +1 -0
- package/dist/shimmer.js +161 -0
- package/dist/shimmer.js.map +1 -0
- package/dist/svg-path.d.ts +14 -0
- package/dist/svg-path.d.ts.map +1 -0
- package/dist/svg-path.js +281 -0
- package/dist/svg-path.js.map +1 -0
- package/dist/symbol-effect.d.ts +23 -0
- package/dist/symbol-effect.d.ts.map +1 -0
- package/dist/symbol-effect.js +187 -0
- package/dist/symbol-effect.js.map +1 -0
- package/dist/text-layout.d.ts +30 -0
- package/dist/text-layout.d.ts.map +1 -0
- package/dist/text-layout.js +185 -0
- package/dist/text-layout.js.map +1 -0
- package/dist/text.d.ts +17 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +263 -0
- package/dist/text.js.map +1 -0
- package/dist/track.d.ts +3 -1
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +266 -13
- package/dist/track.js.map +1 -1
- package/dist/transition.d.ts +17 -1
- package/dist/transition.d.ts.map +1 -1
- package/dist/transition.js +41 -6
- package/dist/transition.js.map +1 -1
- package/dist/types.d.ts +48 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vue/index.d.ts +95 -0
- package/dist/vue/index.d.ts.map +1 -0
- package/dist/vue/index.js +163 -0
- package/dist/vue/index.js.map +1 -0
- package/dist/zoom-native.d.ts +30 -0
- package/dist/zoom-native.d.ts.map +1 -0
- package/dist/zoom-native.js +56 -0
- package/dist/zoom-native.js.map +1 -0
- package/dist/zoomable.d.ts +48 -0
- package/dist/zoomable.d.ts.map +1 -0
- package/dist/zoomable.js +249 -0
- package/dist/zoomable.js.map +1 -0
- package/package.json +29 -5
- package/platforms/android/include.gradle +7 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ColorTarget.java +102 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/DecorationTarget.java +154 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ImageEffect.java +288 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFollower.java +91 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardObserver.java +97 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/NumberRoll.java +190 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/PhotoZoom.java +250 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/TextReveal.java +180 -0
- package/platforms/android/proguard-rules.pro +19 -0
- package/platforms/ios/build.xcconfig +1 -0
- package/platforms/ios/src/JoltImageEffect.h +25 -0
- package/platforms/ios/src/JoltImageEffect.mm +242 -0
- package/platforms/ios/src/JoltInteractiveAnimation.h +18 -0
- package/platforms/ios/src/JoltInteractiveAnimation.m +123 -0
- package/platforms/ios/src/JoltPhotoZoom.h +23 -0
- package/platforms/ios/src/JoltPhotoZoom.m +229 -0
- package/platforms/ios/src/module.modulemap +6 -0
- package/src/android-plugin.d.ts +155 -0
- package/src/animate.ts +249 -36
- package/src/color.ts +101 -0
- package/src/config.ts +84 -0
- package/src/decay.ts +45 -0
- package/src/decoration.ts +180 -0
- package/src/drag-input.ts +74 -0
- package/src/drag-physics.ts +110 -0
- package/src/drag.ts +395 -0
- package/src/driver/android-color.ts +170 -0
- package/src/driver/android-decoration.ts +182 -0
- package/src/driver/android-playback.ts +157 -0
- package/src/driver/android.ts +208 -20
- package/src/driver/index.ts +37 -2
- package/src/driver/ios-color.ts +441 -0
- package/src/driver/ios-decoration.ts +332 -0
- package/src/driver/ios-layout.ts +63 -0
- package/src/driver/ios-playback.ts +51 -0
- package/src/driver/ios-shadow.ts +50 -0
- package/src/driver/ios.ts +193 -33
- package/src/engine.ts +321 -27
- package/src/haptics.ts +148 -0
- package/src/image-effect-native.ts +129 -0
- package/src/image-effect.ts +336 -0
- package/src/image-owner.ts +12 -0
- package/src/index.ts +59 -2
- package/src/interaction-surface.ts +41 -0
- package/src/ios-plugin.d.ts +81 -0
- package/src/items.ts +140 -0
- package/src/keyboard.ts +291 -0
- package/src/label.ts +76 -0
- package/src/layout.ts +408 -0
- package/src/liquid-grid.ts +28 -0
- package/src/liquid.ts +287 -0
- package/src/loader.ts +202 -0
- package/src/motion-scope.ts +279 -0
- package/src/motion-states.ts +215 -0
- package/src/particles.ts +323 -0
- package/src/path.ts +124 -0
- package/src/playback-group.ts +143 -0
- package/src/playback.ts +62 -0
- package/src/press.ts +26 -10
- package/src/properties.ts +32 -6
- package/src/reveal.ts +374 -0
- package/src/roll-diff.ts +57 -0
- package/src/roll.ts +515 -0
- package/src/scroll-linked.ts +73 -0
- package/src/sequence.ts +204 -14
- package/src/shimmer.ts +180 -0
- package/src/svg-path.ts +355 -0
- package/src/symbol-effect.ts +226 -0
- package/src/text-layout.ts +228 -0
- package/src/text.ts +279 -0
- package/src/track.ts +347 -12
- package/src/transition.ts +63 -6
- package/src/types.ts +49 -1
- package/src/vue/index.ts +231 -0
- package/src/zoom-native.ts +124 -0
- package/src/zoomable.ts +330 -0
package/dist/track.js
CHANGED
|
@@ -1,12 +1,30 @@
|
|
|
1
|
+
import { clampDecoration, isDecorationProperty } from './decoration.js';
|
|
1
2
|
import { linear } from './easing.js';
|
|
3
|
+
import { solveDecay } from './decay.js';
|
|
4
|
+
import { solveDragRelease } from './drag-physics.js';
|
|
2
5
|
import { precision } from './properties.js';
|
|
3
|
-
import { solveSpring } from './spring.js';
|
|
6
|
+
import { solveSpring, springPhysics } from './spring.js';
|
|
7
|
+
import { colorMixer, isColorProperty } from './color.js';
|
|
8
|
+
import { reducedMotion, timeScale } from './config.js';
|
|
4
9
|
const SAMPLES_PER_SECOND = 60;
|
|
10
|
+
const MAX_DECAY_SAMPLES = 6000;
|
|
5
11
|
const ARRIVAL_TOLERANCE = 0.05;
|
|
6
|
-
export function createTrack(property, keyframes,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
12
|
+
export function createTrack(property, keyframes, transition, velocity) {
|
|
13
|
+
if (isColorProperty(property))
|
|
14
|
+
return colorTrack(property, keyframes, transition);
|
|
15
|
+
const { curve } = transition;
|
|
16
|
+
if (property !== 'opacity' && reducedMotion())
|
|
17
|
+
return instantTrack(property, restingValue(property, keyframes, curve, transition.repeat, transition.reverse));
|
|
18
|
+
const slowdown = 1 / timeScale();
|
|
19
|
+
const delay = transition.delay * slowdown;
|
|
20
|
+
const played = slow(curve.type === 'spring'
|
|
21
|
+
? spring(property, keyframes, curve, velocity * slowdown, slowdown)
|
|
22
|
+
: curve.type === 'drag'
|
|
23
|
+
? dragMotion(keyframes[0], curve, slowdown)
|
|
24
|
+
: curve.type === 'decay'
|
|
25
|
+
? decay(property, keyframes[0], curve, slowdown)
|
|
26
|
+
: tween(keyframes, curve, slowdown), slowdown);
|
|
27
|
+
const { motion, repeat, reverse } = pauseBetweenRepeats(played, transition.repeat, transition.reverse, (transition.repeatDelay ?? 0) * slowdown);
|
|
10
28
|
const { duration } = motion;
|
|
11
29
|
const first = motion.values[0];
|
|
12
30
|
const last = motion.values.at(-1);
|
|
@@ -23,7 +41,7 @@ export function createTrack(property, keyframes, { curve, delay, repeat, reverse
|
|
|
23
41
|
const local = time - iteration * duration;
|
|
24
42
|
return reverse && iteration % 2 === 1 ? [duration - local, -1] : [local, 1];
|
|
25
43
|
};
|
|
26
|
-
|
|
44
|
+
const track = {
|
|
27
45
|
property,
|
|
28
46
|
delay,
|
|
29
47
|
duration,
|
|
@@ -33,7 +51,12 @@ export function createTrack(property, keyframes, { curve, delay, repeat, reverse
|
|
|
33
51
|
values: motion.values,
|
|
34
52
|
to: !finite || endsBackwards ? first : last,
|
|
35
53
|
end,
|
|
36
|
-
arrival: curve.type === 'spring'
|
|
54
|
+
arrival: (curve.type === 'spring' ||
|
|
55
|
+
curve.type === 'drag' ||
|
|
56
|
+
(curve.type === 'decay' && curve.snap !== undefined)) &&
|
|
57
|
+
transition.repeat === 0
|
|
58
|
+
? delay + arrival(motion)
|
|
59
|
+
: end,
|
|
37
60
|
valueAt: (elapsed) => motion.position(localTime(elapsed)[0]),
|
|
38
61
|
velocityAt: (elapsed) => {
|
|
39
62
|
if (elapsed <= delay || elapsed >= end)
|
|
@@ -42,6 +65,207 @@ export function createTrack(property, keyframes, { curve, delay, repeat, reverse
|
|
|
42
65
|
return motion.velocity(time) * direction;
|
|
43
66
|
},
|
|
44
67
|
};
|
|
68
|
+
if (!isDecorationProperty(property))
|
|
69
|
+
return track;
|
|
70
|
+
return {
|
|
71
|
+
...track,
|
|
72
|
+
values: track.values.map((value) => clampDecoration(property, value)),
|
|
73
|
+
to: clampDecoration(property, track.to),
|
|
74
|
+
valueAt: (elapsed) => clampDecoration(property, track.valueAt(elapsed)),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** Already at its end: the engine writes the value and plays nothing. */
|
|
78
|
+
export function instantTrack(property, value) {
|
|
79
|
+
const to = isDecorationProperty(property) ? clampDecoration(property, value) : value;
|
|
80
|
+
return {
|
|
81
|
+
property,
|
|
82
|
+
delay: 0,
|
|
83
|
+
duration: 0,
|
|
84
|
+
repeat: 0,
|
|
85
|
+
reverse: false,
|
|
86
|
+
times: [0, 1],
|
|
87
|
+
values: [to, to],
|
|
88
|
+
to,
|
|
89
|
+
end: 0,
|
|
90
|
+
arrival: 0,
|
|
91
|
+
valueAt: () => to,
|
|
92
|
+
velocityAt: () => 0,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function restingValue(property, keyframes, curve, repeat, reverse) {
|
|
96
|
+
const first = keyframes[0];
|
|
97
|
+
if (!Number.isFinite(repeat) || (reverse && repeat % 2 === 1))
|
|
98
|
+
return first;
|
|
99
|
+
if (curve.type === 'drag')
|
|
100
|
+
return solveDragRelease(first, curve).to;
|
|
101
|
+
if (curve.type !== 'decay')
|
|
102
|
+
return keyframes.at(-1);
|
|
103
|
+
const landing = solveDecay(first, curve.velocity, curve.friction, precision[property]).to;
|
|
104
|
+
return curve.snap ? closest(curve.snap, landing) : landing;
|
|
105
|
+
}
|
|
106
|
+
function closest(stops, target) {
|
|
107
|
+
return stops.reduce((best, stop) => Math.abs(stop - target) < Math.abs(best - target) ? stop : best);
|
|
108
|
+
}
|
|
109
|
+
function colorTrack(property, colors, transition) {
|
|
110
|
+
const progress = createTrack('opacity', colors.map((_, i) => i), transition, 0);
|
|
111
|
+
const mixes = colors.slice(1).map((color, i) => colorMixer(colors[i], color));
|
|
112
|
+
const colorAt = (position) => {
|
|
113
|
+
const p = Math.max(0, Math.min(colors.length - 1, position));
|
|
114
|
+
const segment = Math.min(mixes.length - 1, Math.floor(p));
|
|
115
|
+
return mixes[segment](p - segment);
|
|
116
|
+
};
|
|
117
|
+
// Linear timing still needs intermediate colors: native RGB interpolation is
|
|
118
|
+
// only the short bridge between these perceptually spaced samples.
|
|
119
|
+
const steps = Math.max(1, Math.min(MAX_DECAY_SAMPLES, Math.ceil((progress.duration / 1000) * SAMPLES_PER_SECOND)));
|
|
120
|
+
const times = [
|
|
121
|
+
...new Set([
|
|
122
|
+
...progress.times,
|
|
123
|
+
...Array.from({ length: steps + 1 }, (_, i) => i / steps),
|
|
124
|
+
]),
|
|
125
|
+
].sort((a, b) => a - b);
|
|
126
|
+
return {
|
|
127
|
+
...progress,
|
|
128
|
+
property,
|
|
129
|
+
times,
|
|
130
|
+
values: times.map((time) => colorAt(time === 0
|
|
131
|
+
? progress.values[0]
|
|
132
|
+
: time === 1
|
|
133
|
+
? progress.values.at(-1)
|
|
134
|
+
: progress.valueAt(progress.delay + time * progress.duration))),
|
|
135
|
+
to: colorAt(progress.to),
|
|
136
|
+
valueAt: (elapsed) => colorAt(progress.valueAt(elapsed)),
|
|
137
|
+
// Packed colors have no scalar velocity to carry into another spring.
|
|
138
|
+
velocityAt: () => 0,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Holds the end value for `pause` ms before each repeat, inside the keyframes, so both
|
|
143
|
+
* platforms play it natively. Finite repeats are laid out one after another, with no
|
|
144
|
+
* wait after the last; endless ones loop a cycle that waits at each turn.
|
|
145
|
+
*/
|
|
146
|
+
function pauseBetweenRepeats(motion, repeat, reverse, pause) {
|
|
147
|
+
if (pause <= 0 || repeat <= 0 || motion.duration === 0)
|
|
148
|
+
return { motion, repeat, reverse };
|
|
149
|
+
const play = (backward) => ({
|
|
150
|
+
kind: backward ? 'backward' : 'forward',
|
|
151
|
+
duration: motion.duration,
|
|
152
|
+
});
|
|
153
|
+
const hold = { kind: 'hold', duration: pause };
|
|
154
|
+
const segments = [];
|
|
155
|
+
if (Number.isFinite(repeat))
|
|
156
|
+
for (let i = 0; i <= repeat; i++) {
|
|
157
|
+
if (i > 0)
|
|
158
|
+
segments.push(hold);
|
|
159
|
+
segments.push(play(reverse && i % 2 === 1));
|
|
160
|
+
}
|
|
161
|
+
else
|
|
162
|
+
segments.push(play(false), hold, ...(reverse ? [play(true), hold] : []));
|
|
163
|
+
const total = segments.reduce((sum, segment) => sum + segment.duration, 0);
|
|
164
|
+
const starts = segments.map((_, i) => segments.slice(0, i).reduce((sum, segment) => sum + segment.duration, 0));
|
|
165
|
+
const last = motion.values.length - 1;
|
|
166
|
+
const endOf = (i) => {
|
|
167
|
+
const segment = segments[i];
|
|
168
|
+
if (segment.kind === 'forward')
|
|
169
|
+
return motion.values[last];
|
|
170
|
+
if (segment.kind === 'backward')
|
|
171
|
+
return motion.values[0];
|
|
172
|
+
return endOf(i - 1);
|
|
173
|
+
};
|
|
174
|
+
// A loop jumps back to its start at the end of the hold, not across it.
|
|
175
|
+
const jump = Math.min(1, pause / 10);
|
|
176
|
+
const times = [];
|
|
177
|
+
const values = [];
|
|
178
|
+
segments.forEach((segment, i) => {
|
|
179
|
+
const start = starts[i];
|
|
180
|
+
if (segment.kind === 'hold') {
|
|
181
|
+
const held = endOf(i - 1);
|
|
182
|
+
const next = segments[i + 1];
|
|
183
|
+
const jumps = next !== undefined &&
|
|
184
|
+
(next.kind === 'forward' ? motion.values[0] : motion.values[last]) !== held;
|
|
185
|
+
times.push((start + segment.duration - (jumps ? jump : 0)) / total);
|
|
186
|
+
values.push(held);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
for (let k = 0; k <= last; k++) {
|
|
190
|
+
const index = segment.kind === 'forward' ? k : last - k;
|
|
191
|
+
const offset = motion.times[index];
|
|
192
|
+
const time = segment.kind === 'forward' ? offset : 1 - offset;
|
|
193
|
+
if (k === 0 && i > 0 && values.at(-1) === motion.values[index])
|
|
194
|
+
continue;
|
|
195
|
+
times.push((start + time * motion.duration) / total);
|
|
196
|
+
values.push(motion.values[index]);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
const locate = (time) => {
|
|
200
|
+
let i = 0;
|
|
201
|
+
while (i < segments.length - 1 && time >= starts[i + 1])
|
|
202
|
+
i++;
|
|
203
|
+
return [i, time - starts[i]];
|
|
204
|
+
};
|
|
205
|
+
return {
|
|
206
|
+
motion: {
|
|
207
|
+
duration: total,
|
|
208
|
+
times,
|
|
209
|
+
values,
|
|
210
|
+
position: (time) => {
|
|
211
|
+
const [i, local] = locate(Math.max(0, Math.min(total, time)));
|
|
212
|
+
const segment = segments[i];
|
|
213
|
+
if (segment.kind === 'hold')
|
|
214
|
+
return endOf(i - 1);
|
|
215
|
+
return motion.position(segment.kind === 'forward' ? local : motion.duration - local);
|
|
216
|
+
},
|
|
217
|
+
velocity: (time) => {
|
|
218
|
+
const [i, local] = locate(Math.max(0, Math.min(total, time)));
|
|
219
|
+
const segment = segments[i];
|
|
220
|
+
if (segment.kind === 'hold')
|
|
221
|
+
return 0;
|
|
222
|
+
return segment.kind === 'forward'
|
|
223
|
+
? motion.velocity(local)
|
|
224
|
+
: -motion.velocity(motion.duration - local);
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
repeat: Number.isFinite(repeat) ? 0 : Infinity,
|
|
228
|
+
reverse: false,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/** Plays the same trajectory over a longer or shorter time. */
|
|
232
|
+
function slow(motion, factor) {
|
|
233
|
+
if (factor === 1)
|
|
234
|
+
return motion;
|
|
235
|
+
return {
|
|
236
|
+
...motion,
|
|
237
|
+
duration: motion.duration * factor,
|
|
238
|
+
position: (time) => motion.position(time / factor),
|
|
239
|
+
velocity: (time) => motion.velocity(time / factor) / factor,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/** Keyframes per second of playback, so slowed curves stay smooth. */
|
|
243
|
+
function samples(duration, density) {
|
|
244
|
+
return Math.max(1, Math.min(MAX_DECAY_SAMPLES, Math.ceil(((duration * density) / 1000) * SAMPLES_PER_SECOND)));
|
|
245
|
+
}
|
|
246
|
+
function dragMotion(from, curve, density) {
|
|
247
|
+
const motion = solveDragRelease(from, curve);
|
|
248
|
+
const steps = samples(motion.duration, density);
|
|
249
|
+
const times = Array.from({ length: steps + 1 }, (_, i) => i / steps);
|
|
250
|
+
return {
|
|
251
|
+
...motion,
|
|
252
|
+
times,
|
|
253
|
+
values: times.map((time) => motion.position(time * motion.duration)),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
function decay(property, from, curve, density) {
|
|
257
|
+
const motion = solveDecay(from, curve.velocity, curve.friction, precision[property]);
|
|
258
|
+
if (curve.snap) {
|
|
259
|
+
return spring(property, [from, closest(curve.snap, motion.to)], { type: 'spring', physics: springPhysics({}), velocity: curve.velocity }, 0, density);
|
|
260
|
+
}
|
|
261
|
+
const steps = samples(motion.duration, density);
|
|
262
|
+
const times = [];
|
|
263
|
+
const values = [];
|
|
264
|
+
for (let i = 0; i <= steps; i++) {
|
|
265
|
+
times.push(i / steps);
|
|
266
|
+
values.push(motion.position((i / steps) * motion.duration));
|
|
267
|
+
}
|
|
268
|
+
return { ...motion, times, values };
|
|
45
269
|
}
|
|
46
270
|
function arrival({ times, values, duration }) {
|
|
47
271
|
const target = values.at(-1);
|
|
@@ -51,9 +275,9 @@ function arrival({ times, values, duration }) {
|
|
|
51
275
|
i--;
|
|
52
276
|
return times[i] * duration;
|
|
53
277
|
}
|
|
54
|
-
function spring(property, [from, to], curve, velocity) {
|
|
278
|
+
function spring(property, [from, to], curve, velocity, density) {
|
|
55
279
|
const motion = solveSpring(curve.physics, from, to, curve.velocity ?? velocity, precision[property]);
|
|
56
|
-
const steps =
|
|
280
|
+
const steps = samples(motion.duration, density);
|
|
57
281
|
const times = [];
|
|
58
282
|
const values = [];
|
|
59
283
|
for (let i = 0; i <= steps; i++) {
|
|
@@ -62,7 +286,9 @@ function spring(property, [from, to], curve, velocity) {
|
|
|
62
286
|
}
|
|
63
287
|
return { ...motion, times, values };
|
|
64
288
|
}
|
|
65
|
-
function tween(keyframes, curve) {
|
|
289
|
+
function tween(keyframes, curve, density) {
|
|
290
|
+
if (curve.track && curve.track !== linear)
|
|
291
|
+
return easedTrack(keyframes, curve, density);
|
|
66
292
|
const { duration, ease } = curve;
|
|
67
293
|
const offsets = curve.times ?? keyframes.map((_, i) => i / (keyframes.length - 1));
|
|
68
294
|
const position = (time) => {
|
|
@@ -84,9 +310,7 @@ function tween(keyframes, curve) {
|
|
|
84
310
|
const from = keyframes[i];
|
|
85
311
|
const to = keyframes[i + 1];
|
|
86
312
|
const easing = ease[i];
|
|
87
|
-
const steps = easing === linear || from === to
|
|
88
|
-
? 1
|
|
89
|
-
: Math.max(1, Math.ceil(((span * duration) / 1000) * SAMPLES_PER_SECOND));
|
|
313
|
+
const steps = easing === linear || from === to ? 1 : samples(span * duration, density);
|
|
90
314
|
for (let step = 1; step <= steps; step++) {
|
|
91
315
|
times.push(start + (span * step) / steps);
|
|
92
316
|
values.push(step === steps ? to : from + (to - from) * easing(step / steps));
|
|
@@ -100,4 +324,33 @@ function tween(keyframes, curve) {
|
|
|
100
324
|
values,
|
|
101
325
|
};
|
|
102
326
|
}
|
|
327
|
+
/** One easing over the whole timeline, then straight lines between keyframes, sampled evenly in time. */
|
|
328
|
+
function easedTrack(keyframes, curve, density) {
|
|
329
|
+
const { duration, track: ease = linear } = curve;
|
|
330
|
+
const offsets = curve.times ?? keyframes.map((_, i) => i / (keyframes.length - 1));
|
|
331
|
+
const last = keyframes.length - 1;
|
|
332
|
+
// Like `interpolate`, an easing past 0 or 1 extends the first or last segment.
|
|
333
|
+
const at = (progress) => {
|
|
334
|
+
let i = 0;
|
|
335
|
+
while (i < last - 1 && progress > offsets[i + 1])
|
|
336
|
+
i++;
|
|
337
|
+
const start = offsets[i];
|
|
338
|
+
const span = offsets[i + 1] - start;
|
|
339
|
+
const from = keyframes[i];
|
|
340
|
+
const to = keyframes[i + 1];
|
|
341
|
+
if (span <= 0)
|
|
342
|
+
return progress < start ? from : to;
|
|
343
|
+
return from + ((to - from) * (progress - start)) / span;
|
|
344
|
+
};
|
|
345
|
+
const position = (time) => at(ease(duration > 0 ? Math.min(Math.max(time / duration, 0), 1) : 1));
|
|
346
|
+
const steps = samples(duration, density);
|
|
347
|
+
const times = Array.from({ length: steps + 1 }, (_, i) => i / steps);
|
|
348
|
+
return {
|
|
349
|
+
duration,
|
|
350
|
+
position,
|
|
351
|
+
velocity: (time) => (position(time + 0.5) - position(time - 0.5)) * 1000,
|
|
352
|
+
times,
|
|
353
|
+
values: times.map((time, i) => i === steps ? keyframes[last] : position(time * duration)),
|
|
354
|
+
};
|
|
355
|
+
}
|
|
103
356
|
//# sourceMappingURL=track.js.map
|
package/dist/track.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track.js","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"track.js","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"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"}
|
package/dist/transition.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Easing, type EasingFunction } from './easing.js';
|
|
2
2
|
import type { Property } from './properties.js';
|
|
3
3
|
import { type SpringPhysics } from './spring.js';
|
|
4
|
+
import type { DragCurve } from './drag-physics.js';
|
|
4
5
|
export interface Timing {
|
|
5
6
|
/** Milliseconds to wait before starting. The first keyframe is applied right away. */
|
|
6
7
|
delay?: number;
|
|
@@ -8,6 +9,8 @@ export interface Timing {
|
|
|
8
9
|
repeat?: number;
|
|
9
10
|
/** `reverse` plays every other repeat backwards. */
|
|
10
11
|
repeatType?: 'loop' | 'reverse';
|
|
12
|
+
/** Milliseconds to hold the end value before each repeat. The first play doesn't wait. */
|
|
13
|
+
repeatDelay?: number;
|
|
11
14
|
}
|
|
12
15
|
export interface Tween extends Timing {
|
|
13
16
|
type?: 'tween';
|
|
@@ -17,6 +20,11 @@ export interface Tween extends Timing {
|
|
|
17
20
|
ease?: Easing | readonly Easing[];
|
|
18
21
|
/** Where each keyframe sits, from 0 to 1. Evenly spaced by default. */
|
|
19
22
|
times?: readonly number[];
|
|
23
|
+
/**
|
|
24
|
+
* Run one `ease` over the whole track instead of each segment, with straight lines
|
|
25
|
+
* between keyframes, like React Native's `interpolate`.
|
|
26
|
+
*/
|
|
27
|
+
easeTrack?: boolean;
|
|
20
28
|
}
|
|
21
29
|
export interface Spring extends Timing {
|
|
22
30
|
type?: 'spring';
|
|
@@ -33,21 +41,29 @@ export interface Spring extends Timing {
|
|
|
33
41
|
export type Transition = Tween | Spring;
|
|
34
42
|
export type SpringName = 'smooth' | 'snappy' | 'bouncy';
|
|
35
43
|
export declare const springs: Record<SpringName, Spring>;
|
|
36
|
-
export type Curve = {
|
|
44
|
+
export type Curve = DragCurve | {
|
|
37
45
|
type: 'tween';
|
|
38
46
|
duration: number;
|
|
39
47
|
ease: readonly EasingFunction[];
|
|
40
48
|
times: readonly number[] | undefined;
|
|
49
|
+
/** One easing over the whole track; `ease` is then linear per segment. */
|
|
50
|
+
track?: EasingFunction;
|
|
41
51
|
} | {
|
|
42
52
|
type: 'spring';
|
|
43
53
|
physics: SpringPhysics;
|
|
44
54
|
velocity: number | undefined;
|
|
55
|
+
} | {
|
|
56
|
+
type: 'decay';
|
|
57
|
+
friction: number;
|
|
58
|
+
velocity: number;
|
|
59
|
+
snap: readonly number[] | undefined;
|
|
45
60
|
};
|
|
46
61
|
export interface ResolvedTransition {
|
|
47
62
|
curve: Curve;
|
|
48
63
|
delay: number;
|
|
49
64
|
repeat: number;
|
|
50
65
|
reverse: boolean;
|
|
66
|
+
repeatDelay?: number;
|
|
51
67
|
}
|
|
52
68
|
export declare const DEFAULT_DURATION = 300;
|
|
53
69
|
export declare function hasCurve(transition: Transition): boolean;
|
package/dist/transition.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"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"}
|
package/dist/transition.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { resolveEasing } from './easing.js';
|
|
1
|
+
import { linear, resolveEasing } from './easing.js';
|
|
2
|
+
import { isDecorationProperty } from './decoration.js';
|
|
3
|
+
import { isColorProperty } from './color.js';
|
|
2
4
|
import { springPhysics } from './spring.js';
|
|
3
5
|
export const springs = {
|
|
4
6
|
smooth: { type: 'spring', duration: 500, bounce: 0 },
|
|
@@ -6,8 +8,15 @@ export const springs = {
|
|
|
6
8
|
bouncy: { type: 'spring', duration: 550, bounce: 0.4 },
|
|
7
9
|
};
|
|
8
10
|
const springKeys = ['stiffness', 'damping', 'mass', 'bounce', 'velocity'];
|
|
9
|
-
const curveKeys = [
|
|
10
|
-
|
|
11
|
+
const curveKeys = [
|
|
12
|
+
'type',
|
|
13
|
+
'duration',
|
|
14
|
+
'ease',
|
|
15
|
+
'times',
|
|
16
|
+
'easeTrack',
|
|
17
|
+
...springKeys,
|
|
18
|
+
];
|
|
19
|
+
const timingKeys = ['delay', 'repeat', 'repeatType', 'repeatDelay'];
|
|
11
20
|
export const DEFAULT_DURATION = 300;
|
|
12
21
|
export function hasCurve(transition) {
|
|
13
22
|
return curveKeys.some((key) => transition[key] !== undefined);
|
|
@@ -30,7 +39,11 @@ export function resolveTransition(transition, property, keyframes) {
|
|
|
30
39
|
const type = transition.type ??
|
|
31
40
|
(springKeys.some((key) => transition[key] !== undefined)
|
|
32
41
|
? 'spring'
|
|
33
|
-
: hasCurve(transition) ||
|
|
42
|
+
: hasCurve(transition) ||
|
|
43
|
+
property === 'opacity' ||
|
|
44
|
+
isColorProperty(property) ||
|
|
45
|
+
isDecorationProperty(property) ||
|
|
46
|
+
keyframes > 2
|
|
34
47
|
? 'tween'
|
|
35
48
|
: 'spring');
|
|
36
49
|
const delay = transition.delay ?? 0;
|
|
@@ -39,8 +52,18 @@ export function resolveTransition(transition, property, keyframes) {
|
|
|
39
52
|
throw new RangeError(`Invalid delay: ${delay}.`);
|
|
40
53
|
if (repeat < 0 || Number.isNaN(repeat))
|
|
41
54
|
throw new RangeError(`Invalid repeat: ${repeat}.`);
|
|
42
|
-
const
|
|
55
|
+
const repeatDelay = transition.repeatDelay ?? 0;
|
|
56
|
+
if (!Number.isFinite(repeatDelay) || repeatDelay < 0)
|
|
57
|
+
throw new RangeError(`Invalid repeat delay: ${repeatDelay}.`);
|
|
58
|
+
const timing = {
|
|
59
|
+
delay,
|
|
60
|
+
repeat,
|
|
61
|
+
reverse: transition.repeatType === 'reverse',
|
|
62
|
+
...(repeatDelay > 0 && repeat > 0 && { repeatDelay }),
|
|
63
|
+
};
|
|
43
64
|
if (type === 'spring') {
|
|
65
|
+
if (transition.easeTrack)
|
|
66
|
+
throw new TypeError('easeTrack applies to tweens, not springs.');
|
|
44
67
|
if (keyframes > 2) {
|
|
45
68
|
throw new Error(`A spring goes from one value to another, but "${property}" has ${keyframes} keyframes. Use a tween for keyframes.`);
|
|
46
69
|
}
|
|
@@ -52,11 +75,16 @@ export function resolveTransition(transition, property, keyframes) {
|
|
|
52
75
|
}
|
|
53
76
|
const tween = transition;
|
|
54
77
|
const duration = tween.duration ?? DEFAULT_DURATION;
|
|
55
|
-
if (duration < 0 ||
|
|
78
|
+
if (duration < 0 ||
|
|
79
|
+
Number.isNaN(duration) ||
|
|
80
|
+
((isColorProperty(property) || isDecorationProperty(property)) &&
|
|
81
|
+
!Number.isFinite(duration))) {
|
|
56
82
|
throw new RangeError(`Invalid duration: ${duration}.`);
|
|
57
83
|
}
|
|
58
84
|
const segments = keyframes - 1;
|
|
59
85
|
const ease = tween.ease ?? 'easeOut';
|
|
86
|
+
if (tween.easeTrack && isEasingList(ease))
|
|
87
|
+
throw new TypeError('easeTrack runs one easing over the whole track; pass a single ease.');
|
|
60
88
|
const eases = isEasingList(ease) ? ease : Array.from({ length: segments }, () => ease);
|
|
61
89
|
if (eases.length !== segments) {
|
|
62
90
|
throw new Error(`"${property}" has ${segments} segments between keyframes but ${eases.length} easings.`);
|
|
@@ -71,6 +99,13 @@ export function resolveTransition(transition, property, keyframes) {
|
|
|
71
99
|
throw new Error(`"times" needs one value per keyframe (${keyframes}), going from 0 to 1 without going back.`);
|
|
72
100
|
}
|
|
73
101
|
}
|
|
102
|
+
if (tween.easeTrack) {
|
|
103
|
+
const track = resolveEasing(ease);
|
|
104
|
+
return {
|
|
105
|
+
...timing,
|
|
106
|
+
curve: { type, duration, ease: eases.map(() => linear), times, track },
|
|
107
|
+
};
|
|
108
|
+
}
|
|
74
109
|
return {
|
|
75
110
|
...timing,
|
|
76
111
|
curve: { type, duration, ease: eases.map(resolveEasing), times },
|
package/dist/transition.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.js","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoC,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"transition.js","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAoC,MAAM,aAAa,CAAA;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAA;AA8C/D,MAAM,CAAC,MAAM,OAAO,GAA+B;IACjD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE;IACpD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;CACvD,CAAA;AA4BD,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAClF,MAAM,SAAS,GAAG;IAChB,MAAM;IACN,UAAU;IACV,MAAM;IACN,OAAO;IACP,WAAW;IACX,GAAG,UAAU;CACL,CAAA;AACV,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAU,CAAA;AAE5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAEnC,MAAM,UAAU,QAAQ,CAAC,UAAsB;IAC7C,OAAO,SAAS,CAAC,IAAI,CACnB,CAAC,GAAG,EAAE,EAAE,CAAE,UAAsC,CAAC,GAAG,CAAC,KAAK,SAAS,CACpE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,UAAsB;IAC7C,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,QAAoB;IACrE,OAAO,QAAQ,CAAC,QAAQ,CAAC;QACvB,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE;QACpC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,UAAsB,EACtB,QAAkB,EAClB,SAAiB;IAEjB,MAAM,IAAI,GACR,UAAU,CAAC,IAAI;QACf,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,UAAqB,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;YAClE,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAClB,QAAQ,KAAK,SAAS;gBACtB,eAAe,CAAC,QAAQ,CAAC;gBACzB,oBAAoB,CAAC,QAAQ,CAAC;gBAC9B,SAAS,GAAG,CAAC;gBACf,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,QAAQ,CAAC,CAAA;IAEjB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;IACrC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,kBAAkB,KAAK,GAAG,CAAC,CAAA;IACtF,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,MAAM,IAAI,UAAU,CAAC,mBAAmB,MAAM,GAAG,CAAC,CAAA;IACpD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,CAAC,CAAA;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC;QAClD,MAAM,IAAI,UAAU,CAAC,yBAAyB,WAAW,GAAG,CAAC,CAAA;IAC/D,MAAM,MAAM,GAAG;QACb,KAAK;QACL,MAAM;QACN,OAAO,EAAE,UAAU,CAAC,UAAU,KAAK,SAAS;QAC5C,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;KACtD,CAAA;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAK,UAAoB,CAAC,SAAS;YACjC,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAA;QAClE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,iDAAiD,QAAQ,SAAS,SAAS,wCAAwC,CACpH,CAAA;QACH,CAAC;QACD,MAAM,MAAM,GAAG,UAAoB,CAAA;QACnC,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC3E,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,UAAmB,CAAA;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,gBAAgB,CAAA;IACnD,IACE,QAAQ,GAAG,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtB,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC5D,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAC7B,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,qBAAqB,QAAQ,GAAG,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAA;IACpC,IAAI,KAAK,CAAC,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC;QACvC,MAAM,IAAI,SAAS,CACjB,qEAAqE,CACtE,CAAA;IACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACtF,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,IAAI,QAAQ,SAAS,QAAQ,mCAAmC,KAAK,CAAC,MAAM,WAAW,CACxF,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IACzB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,GACT,KAAK,CAAC,MAAM,KAAK,SAAS;YAC1B,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACd,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAA;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,yCAAyC,SAAS,0CAA0C,CAC7F,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAc,CAAC,CAAA;QAC3C,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;SACvE,CAAA;IACH,CAAC;IACD,OAAO;QACL,GAAG,MAAM;QACT,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE;KACjE,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAgC;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAA;AAC9E,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
1
|
import type { View } from '@nativescript/core';
|
|
2
|
+
import type { Haptic } from './haptics.js';
|
|
2
3
|
import type { SpringName, Transition } from './transition.js';
|
|
4
|
+
import type { ColorKeyframes } from './color.js';
|
|
3
5
|
/** A value to animate to, or keyframes. `null` stands for the value the view has when the animation starts. */
|
|
4
6
|
export type KeyframeValue = number | readonly (number | null)[];
|
|
5
7
|
export interface Keyframes {
|
|
8
|
+
/** One continuous SVG path, expressed as translation coordinates in DIPs. */
|
|
9
|
+
path?: string;
|
|
10
|
+
/** Face the path's forward tangent (+X artwork). Requires path. */
|
|
11
|
+
orient?: boolean;
|
|
12
|
+
backgroundColor?: ColorKeyframes;
|
|
13
|
+
/** Uniform starting edge colors; widths and radii may differ. */
|
|
14
|
+
borderColor?: ColorKeyframes;
|
|
15
|
+
color?: ColorKeyframes;
|
|
16
|
+
/** Uniform circular corners, in DIPs. */
|
|
17
|
+
borderRadius?: KeyframeValue;
|
|
18
|
+
/** Uniform visual border width, in DIPs. Content layout uses the final width. */
|
|
19
|
+
borderWidth?: KeyframeValue;
|
|
20
|
+
/** iOS: opacity of one existing boxShadow, from 0 to 1. */
|
|
21
|
+
shadowOpacity?: KeyframeValue;
|
|
22
|
+
/** iOS: native blur radius in DIPs (half Core's boxShadow blurRadius). */
|
|
23
|
+
shadowRadius?: KeyframeValue;
|
|
24
|
+
/** iOS: offset of one existing boxShadow, in DIPs. */
|
|
25
|
+
shadowOffsetX?: KeyframeValue;
|
|
26
|
+
shadowOffsetY?: KeyframeValue;
|
|
27
|
+
/** Android: base elevation in DIPs. */
|
|
28
|
+
elevation?: KeyframeValue;
|
|
29
|
+
/** Android: dynamic Z offset in DIPs. Native state changes may replace it. */
|
|
30
|
+
translationZ?: KeyframeValue;
|
|
6
31
|
opacity?: KeyframeValue;
|
|
7
32
|
/** Same as `translateX`, in DIPs. */
|
|
8
33
|
x?: KeyframeValue;
|
|
@@ -17,12 +42,32 @@ export interface Keyframes {
|
|
|
17
42
|
rotateX?: KeyframeValue;
|
|
18
43
|
rotateY?: KeyframeValue;
|
|
19
44
|
}
|
|
45
|
+
/** Properties that can be timed or stopped independently. A path owns x/y and optionally rotate. */
|
|
46
|
+
export type KeyframeProperty = Exclude<keyof Keyframes, 'path' | 'orient'>;
|
|
47
|
+
/** One value per property, as `set()` applies them. */
|
|
48
|
+
export type Values = {
|
|
49
|
+
[K in KeyframeProperty]?: Exclude<Keyframes[K], readonly unknown[]>;
|
|
50
|
+
};
|
|
20
51
|
/** A view, or anything that holds one: a NativeScript-Vue element, an Angular `ElementRef`. */
|
|
21
52
|
export type Target = View | {
|
|
22
53
|
readonly nativeView: View;
|
|
23
54
|
} | {
|
|
24
55
|
readonly nativeElement: View;
|
|
25
56
|
};
|
|
57
|
+
/** Translation velocities in DIPs per second. Omitted axes keep their current motion. */
|
|
58
|
+
export interface DecayVelocity {
|
|
59
|
+
x?: number;
|
|
60
|
+
y?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface DecayOptions {
|
|
63
|
+
/** Velocity multiplier per millisecond, between 0 and 1 exclusively. Defaults to 0.998. */
|
|
64
|
+
friction?: number;
|
|
65
|
+
/** Spring to the closest stop to the projected landing, shared or set per axis. */
|
|
66
|
+
snap?: readonly number[] | {
|
|
67
|
+
x?: readonly number[];
|
|
68
|
+
y?: readonly number[];
|
|
69
|
+
};
|
|
70
|
+
}
|
|
26
71
|
export interface Stagger {
|
|
27
72
|
/** Milliseconds between one target and the next. */
|
|
28
73
|
each: number;
|
|
@@ -30,11 +75,13 @@ export interface Stagger {
|
|
|
30
75
|
from?: 'first' | 'last' | 'center' | number;
|
|
31
76
|
}
|
|
32
77
|
export type AnimateOptions = Transition & {
|
|
33
|
-
[K in
|
|
78
|
+
[K in KeyframeProperty | 'path']?: Transition | SpringName;
|
|
34
79
|
} & {
|
|
35
80
|
/** Offset translations/rotations and multiply scale/opacity by their values at the start. */
|
|
36
81
|
relative?: boolean;
|
|
37
82
|
/** With several targets, delays each one by this much more than the previous. */
|
|
38
83
|
stagger?: number | Stagger;
|
|
84
|
+
/** iOS impact feedback at arrival, or at explicit points in a finite animation. */
|
|
85
|
+
haptic?: Haptic;
|
|
39
86
|
};
|
|
40
87
|
//# sourceMappingURL=types.d.ts.map
|