@rafaelaugusto/jolt 0.1.0-beta.11 → 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 +38 -7
- 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/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.map +1 -1
- package/dist/gradient.js +10 -4
- package/dist/gradient.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- 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 +10 -5
- package/dist/motion-states.d.ts.map +1 -1
- package/dist/motion-states.js +55 -22
- 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 +15 -4
- package/dist/transition.d.ts.map +1 -1
- package/dist/transition.js +46 -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/KeyboardFrame.java +53 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFrameFollower.java +57 -0
- package/src/android-plugin.d.ts +27 -0
- package/src/animate.ts +99 -16
- package/src/drag.ts +67 -21
- package/src/easing.ts +14 -0
- package/src/engine.ts +158 -53
- package/src/gradient.ts +10 -4
- package/src/index.ts +18 -1
- package/src/keyboard.ts +83 -18
- package/src/mixer.ts +264 -0
- package/src/motion-scope.ts +12 -4
- package/src/motion-states.ts +79 -29
- package/src/motion-value.ts +563 -0
- package/src/path.ts +2 -1
- package/src/track.ts +37 -12
- package/src/transition.ts +69 -10
- package/src/types.ts +5 -0
- package/src/vue/index.ts +98 -1
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
import { Color, ScrollView, } from '@nativescript/core';
|
|
2
|
+
import { toViews } from './animate.js';
|
|
3
|
+
import { colorMixer, isColorProperty, parseColor, validateColorTarget, } from './color.js';
|
|
4
|
+
import { reducedMotion } from './config.js';
|
|
5
|
+
import { clampDecoration, isDecorationProperty, validateDecorationTarget, } from './decoration.js';
|
|
6
|
+
import { getDriver } from './driver/index.js';
|
|
7
|
+
import { setArrival, setBase, stopBase, ViewAnimation, } from './engine.js';
|
|
8
|
+
import { linear } from './easing.js';
|
|
9
|
+
import { isProperty } from './properties.js';
|
|
10
|
+
import { createTrack, instantTrack } from './track.js';
|
|
11
|
+
import { resolveTransition, springs, } from './transition.js';
|
|
12
|
+
const bound = new WeakMap();
|
|
13
|
+
class Derived {
|
|
14
|
+
source;
|
|
15
|
+
read;
|
|
16
|
+
color;
|
|
17
|
+
constructor(source, read, color) {
|
|
18
|
+
this.source = source;
|
|
19
|
+
this.read = read;
|
|
20
|
+
this.color = color;
|
|
21
|
+
}
|
|
22
|
+
get root() {
|
|
23
|
+
return this.source ?? this;
|
|
24
|
+
}
|
|
25
|
+
get() {
|
|
26
|
+
const value = this.read(this.root.raw());
|
|
27
|
+
return this.color ? new Color(value) : value;
|
|
28
|
+
}
|
|
29
|
+
to(input, output, options) {
|
|
30
|
+
if (this.color)
|
|
31
|
+
throw new TypeError('A color cannot be mapped again.');
|
|
32
|
+
const map = mapping(input, output, options);
|
|
33
|
+
const read = this.read;
|
|
34
|
+
return new Derived(this.root, (value) => map.read(read(value)), map.color);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
class Root extends Derived {
|
|
38
|
+
bindings = new Set();
|
|
39
|
+
current;
|
|
40
|
+
run;
|
|
41
|
+
constructor(initial) {
|
|
42
|
+
super(undefined, (value) => value, false);
|
|
43
|
+
if (!Number.isFinite(initial))
|
|
44
|
+
throw new RangeError(`A motion value starts from a finite number, got ${initial}.`);
|
|
45
|
+
this.current = initial;
|
|
46
|
+
}
|
|
47
|
+
raw() {
|
|
48
|
+
const run = this.run;
|
|
49
|
+
if (!run)
|
|
50
|
+
return this.current;
|
|
51
|
+
return run.base + run.span * run.track.valueAt(getDriver().now() - run.startedAt);
|
|
52
|
+
}
|
|
53
|
+
velocity() {
|
|
54
|
+
const run = this.run;
|
|
55
|
+
if (!run)
|
|
56
|
+
return 0;
|
|
57
|
+
return run.span * run.track.velocityAt(getDriver().now() - run.startedAt);
|
|
58
|
+
}
|
|
59
|
+
animate(target, transition = {}) {
|
|
60
|
+
const from = this.raw();
|
|
61
|
+
const frames = (typeof target === 'number' ? [null, target] : [...target]).map((frame) => (frame === null ? from : frame));
|
|
62
|
+
if (frames.length < 2)
|
|
63
|
+
frames.unshift(from);
|
|
64
|
+
if (frames.some((frame) => typeof frame !== 'number' || !Number.isFinite(frame)))
|
|
65
|
+
throw new RangeError(`Invalid motion value keyframes: ${JSON.stringify(target)}.`);
|
|
66
|
+
const options = typeof transition === 'string' ? springOf(transition) : transition;
|
|
67
|
+
const resolved = resolveTransition(options, 'x', frames.length);
|
|
68
|
+
const base = Math.min(...frames);
|
|
69
|
+
const span = Math.max(...frames) - base;
|
|
70
|
+
const velocity = this.velocity();
|
|
71
|
+
this.halt();
|
|
72
|
+
if (span === 0)
|
|
73
|
+
return this.jump(frames.at(-1));
|
|
74
|
+
// Sampled in the value's own range so springs settle relative to the distance.
|
|
75
|
+
const track = createTrack('opacity', frames.map((frame) => (frame - base) / span), resolved, velocity / span);
|
|
76
|
+
return this.start(track, base, span);
|
|
77
|
+
}
|
|
78
|
+
/** Plays a track sampled in the value's own units, such as a drag release. */
|
|
79
|
+
play(track) {
|
|
80
|
+
this.halt();
|
|
81
|
+
return track.end === 0 ? this.jump(track.to) : this.start(track, 0, 1);
|
|
82
|
+
}
|
|
83
|
+
jump(value) {
|
|
84
|
+
const { animation, settle } = this.handle();
|
|
85
|
+
this.current = value;
|
|
86
|
+
for (const binding of this.bindings)
|
|
87
|
+
binding.sync();
|
|
88
|
+
settle(true);
|
|
89
|
+
setArrival(animation, Promise.resolve());
|
|
90
|
+
return animation;
|
|
91
|
+
}
|
|
92
|
+
handle() {
|
|
93
|
+
let settle;
|
|
94
|
+
const finished = new Promise((resolve) => (settle = resolve));
|
|
95
|
+
const animation = {
|
|
96
|
+
finished,
|
|
97
|
+
stop: () => {
|
|
98
|
+
if (this.run?.animation === animation)
|
|
99
|
+
this.stop();
|
|
100
|
+
},
|
|
101
|
+
then: (onfulfilled, onrejected) => finished.then(onfulfilled, onrejected),
|
|
102
|
+
};
|
|
103
|
+
return { animation, settle };
|
|
104
|
+
}
|
|
105
|
+
start(track, base, span) {
|
|
106
|
+
const { animation, settle } = this.handle();
|
|
107
|
+
let arrive = () => { };
|
|
108
|
+
let run;
|
|
109
|
+
const driver = getDriver();
|
|
110
|
+
setArrival(animation, new Promise((resolve) => (arrive = resolve)));
|
|
111
|
+
const timers = [
|
|
112
|
+
Number.isFinite(track.end)
|
|
113
|
+
? driver.after(track.end, () => {
|
|
114
|
+
if (this.run !== run)
|
|
115
|
+
return;
|
|
116
|
+
this.current = base + span * track.to;
|
|
117
|
+
this.run = undefined;
|
|
118
|
+
arrive();
|
|
119
|
+
settle(true);
|
|
120
|
+
})
|
|
121
|
+
: undefined,
|
|
122
|
+
Number.isFinite(track.arrival)
|
|
123
|
+
? driver.after(track.arrival, () => arrive())
|
|
124
|
+
: undefined,
|
|
125
|
+
];
|
|
126
|
+
this.run = run = {
|
|
127
|
+
track,
|
|
128
|
+
base,
|
|
129
|
+
span,
|
|
130
|
+
animation,
|
|
131
|
+
startedAt: driver.now(),
|
|
132
|
+
settle: (completed) => {
|
|
133
|
+
arrive();
|
|
134
|
+
settle(completed);
|
|
135
|
+
},
|
|
136
|
+
cancel: () => timers.forEach((cancel) => cancel?.()),
|
|
137
|
+
};
|
|
138
|
+
for (const binding of this.bindings)
|
|
139
|
+
binding.sync();
|
|
140
|
+
return animation;
|
|
141
|
+
}
|
|
142
|
+
set(value) {
|
|
143
|
+
if (!Number.isFinite(value))
|
|
144
|
+
throw new RangeError(`A motion value takes a finite number, got ${value}.`);
|
|
145
|
+
this.halt();
|
|
146
|
+
this.current = value;
|
|
147
|
+
for (const binding of this.bindings)
|
|
148
|
+
binding.sync();
|
|
149
|
+
}
|
|
150
|
+
stop() {
|
|
151
|
+
if (!this.run)
|
|
152
|
+
return;
|
|
153
|
+
const value = this.raw();
|
|
154
|
+
this.halt();
|
|
155
|
+
this.current = value;
|
|
156
|
+
for (const binding of this.bindings)
|
|
157
|
+
binding.sync();
|
|
158
|
+
}
|
|
159
|
+
/** The plan that plays this value's run, mapped, on one bound property. */
|
|
160
|
+
plan(binding) {
|
|
161
|
+
const run = this.run;
|
|
162
|
+
const { property, read } = binding;
|
|
163
|
+
const write = (value) => isDecorationProperty(property)
|
|
164
|
+
? clampDecoration(property, read(value))
|
|
165
|
+
: read(value);
|
|
166
|
+
if (!run) {
|
|
167
|
+
const value = write(this.current);
|
|
168
|
+
return {
|
|
169
|
+
property,
|
|
170
|
+
keyframes: [],
|
|
171
|
+
transition: still,
|
|
172
|
+
track: () => instantTrack(property, value),
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
const { track, base, span } = run;
|
|
176
|
+
const at = (progress) => write(base + span * progress);
|
|
177
|
+
const transition = {
|
|
178
|
+
curve: {
|
|
179
|
+
type: 'tween',
|
|
180
|
+
duration: track.duration,
|
|
181
|
+
ease: [linear],
|
|
182
|
+
times: undefined,
|
|
183
|
+
},
|
|
184
|
+
delay: track.delay,
|
|
185
|
+
repeat: track.repeat,
|
|
186
|
+
reverse: track.reverse,
|
|
187
|
+
};
|
|
188
|
+
const mapped = () => {
|
|
189
|
+
if (reducedMotion() && property !== 'opacity' && !isColorProperty(property))
|
|
190
|
+
return instantTrack(property, at(track.to));
|
|
191
|
+
return {
|
|
192
|
+
property,
|
|
193
|
+
delay: track.delay,
|
|
194
|
+
duration: track.duration,
|
|
195
|
+
repeat: track.repeat,
|
|
196
|
+
reverse: track.reverse,
|
|
197
|
+
times: track.times,
|
|
198
|
+
values: track.values.map(at),
|
|
199
|
+
to: at(track.to),
|
|
200
|
+
end: track.end,
|
|
201
|
+
arrival: track.arrival,
|
|
202
|
+
valueAt: (elapsed) => at(track.valueAt(elapsed)),
|
|
203
|
+
velocityAt: isColorProperty(property)
|
|
204
|
+
? () => 0
|
|
205
|
+
: (elapsed) => (at(track.valueAt(elapsed + 0.5)) - at(track.valueAt(elapsed - 0.5))) *
|
|
206
|
+
1000,
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
return { property, keyframes: [], transition, track: mapped };
|
|
210
|
+
}
|
|
211
|
+
elapsed() {
|
|
212
|
+
return this.run ? getDriver().now() - this.run.startedAt : 0;
|
|
213
|
+
}
|
|
214
|
+
get running() {
|
|
215
|
+
return this.run !== undefined;
|
|
216
|
+
}
|
|
217
|
+
halt() {
|
|
218
|
+
const run = this.run;
|
|
219
|
+
if (!run)
|
|
220
|
+
return;
|
|
221
|
+
this.run = undefined;
|
|
222
|
+
run.cancel();
|
|
223
|
+
run.settle(false);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
const still = {
|
|
227
|
+
curve: { type: 'tween', duration: 0, ease: [linear], times: undefined },
|
|
228
|
+
delay: 0,
|
|
229
|
+
repeat: 0,
|
|
230
|
+
reverse: false,
|
|
231
|
+
};
|
|
232
|
+
/**
|
|
233
|
+
* A number that animates natively and drives the view properties bound to it.
|
|
234
|
+
*
|
|
235
|
+
* ```ts
|
|
236
|
+
* const progress = motionValue(0)
|
|
237
|
+
* bind(sheet, { y: progress.to([0, 1], [600, 0]) })
|
|
238
|
+
* animate(progress, 1, 'snappy')
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
export function motionValue(initial = 0) {
|
|
242
|
+
return new Root(initial);
|
|
243
|
+
}
|
|
244
|
+
export function isMotionValue(target) {
|
|
245
|
+
return target instanceof Root;
|
|
246
|
+
}
|
|
247
|
+
export function asRoot(value) {
|
|
248
|
+
return value;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Lets motion values drive a view's properties. The view takes their current values
|
|
252
|
+
* at once and follows every change on the same native clock. Returns a cleanup function.
|
|
253
|
+
*
|
|
254
|
+
* ```ts
|
|
255
|
+
* const release = bind(backdrop, { opacity: progress.to([0, 1], [0, 0.4]) })
|
|
256
|
+
* ```
|
|
257
|
+
*/
|
|
258
|
+
export function bind(target, bindings) {
|
|
259
|
+
if (!bindings || typeof bindings !== 'object' || Array.isArray(bindings))
|
|
260
|
+
throw new TypeError('bind() takes an object of motion values.');
|
|
261
|
+
const views = toViews(target);
|
|
262
|
+
const entries = [];
|
|
263
|
+
for (const [key, source] of Object.entries(bindings)) {
|
|
264
|
+
if (source === undefined)
|
|
265
|
+
continue;
|
|
266
|
+
if (!(source instanceof Derived))
|
|
267
|
+
throw new TypeError(`"${key}" needs a motion value, got ${String(source)}.`);
|
|
268
|
+
const properties = key === 'scale' ? ['scaleX', 'scaleY'] : isProperty(key) ? [key] : [];
|
|
269
|
+
if (!properties.length)
|
|
270
|
+
throw new Error(`Can't bind "${key}".`);
|
|
271
|
+
for (const property of properties) {
|
|
272
|
+
if (isColorProperty(property) !== source.color)
|
|
273
|
+
throw new TypeError(source.color
|
|
274
|
+
? `"${key}" takes numbers; map the value to numbers.`
|
|
275
|
+
: `"${key}" is a color; map the value to colors with to(input, colors).`);
|
|
276
|
+
entries.push([property, source]);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
for (const view of views)
|
|
280
|
+
for (const [property] of entries)
|
|
281
|
+
if (isColorProperty(property))
|
|
282
|
+
validateColorTarget(view, property);
|
|
283
|
+
else if (isDecorationProperty(property))
|
|
284
|
+
validateDecorationTarget(view, property);
|
|
285
|
+
const made = views.flatMap((view) => entries.map(([property, source]) => attach(view, property, source)));
|
|
286
|
+
return () => made.forEach((release) => release());
|
|
287
|
+
}
|
|
288
|
+
function attach(view, property, source) {
|
|
289
|
+
const existing = bound.get(view)?.get(property);
|
|
290
|
+
if (existing)
|
|
291
|
+
release(existing);
|
|
292
|
+
const root = source.root;
|
|
293
|
+
const binding = {
|
|
294
|
+
view,
|
|
295
|
+
property,
|
|
296
|
+
root,
|
|
297
|
+
read: source.read,
|
|
298
|
+
sync() {
|
|
299
|
+
if (!view.isLoaded || !view.nativeViewProtected)
|
|
300
|
+
return;
|
|
301
|
+
if (!root.running) {
|
|
302
|
+
// A value at rest writes straight through, so scroll offsets cost one write per event.
|
|
303
|
+
binding.animation?.stop();
|
|
304
|
+
binding.animation = undefined;
|
|
305
|
+
stopBase(view, [property]);
|
|
306
|
+
const value = source.read(root.raw());
|
|
307
|
+
setBase(view, property, isDecorationProperty(property) ? clampDecoration(property, value) : value);
|
|
308
|
+
if (isColorProperty(property) || isDecorationProperty(property))
|
|
309
|
+
getDriver().sync?.(view);
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
const elapsed = root.elapsed();
|
|
313
|
+
const animation = new ViewAnimation(view, [root.plan(binding)]);
|
|
314
|
+
if (elapsed > 1 && animation.duration > 0)
|
|
315
|
+
animation.seekTime(elapsed);
|
|
316
|
+
binding.animation = animation;
|
|
317
|
+
},
|
|
318
|
+
};
|
|
319
|
+
let properties = bound.get(view);
|
|
320
|
+
if (!properties)
|
|
321
|
+
bound.set(view, (properties = new Map()));
|
|
322
|
+
properties.set(property, binding);
|
|
323
|
+
root.bindings.add(binding);
|
|
324
|
+
view.on('loaded', binding.sync);
|
|
325
|
+
binding.sync();
|
|
326
|
+
return () => {
|
|
327
|
+
if (root.bindings.has(binding)) {
|
|
328
|
+
release(binding);
|
|
329
|
+
binding.animation?.stop();
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
function release(binding) {
|
|
334
|
+
binding.root.bindings.delete(binding);
|
|
335
|
+
binding.view.off('loaded', binding.sync);
|
|
336
|
+
const properties = bound.get(binding.view);
|
|
337
|
+
if (properties?.get(binding.property) === binding)
|
|
338
|
+
properties.delete(binding.property);
|
|
339
|
+
}
|
|
340
|
+
/** A regular animation on a bound property takes it over; the value keeps its other bindings. */
|
|
341
|
+
export function detachBindings(view, properties) {
|
|
342
|
+
const map = bound.get(view);
|
|
343
|
+
if (!map)
|
|
344
|
+
return;
|
|
345
|
+
for (const property of properties) {
|
|
346
|
+
const binding = map.get(property);
|
|
347
|
+
if (binding)
|
|
348
|
+
release(binding);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
function mapping(input, output, options = {}) {
|
|
352
|
+
if (!Array.isArray(input) || !Array.isArray(output) || input.length < 2)
|
|
353
|
+
throw new RangeError('to() needs at least two input and output values.');
|
|
354
|
+
if (input.length !== output.length)
|
|
355
|
+
throw new RangeError(`to() has ${input.length} inputs but ${output.length} outputs; give one output per input.`);
|
|
356
|
+
if (input.some((value, i) => !Number.isFinite(value) || value < (input[i - 1] ?? -Infinity)))
|
|
357
|
+
throw new RangeError('to() inputs must be finite and never decrease.');
|
|
358
|
+
const color = typeof output[0] !== 'number';
|
|
359
|
+
const numbers = color ? output.map((value) => parseColor(value)) : output;
|
|
360
|
+
if (!color &&
|
|
361
|
+
numbers.some((value) => typeof value !== 'number' || !Number.isFinite(value)))
|
|
362
|
+
throw new RangeError('to() outputs must all be finite numbers, or all colors.');
|
|
363
|
+
const mixers = color
|
|
364
|
+
? numbers.slice(1).map((value, i) => colorMixer(numbers[i], value))
|
|
365
|
+
: undefined;
|
|
366
|
+
const clamp = color || options.clamp !== false;
|
|
367
|
+
const last = input.length - 1;
|
|
368
|
+
const read = (value) => {
|
|
369
|
+
if (clamp && value <= input[0])
|
|
370
|
+
return numbers[0];
|
|
371
|
+
if (clamp && value >= input[last])
|
|
372
|
+
return numbers[last];
|
|
373
|
+
let i = 0;
|
|
374
|
+
while (i < last - 1 && value > input[i + 1])
|
|
375
|
+
i++;
|
|
376
|
+
const span = input[i + 1] - input[i];
|
|
377
|
+
const t = span > 0 ? (value - input[i]) / span : value < input[i] ? 0 : 1;
|
|
378
|
+
if (mixers)
|
|
379
|
+
return mixers[i](Math.min(1, Math.max(0, t)));
|
|
380
|
+
return numbers[i] + (numbers[i + 1] - numbers[i]) * t;
|
|
381
|
+
};
|
|
382
|
+
return { read, color };
|
|
383
|
+
}
|
|
384
|
+
function springOf(name) {
|
|
385
|
+
if (!Object.hasOwn(springs, name))
|
|
386
|
+
throw new Error(`Unknown spring "${name}".`);
|
|
387
|
+
return springs[name];
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* The scroll offset of a ScrollView, in DIPs, as a value that bindings follow.
|
|
391
|
+
*
|
|
392
|
+
* ```ts
|
|
393
|
+
* const offset = scrollValue(scroll)
|
|
394
|
+
* bind(header, { y: offset.to([0, 120], [0, -60]), opacity: offset.to([0, 80], [1, 0]) })
|
|
395
|
+
* ```
|
|
396
|
+
*/
|
|
397
|
+
export function scrollValue(scrollView, options = {}) {
|
|
398
|
+
const axis = options.axis ?? 'y';
|
|
399
|
+
if (axis !== 'x' && axis !== 'y')
|
|
400
|
+
throw new TypeError('Scroll axis must be "x" or "y".');
|
|
401
|
+
const root = new Root(0);
|
|
402
|
+
let source;
|
|
403
|
+
const read = () => {
|
|
404
|
+
if (!source)
|
|
405
|
+
return;
|
|
406
|
+
const offset = axis === 'x' ? source.horizontalOffset : source.verticalOffset;
|
|
407
|
+
if (Number.isFinite(offset) && offset !== root.raw())
|
|
408
|
+
root.set(offset);
|
|
409
|
+
};
|
|
410
|
+
const onScroll = (event) => {
|
|
411
|
+
const { scrollX, scrollY } = event;
|
|
412
|
+
const offset = axis === 'x' ? scrollX : scrollY;
|
|
413
|
+
if (Number.isFinite(offset) && offset !== root.raw())
|
|
414
|
+
root.set(offset);
|
|
415
|
+
};
|
|
416
|
+
const detach = () => {
|
|
417
|
+
source?.off(ScrollView.scrollEvent, onScroll);
|
|
418
|
+
source?.off('loaded', read);
|
|
419
|
+
source = undefined;
|
|
420
|
+
};
|
|
421
|
+
const ref = (target) => {
|
|
422
|
+
const next = target === null ? undefined : toViews(target)[0];
|
|
423
|
+
if (next === source)
|
|
424
|
+
return;
|
|
425
|
+
if (next !== undefined && !(next instanceof ScrollView))
|
|
426
|
+
throw new TypeError('scrollValue() follows a NativeScript ScrollView.');
|
|
427
|
+
detach();
|
|
428
|
+
source = next;
|
|
429
|
+
source?.on(ScrollView.scrollEvent, onScroll);
|
|
430
|
+
source?.on('loaded', read);
|
|
431
|
+
read();
|
|
432
|
+
};
|
|
433
|
+
if (scrollView)
|
|
434
|
+
ref(scrollView);
|
|
435
|
+
return Object.assign(root, { ref, dispose: detach });
|
|
436
|
+
}
|
|
437
|
+
//# sourceMappingURL=motion-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-value.js","sourceRoot":"","sources":["../src/motion-value.ts"],"names":[],"mappings":"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"}
|
package/dist/path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7D,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAA;AAC/C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAA;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IAClD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAA;CACpE;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC,GAChE,YAAY,GAAG,SAAS,CAoE1B"}
|
package/dist/path.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parsePath } from './svg-path.js';
|
|
2
2
|
import { reducedMotion, timeScale } from './config.js';
|
|
3
3
|
import { createTrack, instantTrack } from './track.js';
|
|
4
|
-
import { mergeTransitions, resolveTransition, } from './transition.js';
|
|
4
|
+
import { fitTransition, mergeTransitions, resolveTransition, } from './transition.js';
|
|
5
5
|
export function preparePath(keyframes, base, overrides) {
|
|
6
6
|
if (keyframes.orient !== undefined && typeof keyframes.orient !== 'boolean')
|
|
7
7
|
throw new TypeError('Path orient must be a boolean.');
|
|
@@ -18,7 +18,7 @@ export function preparePath(keyframes, base, overrides) {
|
|
|
18
18
|
throw new TypeError('Use the path transition to time its coordinates together.');
|
|
19
19
|
const geometry = parsePath(keyframes.path);
|
|
20
20
|
const orient = keyframes.orient === true;
|
|
21
|
-
const transition = resolveTransition(overrides.path ? mergeTransitions(base, overrides.path) : base, 'opacity', 2);
|
|
21
|
+
const transition = resolveTransition(fitTransition(overrides.path ? mergeTransitions(base, overrides.path) : base, 2), 'opacity', 2);
|
|
22
22
|
if (!Number.isFinite(transition.curve.type === 'tween' ? transition.curve.duration : 0) ||
|
|
23
23
|
!Number.isFinite(transition.delay))
|
|
24
24
|
throw new RangeError('Path duration and delay must be finite.');
|
package/dist/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAc,MAAM,YAAY,CAAA;AAClE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAGlB,MAAM,iBAAiB,CAAA;AAWxB,MAAM,UAAU,WAAW,CACzB,SAAoB,EACpB,IAAgB,EAChB,SAAiE;IAEjE,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,SAAS;QACzE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;IACvD,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAA;QAClF,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,SAAS,CAAC,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,CAAC,KAAK,SAAS;QACxD,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAA;IAC1E,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;QACpD,MAAM,IAAI,SAAS,CAAC,+DAA+D,CAAC,CAAA;IACtF,IAAI,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;QACtE,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAA;IAClF,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,IAAI,CAAA;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAClC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
|
package/dist/track.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1D,OAAO,KAAK,EAA2B,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAIlF;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,mGAAmG;IACnG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;IAChC,wBAAwB;IACxB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CACpC;AAcD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,UAAU,EAAE,kBAAkB,EAC9B,QAAQ,EAAE,MAAM,GACf,KAAK,CA2EP;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAgBrE"}
|
package/dist/track.js
CHANGED
|
@@ -24,7 +24,7 @@ export function createTrack(property, keyframes, transition, velocity) {
|
|
|
24
24
|
: curve.type === 'decay'
|
|
25
25
|
? decay(property, keyframes[0], curve, slowdown)
|
|
26
26
|
: tween(keyframes, curve, slowdown), slowdown);
|
|
27
|
-
const { motion, repeat, reverse } = pauseBetweenRepeats(played, transition.repeat, transition.reverse,
|
|
27
|
+
const { motion, repeat, reverse } = pauseBetweenRepeats(played, transition.repeat, transition.reverse, transition.repeatDelay ?? 0, slowdown, transition.seed);
|
|
28
28
|
const { duration } = motion;
|
|
29
29
|
const first = motion.values[0];
|
|
30
30
|
const last = motion.values.at(-1);
|
|
@@ -138,28 +138,37 @@ function colorTrack(property, colors, transition) {
|
|
|
138
138
|
velocityAt: () => 0,
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
|
+
/** An endless loop with drawn pauses plays this many of them, then starts over. */
|
|
142
|
+
const DRAWN_CYCLES = 16;
|
|
141
143
|
/**
|
|
142
|
-
* Holds the end value for `
|
|
144
|
+
* Holds the end value for `delay` ms before each repeat, inside the keyframes, so both
|
|
143
145
|
* 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
|
|
146
|
+
* wait after the last; endless ones loop a cycle that waits at each turn,
|
|
147
|
+
* or DRAWN_CYCLES cycles when the waits are drawn from a range.
|
|
145
148
|
*/
|
|
146
|
-
function pauseBetweenRepeats(motion, repeat, reverse,
|
|
147
|
-
|
|
149
|
+
function pauseBetweenRepeats(motion, repeat, reverse, delay, slowdown, seed = Math.random()) {
|
|
150
|
+
const [shortest, longest] = typeof delay === 'number' ? [delay, delay] : delay;
|
|
151
|
+
if (longest <= 0 || repeat <= 0 || motion.duration === 0)
|
|
148
152
|
return { motion, repeat, reverse };
|
|
153
|
+
const draw = random(seed);
|
|
154
|
+
const pause = () => (shortest + draw() * (longest - shortest)) * slowdown;
|
|
149
155
|
const play = (backward) => ({
|
|
150
156
|
kind: backward ? 'backward' : 'forward',
|
|
151
157
|
duration: motion.duration,
|
|
152
158
|
});
|
|
153
|
-
const hold = { kind: 'hold', duration: pause };
|
|
159
|
+
const hold = () => ({ kind: 'hold', duration: pause() });
|
|
154
160
|
const segments = [];
|
|
155
161
|
if (Number.isFinite(repeat))
|
|
156
162
|
for (let i = 0; i <= repeat; i++) {
|
|
157
163
|
if (i > 0)
|
|
158
|
-
segments.push(hold);
|
|
164
|
+
segments.push(hold());
|
|
159
165
|
segments.push(play(reverse && i % 2 === 1));
|
|
160
166
|
}
|
|
161
|
-
else
|
|
162
|
-
|
|
167
|
+
else {
|
|
168
|
+
const cycles = shortest === longest ? (reverse ? 2 : 1) : DRAWN_CYCLES;
|
|
169
|
+
for (let i = 0; i < cycles; i++)
|
|
170
|
+
segments.push(play(reverse && i % 2 === 1), hold());
|
|
171
|
+
}
|
|
163
172
|
const total = segments.reduce((sum, segment) => sum + segment.duration, 0);
|
|
164
173
|
const starts = segments.map((_, i) => segments.slice(0, i).reduce((sum, segment) => sum + segment.duration, 0));
|
|
165
174
|
const last = motion.values.length - 1;
|
|
@@ -171,8 +180,6 @@ function pauseBetweenRepeats(motion, repeat, reverse, pause) {
|
|
|
171
180
|
return motion.values[0];
|
|
172
181
|
return endOf(i - 1);
|
|
173
182
|
};
|
|
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
183
|
const times = [];
|
|
177
184
|
const values = [];
|
|
178
185
|
segments.forEach((segment, i) => {
|
|
@@ -182,7 +189,9 @@ function pauseBetweenRepeats(motion, repeat, reverse, pause) {
|
|
|
182
189
|
const next = segments[i + 1];
|
|
183
190
|
const jumps = next !== undefined &&
|
|
184
191
|
(next.kind === 'forward' ? motion.values[0] : motion.values[last]) !== held;
|
|
185
|
-
|
|
192
|
+
// A loop jumps back to its start at the end of the hold, not across it.
|
|
193
|
+
const jump = jumps ? Math.min(1, segment.duration / 10) : 0;
|
|
194
|
+
times.push((start + segment.duration - jump) / total);
|
|
186
195
|
values.push(held);
|
|
187
196
|
return;
|
|
188
197
|
}
|
|
@@ -228,6 +237,16 @@ function pauseBetweenRepeats(motion, repeat, reverse, pause) {
|
|
|
228
237
|
reverse: false,
|
|
229
238
|
};
|
|
230
239
|
}
|
|
240
|
+
/** Mulberry32: the same seed draws the same pauses for every track of one animation. */
|
|
241
|
+
function random(seed) {
|
|
242
|
+
let state = Math.floor(seed * 2 ** 32) >>> 0;
|
|
243
|
+
return () => {
|
|
244
|
+
state = (state + 0x6d2b79f5) >>> 0;
|
|
245
|
+
let t = Math.imul(state ^ (state >>> 15), state | 1);
|
|
246
|
+
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
|
247
|
+
return ((t ^ (t >>> 14)) >>> 0) / 2 ** 32;
|
|
248
|
+
};
|
|
249
|
+
}
|
|
231
250
|
/** Plays the same trajectory over a longer or shorter time. */
|
|
232
251
|
function slow(motion, factor) {
|
|
233
252
|
if (factor === 1)
|