@rafaelaugusto/jolt 0.0.0-stage → 0.1.0-beta.0

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.
Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +256 -2
  3. package/dist/animate.d.ts +26 -0
  4. package/dist/animate.d.ts.map +1 -0
  5. package/dist/animate.js +153 -0
  6. package/dist/animate.js.map +1 -0
  7. package/dist/driver/android.d.ts +3 -0
  8. package/dist/driver/android.d.ts.map +1 -0
  9. package/dist/driver/android.js +73 -0
  10. package/dist/driver/android.js.map +1 -0
  11. package/dist/driver/index.d.ts +18 -0
  12. package/dist/driver/index.d.ts.map +1 -0
  13. package/dist/driver/index.js +15 -0
  14. package/dist/driver/index.js.map +1 -0
  15. package/dist/driver/ios.d.ts +3 -0
  16. package/dist/driver/ios.d.ts.map +1 -0
  17. package/dist/driver/ios.js +68 -0
  18. package/dist/driver/ios.js.map +1 -0
  19. package/dist/easing.d.ts +8 -0
  20. package/dist/easing.d.ts.map +1 -0
  21. package/dist/easing.js +71 -0
  22. package/dist/easing.js.map +1 -0
  23. package/dist/engine.d.ts +47 -0
  24. package/dist/engine.d.ts.map +1 -0
  25. package/dist/engine.js +168 -0
  26. package/dist/engine.js.map +1 -0
  27. package/dist/index.d.ts +13 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +7 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/presets.d.ts +295 -0
  32. package/dist/presets.d.ts.map +1 -0
  33. package/dist/presets.js +123 -0
  34. package/dist/presets.js.map +1 -0
  35. package/dist/press.d.ts +13 -0
  36. package/dist/press.d.ts.map +1 -0
  37. package/dist/press.js +32 -0
  38. package/dist/press.js.map +1 -0
  39. package/dist/properties.d.ts +8 -0
  40. package/dist/properties.d.ts.map +1 -0
  41. package/dist/properties.js +42 -0
  42. package/dist/properties.js.map +1 -0
  43. package/dist/sequence.d.ts +25 -0
  44. package/dist/sequence.d.ts.map +1 -0
  45. package/dist/sequence.js +68 -0
  46. package/dist/sequence.js.map +1 -0
  47. package/dist/spring.d.ts +22 -0
  48. package/dist/spring.d.ts.map +1 -0
  49. package/dist/spring.js +54 -0
  50. package/dist/spring.js.map +1 -0
  51. package/dist/track.d.ts +28 -0
  52. package/dist/track.d.ts.map +1 -0
  53. package/dist/track.js +103 -0
  54. package/dist/track.js.map +1 -0
  55. package/dist/transition.d.ts +58 -0
  56. package/dist/transition.d.ts.map +1 -0
  57. package/dist/transition.js +82 -0
  58. package/dist/transition.js.map +1 -0
  59. package/dist/types.d.ts +38 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +2 -0
  62. package/dist/types.js.map +1 -0
  63. package/package.json +63 -4
  64. package/src/animate.ts +219 -0
  65. package/src/driver/android.ts +101 -0
  66. package/src/driver/index.ts +32 -0
  67. package/src/driver/ios.ts +88 -0
  68. package/src/easing.ts +100 -0
  69. package/src/engine.ts +208 -0
  70. package/src/index.ts +12 -0
  71. package/src/presets.ts +134 -0
  72. package/src/press.ts +43 -0
  73. package/src/properties.ts +51 -0
  74. package/src/sequence.ts +85 -0
  75. package/src/spring.ts +95 -0
  76. package/src/track.ts +163 -0
  77. package/src/transition.ts +160 -0
  78. package/src/types.ts +39 -0
@@ -0,0 +1,295 @@
1
+ import type { AnimateOptions, Keyframes } from './types.js';
2
+ export interface Preset {
3
+ keyframes: Keyframes;
4
+ transition: AnimateOptions;
5
+ }
6
+ export declare const presets: {
7
+ fadeIn: {
8
+ keyframes: {
9
+ opacity: number[];
10
+ };
11
+ transition: {
12
+ readonly duration: 300;
13
+ readonly ease: 'easeOut';
14
+ };
15
+ };
16
+ fadeInUp: {
17
+ keyframes: {
18
+ opacity: number[];
19
+ y: number[];
20
+ };
21
+ transition: {
22
+ type: 'spring';
23
+ duration: 500;
24
+ bounce: 0;
25
+ opacity: {
26
+ readonly duration: 300;
27
+ readonly ease: 'easeOut';
28
+ };
29
+ };
30
+ };
31
+ fadeInDown: {
32
+ keyframes: {
33
+ opacity: number[];
34
+ y: number[];
35
+ };
36
+ transition: {
37
+ type: 'spring';
38
+ duration: 500;
39
+ bounce: 0;
40
+ opacity: {
41
+ readonly duration: 300;
42
+ readonly ease: 'easeOut';
43
+ };
44
+ };
45
+ };
46
+ fadeInLeft: {
47
+ keyframes: {
48
+ opacity: number[];
49
+ x: number[];
50
+ };
51
+ transition: {
52
+ type: 'spring';
53
+ duration: 500;
54
+ bounce: 0;
55
+ opacity: {
56
+ readonly duration: 300;
57
+ readonly ease: 'easeOut';
58
+ };
59
+ };
60
+ };
61
+ fadeInRight: {
62
+ keyframes: {
63
+ opacity: number[];
64
+ x: number[];
65
+ };
66
+ transition: {
67
+ type: 'spring';
68
+ duration: 500;
69
+ bounce: 0;
70
+ opacity: {
71
+ readonly duration: 300;
72
+ readonly ease: 'easeOut';
73
+ };
74
+ };
75
+ };
76
+ zoomIn: {
77
+ keyframes: {
78
+ opacity: number[];
79
+ scale: number[];
80
+ };
81
+ transition: {
82
+ type: 'spring';
83
+ duration: 500;
84
+ bounce: 0;
85
+ opacity: {
86
+ readonly duration: 300;
87
+ readonly ease: 'easeOut';
88
+ };
89
+ };
90
+ };
91
+ popIn: {
92
+ keyframes: {
93
+ opacity: number[];
94
+ scale: number[];
95
+ };
96
+ transition: {
97
+ type: "spring";
98
+ duration: number;
99
+ bounce: number;
100
+ opacity: {
101
+ duration: number;
102
+ };
103
+ };
104
+ };
105
+ flipInX: {
106
+ keyframes: {
107
+ opacity: number[];
108
+ rotateX: number[];
109
+ };
110
+ transition: {
111
+ type: "spring";
112
+ duration: number;
113
+ bounce: number;
114
+ opacity: {
115
+ duration: number;
116
+ };
117
+ };
118
+ };
119
+ flipInY: {
120
+ keyframes: {
121
+ opacity: number[];
122
+ rotateY: number[];
123
+ };
124
+ transition: {
125
+ type: "spring";
126
+ duration: number;
127
+ bounce: number;
128
+ opacity: {
129
+ duration: number;
130
+ };
131
+ };
132
+ };
133
+ fadeOut: {
134
+ keyframes: {
135
+ opacity: number;
136
+ };
137
+ transition: {
138
+ readonly duration: 200;
139
+ readonly ease: 'easeIn';
140
+ };
141
+ };
142
+ fadeOutUp: {
143
+ keyframes: {
144
+ opacity: number;
145
+ y: number;
146
+ };
147
+ transition: {
148
+ readonly duration: 200;
149
+ readonly ease: 'easeIn';
150
+ };
151
+ };
152
+ fadeOutDown: {
153
+ keyframes: {
154
+ opacity: number;
155
+ y: number;
156
+ };
157
+ transition: {
158
+ readonly duration: 200;
159
+ readonly ease: 'easeIn';
160
+ };
161
+ };
162
+ fadeOutLeft: {
163
+ keyframes: {
164
+ opacity: number;
165
+ x: number;
166
+ };
167
+ transition: {
168
+ readonly duration: 200;
169
+ readonly ease: 'easeIn';
170
+ };
171
+ };
172
+ fadeOutRight: {
173
+ keyframes: {
174
+ opacity: number;
175
+ x: number;
176
+ };
177
+ transition: {
178
+ readonly duration: 200;
179
+ readonly ease: 'easeIn';
180
+ };
181
+ };
182
+ zoomOut: {
183
+ keyframes: {
184
+ opacity: number;
185
+ scale: number;
186
+ };
187
+ transition: {
188
+ readonly duration: 200;
189
+ readonly ease: 'easeIn';
190
+ };
191
+ };
192
+ popOut: {
193
+ keyframes: {
194
+ opacity: number;
195
+ scale: (number | null)[];
196
+ };
197
+ transition: {
198
+ duration: number;
199
+ ease: ["easeOut", "easeIn"];
200
+ times: number[];
201
+ opacity: {
202
+ duration: number;
203
+ ease: "easeIn";
204
+ };
205
+ };
206
+ };
207
+ pulse: {
208
+ keyframes: {
209
+ scale: number[];
210
+ };
211
+ transition: {
212
+ duration: number;
213
+ ease: "easeInOut";
214
+ };
215
+ };
216
+ bounce: {
217
+ keyframes: {
218
+ y: number[];
219
+ };
220
+ transition: {
221
+ duration: number;
222
+ times: number[];
223
+ ease: ["easeOut", "easeIn", "easeOut", "easeIn"];
224
+ };
225
+ };
226
+ shake: {
227
+ keyframes: {
228
+ x: number[];
229
+ };
230
+ transition: {
231
+ duration: number;
232
+ ease: "easeInOut";
233
+ };
234
+ };
235
+ wiggle: {
236
+ keyframes: {
237
+ rotate: number[];
238
+ };
239
+ transition: {
240
+ duration: number;
241
+ ease: "easeInOut";
242
+ };
243
+ };
244
+ heartbeat: {
245
+ keyframes: {
246
+ scale: number[];
247
+ };
248
+ transition: {
249
+ duration: number;
250
+ times: number[];
251
+ ease: "easeInOut";
252
+ };
253
+ };
254
+ jelly: {
255
+ keyframes: {
256
+ scaleX: number[];
257
+ scaleY: number[];
258
+ };
259
+ transition: {
260
+ duration: number;
261
+ times: number[];
262
+ ease: "easeInOut";
263
+ };
264
+ };
265
+ flash: {
266
+ keyframes: {
267
+ opacity: number[];
268
+ };
269
+ transition: {
270
+ duration: number;
271
+ ease: "easeInOut";
272
+ };
273
+ };
274
+ tada: {
275
+ keyframes: {
276
+ scale: number[];
277
+ rotate: number[];
278
+ };
279
+ transition: {
280
+ duration: number;
281
+ ease: "easeInOut";
282
+ };
283
+ };
284
+ spin: {
285
+ keyframes: {
286
+ rotate: number[];
287
+ };
288
+ transition: {
289
+ duration: number;
290
+ ease: "linear";
291
+ };
292
+ };
293
+ };
294
+ export type PresetName = keyof typeof presets;
295
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,EAAE,cAAc,CAAA;CAC3B;AAMD,eAAO,MAAM,OAAO;;QACR,SAAS;YAAI,OAAO;;QAAY,UAAU;+BAL3B,GAAG;2BAAQ,SAAS;;;;;YAO9B,OAAO;YAAU,CAAC;;;kBALb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YASvC,OAAO;YAAU,CAAC;;;kBATb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAavC,OAAO;YAAU,CAAC;;;kBAbb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAiBvC,OAAO;YAAU,CAAC;;;kBAjBb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAqBvC,OAAO;YAAU,KAAK;;;kBArBjB,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAyBvC,OAAO;YAAU,KAAK;;;;;;;gBAKtB,QAAQ;;;;;;YAIR,OAAO;YAAU,OAAO;;;;;;;gBAKxB,QAAQ;;;;;;YAIR,OAAO;YAAU,OAAO;;;;;;;gBAKxB,QAAQ;;;;;QAIZ,SAAS;YAAI,OAAO;;QAAO,UAAU;+BArDtB,GAAG;2BAAQ,QAAQ;;;;QAsDhC,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAS,UAAU;;;;;;QAC3C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAQ,UAAU;;;;;;QAC5C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAS,UAAU;;;;;;QAC5C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAQ,UAAU;;;;;;QACjD,SAAS;YAAI,OAAO;YAAK,KAAK;;QAAU,UAAU;;;;;;;YAE9C,OAAO;YAAK,KAAK;;;;;;;;;;;;;;YAUjB,KAAK;;;;;;;;QAIlB,SAAS;YAAI,CAAC;;QACd,UAAU;YACR,QAAQ;YACR,KAAK;YACL,IAAI;;;;;YAIO,CAAC;;;;;;;;;YAID,MAAM;;;;;;;;;YAIN,KAAK;;;;;;;;;;YAShB,MAAM;YACN,MAAM;;;;;;;;;;YASK,OAAO;;;;;;;;;YAKlB,KAAK;YACL,MAAM;;;;;;;;;YAKK,MAAM;;;;;;;CAGW,CAAA;AAElC,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA"}
@@ -0,0 +1,123 @@
1
+ const fadeIn = { duration: 300, ease: 'easeOut' };
2
+ const fadeOut = { duration: 200, ease: 'easeIn' };
3
+ const enter = { type: 'spring', duration: 500, bounce: 0 };
4
+ export const presets = {
5
+ fadeIn: { keyframes: { opacity: [0, 1] }, transition: fadeIn },
6
+ fadeInUp: {
7
+ keyframes: { opacity: [0, 1], y: [24, 0] },
8
+ transition: { ...enter, opacity: fadeIn },
9
+ },
10
+ fadeInDown: {
11
+ keyframes: { opacity: [0, 1], y: [-24, 0] },
12
+ transition: { ...enter, opacity: fadeIn },
13
+ },
14
+ fadeInLeft: {
15
+ keyframes: { opacity: [0, 1], x: [-24, 0] },
16
+ transition: { ...enter, opacity: fadeIn },
17
+ },
18
+ fadeInRight: {
19
+ keyframes: { opacity: [0, 1], x: [24, 0] },
20
+ transition: { ...enter, opacity: fadeIn },
21
+ },
22
+ zoomIn: {
23
+ keyframes: { opacity: [0, 1], scale: [0.85, 1] },
24
+ transition: { ...enter, opacity: fadeIn },
25
+ },
26
+ popIn: {
27
+ keyframes: { opacity: [0, 1], scale: [0.5, 1] },
28
+ transition: {
29
+ type: 'spring',
30
+ duration: 550,
31
+ bounce: 0.4,
32
+ opacity: { duration: 150 },
33
+ },
34
+ },
35
+ flipInX: {
36
+ keyframes: { opacity: [0, 1], rotateX: [-90, 0] },
37
+ transition: {
38
+ type: 'spring',
39
+ duration: 600,
40
+ bounce: 0.25,
41
+ opacity: { duration: 200 },
42
+ },
43
+ },
44
+ flipInY: {
45
+ keyframes: { opacity: [0, 1], rotateY: [90, 0] },
46
+ transition: {
47
+ type: 'spring',
48
+ duration: 600,
49
+ bounce: 0.25,
50
+ opacity: { duration: 200 },
51
+ },
52
+ },
53
+ fadeOut: { keyframes: { opacity: 0 }, transition: fadeOut },
54
+ fadeOutUp: { keyframes: { opacity: 0, y: -24 }, transition: fadeOut },
55
+ fadeOutDown: { keyframes: { opacity: 0, y: 24 }, transition: fadeOut },
56
+ fadeOutLeft: { keyframes: { opacity: 0, x: -24 }, transition: fadeOut },
57
+ fadeOutRight: { keyframes: { opacity: 0, x: 24 }, transition: fadeOut },
58
+ zoomOut: { keyframes: { opacity: 0, scale: 0.85 }, transition: fadeOut },
59
+ popOut: {
60
+ keyframes: { opacity: 0, scale: [null, 1.08, 0.4] },
61
+ transition: {
62
+ duration: 250,
63
+ ease: ['easeOut', 'easeIn'],
64
+ times: [0, 0.3, 1],
65
+ opacity: { duration: 250, ease: 'easeIn' },
66
+ },
67
+ },
68
+ pulse: {
69
+ keyframes: { scale: [1, 1.06, 1] },
70
+ transition: { duration: 500, ease: 'easeInOut' },
71
+ },
72
+ bounce: {
73
+ keyframes: { y: [0, -18, 0, -8, 0] },
74
+ transition: {
75
+ duration: 650,
76
+ times: [0, 0.3, 0.6, 0.8, 1],
77
+ ease: ['easeOut', 'easeIn', 'easeOut', 'easeIn'],
78
+ },
79
+ },
80
+ shake: {
81
+ keyframes: { x: [0, -10, 10, -8, 8, -4, 4, 0] },
82
+ transition: { duration: 500, ease: 'easeInOut' },
83
+ },
84
+ wiggle: {
85
+ keyframes: { rotate: [0, -8, 8, -5, 5, 0] },
86
+ transition: { duration: 500, ease: 'easeInOut' },
87
+ },
88
+ heartbeat: {
89
+ keyframes: { scale: [1, 1.15, 1, 1.15, 1, 1] },
90
+ transition: {
91
+ duration: 1000,
92
+ times: [0, 0.14, 0.28, 0.42, 0.7, 1],
93
+ ease: 'easeInOut',
94
+ },
95
+ },
96
+ jelly: {
97
+ keyframes: {
98
+ scaleX: [1, 1.25, 0.75, 1.15, 0.95, 1.05, 1],
99
+ scaleY: [1, 0.75, 1.25, 0.85, 1.05, 0.95, 1],
100
+ },
101
+ transition: {
102
+ duration: 800,
103
+ times: [0, 0.3, 0.4, 0.5, 0.65, 0.75, 1],
104
+ ease: 'easeInOut',
105
+ },
106
+ },
107
+ flash: {
108
+ keyframes: { opacity: [1, 0, 1, 0, 1] },
109
+ transition: { duration: 800, ease: 'easeInOut' },
110
+ },
111
+ tada: {
112
+ keyframes: {
113
+ scale: [1, 0.9, 0.9, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1],
114
+ rotate: [0, -3, -3, 3, -3, 3, -3, 3, -3, 3, 0],
115
+ },
116
+ transition: { duration: 1000, ease: 'easeInOut' },
117
+ },
118
+ spin: {
119
+ keyframes: { rotate: [0, 360] },
120
+ transition: { duration: 1000, ease: 'linear' },
121
+ },
122
+ };
123
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { SpringName } from './transition.js';
2
+ import type { AnimateOptions, Keyframes, Target } from './types.js';
3
+ /**
4
+ * Animates the view to `pressed` while a finger is on it, and back once it's lifted.
5
+ * Returns a function that removes the effect.
6
+ *
7
+ * ```ts
8
+ * press(button)
9
+ * press(card, { scale: 0.97, opacity: 0.85 })
10
+ * ```
11
+ */
12
+ export declare function press(target: Target, pressed?: Keyframes, options?: AnimateOptions | SpringName): () => void;
13
+ //# sourceMappingURL=press.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"press.d.ts","sourceRoot":"","sources":["../src/press.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKnE;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,SAA2B,EACpC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,GACpC,MAAM,IAAI,CAoBZ"}
package/dist/press.js ADDED
@@ -0,0 +1,32 @@
1
+ import { animate, toView } from './animate.js';
2
+ import { isProperty, readValue } from './properties.js';
3
+ const pressIn = { type: 'spring', duration: 200, bounce: 0 };
4
+ const release = { type: 'spring', duration: 450, bounce: 0.35 };
5
+ /**
6
+ * Animates the view to `pressed` while a finger is on it, and back once it's lifted.
7
+ * Returns a function that removes the effect.
8
+ *
9
+ * ```ts
10
+ * press(button)
11
+ * press(card, { scale: 0.97, opacity: 0.85 })
12
+ * ```
13
+ */
14
+ export function press(target, pressed = { scale: 0.96 }, options) {
15
+ const view = toView(target);
16
+ const properties = Object.keys(pressed).flatMap((key) => key === 'scale' ? ['scaleX', 'scaleY'] : isProperty(key) ? [key] : []);
17
+ let rest;
18
+ const onTouch = (event) => {
19
+ const { action } = event;
20
+ if (action === 'down' && !rest && view.isEnabled !== false) {
21
+ rest = Object.fromEntries(properties.map((p) => [p, readValue(view, p)]));
22
+ animate(view, pressed, options ?? pressIn);
23
+ }
24
+ else if ((action === 'up' || action === 'cancel') && rest) {
25
+ animate(view, rest, options ?? release);
26
+ rest = undefined;
27
+ }
28
+ };
29
+ view.on('touch', onTouch);
30
+ return () => view.off('touch', onTouch);
31
+ }
32
+ //# sourceMappingURL=press.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"press.js","sourceRoot":"","sources":["../src/press.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAA;AAItE,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;AACxE,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AAE3E;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CACnB,MAAc,EACd,OAAO,GAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EACpC,OAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAc,EAAE,CAClE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CACtE,CAAA;IACD,IAAI,IAA2B,CAAA;IAE/B,MAAM,OAAO,GAAG,CAAC,KAAgB,EAAE,EAAE;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,KAA8B,CAAA;QACjD,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC3D,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,CAAA;QAC5C,CAAC;aAAM,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,CAAA;YACvC,IAAI,GAAG,SAAS,CAAA;QAClB,CAAC;IACH,CAAC,CAAA;IAED,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { View } from '@nativescript/core';
2
+ export type Property = 'opacity' | 'x' | 'y' | 'scaleX' | 'scaleY' | 'rotate' | 'rotateX' | 'rotateY';
3
+ /** How close to its target a spring has to be to count as settled. */
4
+ export declare const precision: Record<Property, number>;
5
+ export declare function isProperty(key: string): key is Property;
6
+ export declare function readValue(view: View, property: Property): number;
7
+ export declare function writeValue(view: View, property: Property, value: number): void;
8
+ //# sourceMappingURL=properties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,MAAM,QAAQ,GAClB,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;AAwBhF,sEAAsE;AACtE,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAS9C,CAAA;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAEvD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAGhE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,QAEvE"}
@@ -0,0 +1,42 @@
1
+ const viewKeys = {
2
+ opacity: 'opacity',
3
+ x: 'translateX',
4
+ y: 'translateY',
5
+ scaleX: 'scaleX',
6
+ scaleY: 'scaleY',
7
+ rotate: 'rotate',
8
+ rotateX: 'rotateX',
9
+ rotateY: 'rotateY',
10
+ };
11
+ const defaults = {
12
+ opacity: 1,
13
+ x: 0,
14
+ y: 0,
15
+ scaleX: 1,
16
+ scaleY: 1,
17
+ rotate: 0,
18
+ rotateX: 0,
19
+ rotateY: 0,
20
+ };
21
+ /** How close to its target a spring has to be to count as settled. */
22
+ export const precision = {
23
+ opacity: 0.002,
24
+ x: 0.25,
25
+ y: 0.25,
26
+ scaleX: 0.001,
27
+ scaleY: 0.001,
28
+ rotate: 0.1,
29
+ rotateX: 0.1,
30
+ rotateY: 0.1,
31
+ };
32
+ export function isProperty(key) {
33
+ return key in viewKeys;
34
+ }
35
+ export function readValue(view, property) {
36
+ const value = view[viewKeys[property]];
37
+ return typeof value === 'number' && !Number.isNaN(value) ? value : defaults[property];
38
+ }
39
+ export function writeValue(view, property, value) {
40
+ view[viewKeys[property]] = value;
41
+ }
42
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"AAKA,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,SAAS;IAClB,CAAC,EAAE,YAAY;IACf,CAAC,EAAE,YAAY;IACf,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CAC6B,CAAA;AAEjD,MAAM,QAAQ,GAA6B;IACzC,OAAO,EAAE,CAAC;IACV,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;CACX,CAAA;AAED,sEAAsE;AACtE,MAAM,CAAC,MAAM,SAAS,GAA6B;IACjD,OAAO,EAAE,KAAK;IACd,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;CACb,CAAA;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG,IAAI,QAAQ,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAU,EAAE,QAAkB;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,QAAkB,EAAE,KAAa;IACtE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAA;AAClC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type Animation } from './engine.js';
2
+ import type { PresetName } from './presets.js';
3
+ import type { SpringName } from './transition.js';
4
+ import type { AnimateOptions, Keyframes, Target } from './types.js';
5
+ export type Step = readonly [
6
+ target: Target | readonly Target[],
7
+ animation: Keyframes | PresetName,
8
+ options?: AnimateOptions | SpringName
9
+ ] | (() => Animation);
10
+ /**
11
+ * Plays steps one after the other. A step starts once the previous one looks
12
+ * done: a spring is close to its target, even if it hasn't fully settled.
13
+ * Views in later steps take their first keyframe right away, so a title that
14
+ * fades in third doesn't show up before its turn.
15
+ *
16
+ * ```ts
17
+ * await sequence([
18
+ * [logo, 'popIn'],
19
+ * [title, 'fadeInUp'],
20
+ * [buttons, 'fadeInUp', { stagger: 50 }],
21
+ * ])
22
+ * ```
23
+ */
24
+ export declare function sequence(steps: readonly Step[]): Animation;
25
+ //# sourceMappingURL=sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnE,MAAM,MAAM,IAAI,GACZ,SAAS;IACP,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAClC,SAAS,EAAE,SAAS,GAAG,UAAU;IACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU;CACtC,GACD,CAAC,MAAM,SAAS,CAAC,CAAA;AAErB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,SAAS,CA8B1D"}
@@ -0,0 +1,68 @@
1
+ import { animate, startingValues, toViews } from './animate.js';
2
+ import { arrivalOf, setArrival, stopView } from './engine.js';
3
+ import { writeValue } from './properties.js';
4
+ /**
5
+ * Plays steps one after the other. A step starts once the previous one looks
6
+ * done: a spring is close to its target, even if it hasn't fully settled.
7
+ * Views in later steps take their first keyframe right away, so a title that
8
+ * fades in third doesn't show up before its turn.
9
+ *
10
+ * ```ts
11
+ * await sequence([
12
+ * [logo, 'popIn'],
13
+ * [title, 'fadeInUp'],
14
+ * [buttons, 'fadeInUp', { stagger: 50 }],
15
+ * ])
16
+ * ```
17
+ */
18
+ export function sequence(steps) {
19
+ applyStartingValues(steps);
20
+ const started = [];
21
+ let stopped = false;
22
+ const arrived = (async () => {
23
+ for (const step of steps) {
24
+ if (stopped)
25
+ return;
26
+ const animation = typeof step === 'function' ? step() : animate(...step);
27
+ started.push(animation);
28
+ await arrivalOf(animation);
29
+ }
30
+ })();
31
+ const finished = arrived.then(async () => {
32
+ const results = await Promise.all(started.map((animation) => animation.finished));
33
+ return !stopped && results.length === steps.length && results.every(Boolean);
34
+ });
35
+ const animation = {
36
+ finished,
37
+ stop() {
38
+ stopped = true;
39
+ started.forEach((animation) => animation.stop());
40
+ },
41
+ then: (onfulfilled, onrejected) => finished.then(onfulfilled, onrejected),
42
+ };
43
+ setArrival(animation, arrived);
44
+ return animation;
45
+ }
46
+ function applyStartingValues(steps) {
47
+ const claimed = new Map();
48
+ for (const step of steps) {
49
+ if (typeof step === 'function')
50
+ continue;
51
+ const [target, animation] = step;
52
+ const starts = startingValues(animation);
53
+ for (const view of toViews(target)) {
54
+ let properties = claimed.get(view);
55
+ if (!properties)
56
+ claimed.set(view, (properties = new Set()));
57
+ const fresh = [...starts].filter(([property]) => !properties.has(property));
58
+ stopView(view, fresh.map(([property]) => property));
59
+ for (const [property, value] of fresh) {
60
+ if (value !== null)
61
+ writeValue(view, property, value);
62
+ }
63
+ for (const property of starts.keys())
64
+ properties.add(property);
65
+ }
66
+ }
67
+ }
68
+ //# sourceMappingURL=sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.js","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface SpringPhysics {
2
+ stiffness: number;
3
+ damping: number;
4
+ mass: number;
5
+ }
6
+ export interface SpringParams {
7
+ stiffness?: number;
8
+ damping?: number;
9
+ mass?: number;
10
+ bounce?: number;
11
+ duration?: number;
12
+ }
13
+ export interface SpringMotion {
14
+ /** Milliseconds until the spring settles. */
15
+ duration: number;
16
+ position(time: number): number;
17
+ /** Units per second. */
18
+ velocity(time: number): number;
19
+ }
20
+ export declare function springPhysics({ stiffness, damping, mass, bounce, duration, }: SpringParams): SpringPhysics;
21
+ export declare function solveSpring({ stiffness, damping, mass }: SpringPhysics, from: number, to: number, velocity: number, precision: number): SpringMotion;
22
+ //# sourceMappingURL=spring.d.ts.map