react-native-fast-animate 0.1.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.
@@ -0,0 +1,1421 @@
1
+ import { Animated, Easing } from 'react-native';
2
+ import type { AnimationType } from './types';
3
+
4
+ export const getAnimationConfig = (
5
+ type: AnimationType,
6
+ animatedValue: Animated.Value,
7
+ duration: number,
8
+ useNativeDriver: boolean,
9
+ damping: number,
10
+ stiffness: number
11
+ ) => {
12
+ const commonTiming = (toValue: number, d = duration) =>
13
+ Animated.timing(animatedValue, {
14
+ toValue,
15
+ duration: d,
16
+ useNativeDriver,
17
+ easing: Easing.bezier(0.42, 0, 0.58, 1),
18
+ });
19
+
20
+ const attentionSeeker = (values: number[]) => {
21
+ const segment = duration / values.length;
22
+ return Animated.sequence(values.map((v) => commonTiming(v, segment)));
23
+ };
24
+
25
+ switch (type) {
26
+ case 'bounce':
27
+ case 'bounceIn':
28
+ case 'bounceInUp':
29
+ case 'bounceInDown':
30
+ case 'bounceInLeft':
31
+ case 'bounceInRight':
32
+ case 'flingInLeft':
33
+ case 'flingInRight':
34
+ case 'flingInUp':
35
+ case 'flingInDown':
36
+ case 'bounceInTopLeft':
37
+ case 'bounceInTopRight':
38
+ case 'bounceInBottomLeft':
39
+ case 'bounceInBottomRight':
40
+ return Animated.spring(animatedValue, {
41
+ toValue: 1,
42
+ friction: damping,
43
+ tension: stiffness,
44
+ useNativeDriver,
45
+ });
46
+ case 'pulse':
47
+ case 'pulseAlt':
48
+ return Animated.sequence([
49
+ commonTiming(1, duration / 2),
50
+ commonTiming(0, duration / 2),
51
+ ]);
52
+ case 'shake':
53
+ case 'shakeX':
54
+ case 'shakeY':
55
+ case 'headShake':
56
+ return attentionSeeker([0.1, -0.1, 0.1, -0.1, 0]);
57
+ case 'swing':
58
+ case 'wobble':
59
+ case 'jello':
60
+ case 'tada':
61
+ return attentionSeeker([0.2, -0.2, 0.2, -0.2, 0.1, -0.1, 0]);
62
+ case 'heartBeat':
63
+ return Animated.sequence([
64
+ commonTiming(1, duration * 0.14),
65
+ commonTiming(0, duration * 0.14),
66
+ commonTiming(1, duration * 0.14),
67
+ commonTiming(0, duration * 0.14),
68
+ ]);
69
+ case 'rubberBand':
70
+ return attentionSeeker([1.25, 0.75, 1.15, 0.95, 1.05, 1]);
71
+ case 'flash':
72
+ return attentionSeeker([0, 1, 0, 1, 0]);
73
+ case 'hinge':
74
+ return Animated.sequence([
75
+ Animated.timing(animatedValue, {
76
+ toValue: 0.5,
77
+ duration: duration * 0.4,
78
+ useNativeDriver,
79
+ }),
80
+ Animated.timing(animatedValue, {
81
+ toValue: 1,
82
+ duration: duration * 0.6,
83
+ useNativeDriver,
84
+ }),
85
+ ]);
86
+ case 'bounceInfinite':
87
+ case 'rotateInfinite':
88
+ case 'slideInfinite':
89
+ case 'flipInfinite':
90
+ case 'flipInfiniteX':
91
+ case 'flipInfiniteY':
92
+ case 'swingInfinite':
93
+ case 'wobbleInfinite':
94
+ case 'pulseInfinite':
95
+ case 'jelloInfinite':
96
+ case 'shimmer':
97
+ case 'shimmerSlow':
98
+ case 'float':
99
+ case 'floatLeft':
100
+ case 'floatRight':
101
+ case 'floatUp':
102
+ case 'floatDown':
103
+ case 'orbit':
104
+ case 'satellite':
105
+ return commonTiming(1);
106
+ case 'newspaper':
107
+ return Animated.parallel([
108
+ commonTiming(1),
109
+ Animated.timing(animatedValue, {
110
+ toValue: 1,
111
+ duration,
112
+ useNativeDriver,
113
+ easing: Easing.out(Easing.quad),
114
+ }),
115
+ ]);
116
+ case 'dance':
117
+ return attentionSeeker([0.1, -0.1, 0.1, -0.1, 0.2, -0.2, 0]);
118
+ case 'jerk':
119
+ return attentionSeeker([-0.1, 0.1, -0.1, 0.1, 0]);
120
+ case 'panic':
121
+ return attentionSeeker([0.05, -0.05, 0.05, -0.05, 0.1, -0.1, 0]);
122
+ case 'popIn':
123
+ case 'popInUp':
124
+ case 'popInDown':
125
+ case 'popInLeft':
126
+ case 'popInRight':
127
+ case 'fallIn':
128
+ case 'raiseIn':
129
+ return Animated.spring(animatedValue, {
130
+ toValue: 1,
131
+ friction: 8,
132
+ tension: 40,
133
+ useNativeDriver,
134
+ });
135
+ case 'vibrateFast':
136
+ return attentionSeeker([0.05, -0.05, 0.05, -0.05, 0]);
137
+ case 'vibrateSlow':
138
+ return attentionSeeker([0.2, -0.2, 0.2, -0.2, 0]);
139
+ case 'pulseFast':
140
+ return Animated.sequence([
141
+ commonTiming(1, duration / 4),
142
+ commonTiming(0, duration / 4),
143
+ ]);
144
+ case 'pulseSlow':
145
+ return Animated.sequence([
146
+ commonTiming(1, duration),
147
+ commonTiming(0, duration),
148
+ ]);
149
+ case 'flashFast':
150
+ return attentionSeeker([0, 1, 0, 1, 0, 1, 0]);
151
+ default:
152
+ return commonTiming(1);
153
+ }
154
+ };
155
+
156
+ export const getAnimationStyle = (
157
+ type: AnimationType,
158
+ animatedValue: Animated.Value
159
+ ): any => {
160
+ const t = (input: number[], output: any[]) =>
161
+ animatedValue.interpolate({ inputRange: input, outputRange: output });
162
+ const transforms: any[] = [];
163
+
164
+ switch (type) {
165
+ // FADES
166
+ case 'fadeIn':
167
+ return { opacity: animatedValue };
168
+ case 'fadeInUp':
169
+ transforms.push({ translateY: t([0, 1], [40, 0]) });
170
+ return { opacity: animatedValue, transform: transforms };
171
+ case 'fadeInDown':
172
+ transforms.push({ translateY: t([0, 1], [-40, 0]) });
173
+ return { opacity: animatedValue, transform: transforms };
174
+ case 'fadeInLeft':
175
+ transforms.push({ translateX: t([0, 1], [-40, 0]) });
176
+ return { opacity: animatedValue, transform: transforms };
177
+ case 'fadeInRight':
178
+ transforms.push({ translateX: t([0, 1], [40, 0]) });
179
+ return { opacity: animatedValue, transform: transforms };
180
+ case 'fadeInTopLeft':
181
+ transforms.push({
182
+ translateX: t([0, 1], [-100, 0]),
183
+ translateY: t([0, 1], [-100, 0]),
184
+ });
185
+ return { opacity: animatedValue, transform: transforms };
186
+ case 'fadeInTopRight':
187
+ transforms.push({
188
+ translateX: t([0, 1], [100, 0]),
189
+ translateY: t([0, 1], [-100, 0]),
190
+ });
191
+ return { opacity: animatedValue, transform: transforms };
192
+ case 'fadeInBottomLeft':
193
+ transforms.push({
194
+ translateX: t([0, 1], [-100, 0]),
195
+ translateY: t([0, 1], [100, 0]),
196
+ });
197
+ return { opacity: animatedValue, transform: transforms };
198
+ case 'fadeInBottomRight':
199
+ transforms.push({
200
+ translateX: t([0, 1], [100, 0]),
201
+ translateY: t([0, 1], [100, 0]),
202
+ });
203
+ return { opacity: animatedValue, transform: transforms };
204
+ case 'fadeOut':
205
+ return { opacity: t([0, 1], [1, 0]) };
206
+ case 'fadeOutUp':
207
+ transforms.push({ translateY: t([0, 1], [0, -40]) });
208
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
209
+ case 'fadeOutDown':
210
+ transforms.push({ translateY: t([0, 1], [0, 40]) });
211
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
212
+ case 'fadeOutLeft':
213
+ transforms.push({ translateX: t([0, 1], [0, -40]) });
214
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
215
+ case 'fadeOutRight':
216
+ transforms.push({ translateX: t([0, 1], [0, 40]) });
217
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
218
+
219
+ // SLIDES
220
+ case 'slideInUp':
221
+ transforms.push({ translateY: t([0, 1], [500, 0]) });
222
+ return { transform: transforms };
223
+ case 'slideInDown':
224
+ transforms.push({ translateY: t([0, 1], [-500, 0]) });
225
+ return { transform: transforms };
226
+ case 'slideInLeft':
227
+ transforms.push({ translateX: t([0, 1], [-500, 0]) });
228
+ return { transform: transforms };
229
+ case 'slideInRight':
230
+ transforms.push({ translateX: t([0, 1], [500, 0]) });
231
+ return { transform: transforms };
232
+ case 'slideInTopLeft':
233
+ transforms.push({
234
+ translateX: t([0, 1], [-500, 0]),
235
+ translateY: t([0, 1], [-500, 0]),
236
+ });
237
+ return { transform: transforms };
238
+ case 'slideInTopRight':
239
+ transforms.push({
240
+ translateX: t([0, 1], [500, 0]),
241
+ translateY: t([0, 1], [-500, 0]),
242
+ });
243
+ return { transform: transforms };
244
+ case 'slideInBottomLeft':
245
+ transforms.push({
246
+ translateX: t([0, 1], [-500, 0]),
247
+ translateY: t([0, 1], [500, 0]),
248
+ });
249
+ return { transform: transforms };
250
+ case 'slideInBottomRight':
251
+ transforms.push({
252
+ translateX: t([0, 1], [500, 0]),
253
+ translateY: t([0, 1], [500, 0]),
254
+ });
255
+ return { transform: transforms };
256
+ case 'slideOutUp':
257
+ transforms.push({ translateY: t([0, 1], [0, -500]) });
258
+ return { transform: transforms };
259
+ case 'slideOutDown':
260
+ transforms.push({ translateY: t([0, 1], [0, 500]) });
261
+ return { transform: transforms };
262
+ case 'slideOutLeft':
263
+ transforms.push({ translateX: t([0, 1], [0, -500]) });
264
+ return { transform: transforms };
265
+ case 'slideOutRight':
266
+ transforms.push({ translateX: t([0, 1], [0, 500]) });
267
+ return { transform: transforms };
268
+
269
+ // ZOOMS
270
+ case 'zoomIn':
271
+ transforms.push({ scale: t([0, 1], [0, 1]) });
272
+ return { opacity: animatedValue, transform: transforms };
273
+ case 'zoomInUp':
274
+ transforms.push({
275
+ scale: t([0, 0.6, 1], [0.1, 0.47, 1]),
276
+ translateY: t([0, 0.6, 1], [1000, -60, 0]),
277
+ });
278
+ return { opacity: t([0, 0.6, 1], [0, 1, 1]), transform: transforms };
279
+ case 'zoomInDown':
280
+ transforms.push({
281
+ scale: t([0, 0.6, 1], [0.1, 0.47, 1]),
282
+ translateY: t([0, 0.6, 1], [-1000, 60, 0]),
283
+ });
284
+ return { opacity: t([0, 0.6, 1], [0, 1, 1]), transform: transforms };
285
+ case 'zoomInLeft':
286
+ transforms.push({
287
+ scale: t([0, 0.6, 1], [0.1, 0.47, 1]),
288
+ translateX: t([0, 0.6, 1], [-1000, 10, 0]),
289
+ });
290
+ return { opacity: t([0, 0.6, 1], [0, 1, 1]), transform: transforms };
291
+ case 'zoomInRight':
292
+ transforms.push({
293
+ scale: t([0, 0.6, 1], [0.1, 0.47, 1]),
294
+ translateX: t([0, 0.6, 1], [1000, -10, 0]),
295
+ });
296
+ return { opacity: t([0, 0.6, 1], [0, 1, 1]), transform: transforms };
297
+ case 'zoomInTopLeft':
298
+ transforms.push({
299
+ scale: t([0, 1], [0.1, 1]),
300
+ translateX: t([0, 1], [-1000, 0]),
301
+ translateY: t([0, 1], [-1000, 0]),
302
+ });
303
+ return { opacity: animatedValue, transform: transforms };
304
+ case 'zoomInTopRight':
305
+ transforms.push({
306
+ scale: t([0, 1], [0.1, 1]),
307
+ translateX: t([0, 1], [1000, 0]),
308
+ translateY: t([0, 1], [-1000, 0]),
309
+ });
310
+ return { opacity: animatedValue, transform: transforms };
311
+ case 'zoomInBottomLeft':
312
+ transforms.push({
313
+ scale: t([0, 1], [0.1, 1]),
314
+ translateX: t([0, 1], [-1000, 0]),
315
+ translateY: t([0, 1], [1000, 0]),
316
+ });
317
+ return { opacity: animatedValue, transform: transforms };
318
+ case 'zoomInBottomRight':
319
+ transforms.push({
320
+ scale: t([0, 1], [0.1, 1]),
321
+ translateX: t([0, 1], [1000, 0]),
322
+ translateY: t([0, 1], [1000, 0]),
323
+ });
324
+ return { opacity: animatedValue, transform: transforms };
325
+ case 'zoomOut':
326
+ transforms.push({ scale: t([0, 1], [1, 0]) });
327
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
328
+ case 'zoomOutUp':
329
+ transforms.push({
330
+ scale: t([0, 0.4, 1], [1, 0.47, 0.1]),
331
+ translateY: t([0, 1], [0, -1000]),
332
+ });
333
+ return { opacity: t([0, 0.4, 1], [1, 1, 0]), transform: transforms };
334
+ case 'zoomOutDown':
335
+ transforms.push({
336
+ scale: t([0, 0.4, 1], [1, 0.47, 0.1]),
337
+ translateY: t([0, 1], [0, 1000]),
338
+ });
339
+ return { opacity: t([0, 0.4, 1], [1, 1, 0]), transform: transforms };
340
+ case 'zoomOutLeft':
341
+ transforms.push({
342
+ scale: t([0, 1], [1, 0]),
343
+ translateX: t([0, 1], [0, -1000]),
344
+ });
345
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
346
+ case 'zoomOutRight':
347
+ transforms.push({
348
+ scale: t([0, 1], [1, 0]),
349
+ translateX: t([0, 1], [0, 1000]),
350
+ });
351
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
352
+
353
+ // BACKS
354
+ case 'backInUp':
355
+ transforms.push({
356
+ translateY: t([0, 0.8, 1], [800, -15, 0]),
357
+ scale: t([0, 0.8, 1], [0.7, 0.7, 1]),
358
+ });
359
+ return { opacity: t([0, 0.8], [0.7, 1]), transform: transforms };
360
+ case 'backInDown':
361
+ transforms.push({
362
+ translateY: t([0, 0.8, 1], [-800, 15, 0]),
363
+ scale: t([0, 0.8, 1], [0.7, 0.7, 1]),
364
+ });
365
+ return { opacity: t([0, 0.8], [0.7, 1]), transform: transforms };
366
+ case 'backInLeft':
367
+ transforms.push({
368
+ translateX: t([0, 0.8, 1], [-800, 15, 0]),
369
+ scale: t([0, 0.8, 1], [0.7, 0.7, 1]),
370
+ });
371
+ return { opacity: t([0, 0.8], [0.7, 1]), transform: transforms };
372
+ case 'backInRight':
373
+ transforms.push({
374
+ translateX: t([0, 0.8, 1], [800, -15, 0]),
375
+ scale: t([0, 0.8, 1], [0.7, 0.7, 1]),
376
+ });
377
+ return { opacity: t([0, 0.8], [0.7, 1]), transform: transforms };
378
+ case 'backOutUp':
379
+ transforms.push({
380
+ translateY: t([0, 0.2, 1], [0, 15, -800]),
381
+ scale: t([0, 0.2, 1], [1, 0.7, 0.7]),
382
+ });
383
+ return { opacity: t([0, 0.2, 1], [1, 1, 0.7]), transform: transforms };
384
+ case 'backOutDown':
385
+ transforms.push({
386
+ translateY: t([0, 0.2, 1], [0, -15, 800]),
387
+ scale: t([0, 0.2, 1], [1, 0.7, 0.7]),
388
+ });
389
+ return { opacity: t([0, 0.2, 1], [1, 1, 0.7]), transform: transforms };
390
+ case 'backOutLeft':
391
+ transforms.push({
392
+ translateX: t([0, 0.2, 1], [0, 15, -800]),
393
+ scale: t([0, 0.2, 1], [1, 0.7, 0.7]),
394
+ });
395
+ return { opacity: t([0, 0.2, 1], [1, 1, 0.7]), transform: transforms };
396
+ case 'backOutRight':
397
+ transforms.push({
398
+ translateX: t([0, 0.2, 1], [0, -15, 800]),
399
+ scale: t([0, 0.2, 1], [1, 0.7, 0.7]),
400
+ });
401
+ return { opacity: t([0, 0.2, 1], [1, 1, 0.7]), transform: transforms };
402
+
403
+ // BOUNCES
404
+ case 'bounce':
405
+ transforms.push({
406
+ translateY: t(
407
+ [0, 0.2, 0.4, 0.43, 0.53, 0.7, 0.8, 0.9, 1],
408
+ [0, 0, -30, -30, 0, -15, 0, -4, 0]
409
+ ),
410
+ });
411
+ return { transform: transforms };
412
+ case 'bounceIn':
413
+ transforms.push({
414
+ scale: t([0, 0.2, 0.4, 0.6, 0.8, 1], [0.3, 1.1, 0.9, 1.03, 0.97, 1]),
415
+ });
416
+ return { opacity: t([0, 0.2], [0, 1]), transform: transforms };
417
+ case 'bounceInUp':
418
+ transforms.push({
419
+ translateY: t([0, 0.6, 0.75, 0.9, 1], [1000, -20, 10, -5, 0]),
420
+ });
421
+ return { opacity: t([0, 0.6], [0, 1]), transform: transforms };
422
+ case 'bounceInDown':
423
+ transforms.push({
424
+ translateY: t([0, 0.6, 0.75, 0.9, 1], [-1000, 20, -10, 5, 0]),
425
+ });
426
+ return { opacity: t([0, 0.6], [0, 1]), transform: transforms };
427
+ case 'bounceInLeft':
428
+ transforms.push({
429
+ translateX: t([0, 0.6, 0.75, 0.9, 1], [-1000, 20, -10, 5, 0]),
430
+ });
431
+ return { opacity: t([0, 0.6], [0, 1]), transform: transforms };
432
+ case 'bounceInRight':
433
+ transforms.push({
434
+ translateX: t([0, 0.6, 0.75, 0.9, 1], [1000, -20, 10, -5, 0]),
435
+ });
436
+ return { opacity: t([0, 0.6], [0, 1]), transform: transforms };
437
+ case 'bounceOut':
438
+ transforms.push({
439
+ scale: t([0, 0.2, 0.5, 0.55, 1], [1, 0.9, 1.1, 1.1, 0.3]),
440
+ });
441
+ return { opacity: t([0, 0.55, 1], [1, 1, 0]), transform: transforms };
442
+ case 'bounceOutUp':
443
+ transforms.push({
444
+ translateY: t([0, 0.2, 0.4, 0.45, 1], [0, -10, 20, 20, -1000]),
445
+ });
446
+ return { opacity: t([0, 0.45, 1], [1, 1, 0]), transform: transforms };
447
+ case 'bounceOutDown':
448
+ transforms.push({
449
+ translateY: t([0, 0.2, 0.4, 0.45, 1], [0, 10, -20, -20, 1000]),
450
+ });
451
+ return { opacity: t([0, 0.45, 1], [1, 1, 0]), transform: transforms };
452
+ case 'bounceOutLeft':
453
+ transforms.push({ translateX: t([0, 0.2, 1], [0, 20, -1000]) });
454
+ return { opacity: t([0, 0.2, 1], [1, 1, 0]), transform: transforms };
455
+ case 'bounceOutRight':
456
+ transforms.push({ translateX: t([0, 0.2, 1], [0, -20, 1000]) });
457
+ return { opacity: t([0, 0.2, 1], [1, 1, 0]), transform: transforms };
458
+
459
+ // ATTENTION SEEKERS
460
+ case 'pulse':
461
+ transforms.push({ scale: t([0, 0.5, 1], [1, 1.05, 1]) });
462
+ return { transform: transforms };
463
+ case 'pulseAlt':
464
+ transforms.push({ scale: t([0, 0.5, 1], [1, 1.2, 1]) });
465
+ return { opacity: t([0, 0.5, 1], [1, 0.8, 1]), transform: transforms };
466
+ case 'shake':
467
+ transforms.push({
468
+ translateX: t(
469
+ [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
470
+ [0, -10, 10, -10, 10, -10, 10, -10, 10, -10, 0]
471
+ ),
472
+ });
473
+ return { transform: transforms };
474
+ case 'shakeX':
475
+ transforms.push({
476
+ translateX: t(
477
+ [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1],
478
+ [0, -10, 10, -10, 10, -10, 0]
479
+ ),
480
+ });
481
+ return { transform: transforms };
482
+ case 'shakeY':
483
+ transforms.push({
484
+ translateY: t(
485
+ [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1],
486
+ [0, -10, 10, -10, 10, -10, 0]
487
+ ),
488
+ });
489
+ return { transform: transforms };
490
+ case 'headShake':
491
+ transforms.push({
492
+ translateX: t(
493
+ [0, 0.065, 0.185, 0.315, 0.435, 0.5, 1],
494
+ [0, -6, 5, -3, 2, 0, 0]
495
+ ),
496
+ rotateY: t(
497
+ [0, 0.065, 0.185, 0.315, 0.435, 0.5, 1],
498
+ ['0deg', '-9deg', '7deg', '-5deg', '3deg', '0deg', '0deg']
499
+ ),
500
+ });
501
+ return { transform: transforms };
502
+ case 'swing':
503
+ transforms.push({
504
+ rotate: t(
505
+ [0, 0.2, 0.4, 0.6, 0.8, 1],
506
+ ['0deg', '15deg', '-10deg', '5deg', '-5deg', '0deg']
507
+ ),
508
+ });
509
+ return { transform: transforms };
510
+ case 'tada':
511
+ transforms.push({
512
+ scale: t([0, 0.1, 0.2, 0.3, 1], [1, 0.9, 0.9, 1.1, 1]),
513
+ rotate: t(
514
+ [0, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
515
+ [
516
+ '0deg',
517
+ '3deg',
518
+ '-3deg',
519
+ '3deg',
520
+ '-3deg',
521
+ '3deg',
522
+ '-3deg',
523
+ '3deg',
524
+ '0deg',
525
+ ]
526
+ ),
527
+ });
528
+ return { transform: transforms };
529
+ case 'wobble':
530
+ transforms.push({
531
+ translateX: t(
532
+ [0, 0.15, 0.3, 0.45, 0.6, 0.75, 1],
533
+ [0, -25, 20, -15, 10, -5, 0]
534
+ ),
535
+ rotate: t(
536
+ [0, 0.15, 0.3, 0.45, 0.6, 0.75, 1],
537
+ ['0deg', '-5deg', '3deg', '-3deg', '2deg', '-1deg', '0deg']
538
+ ),
539
+ });
540
+ return { transform: transforms };
541
+ case 'jello':
542
+ transforms.push({
543
+ skewX: t(
544
+ [0, 0.111, 0.222, 0.333, 0.444, 0.555, 0.666, 0.777, 0.888, 1],
545
+ [
546
+ '0deg',
547
+ '-12.5deg',
548
+ '6.25deg',
549
+ '-3.125deg',
550
+ '1.5625deg',
551
+ '-0.78125deg',
552
+ '0.390625deg',
553
+ '-0.1953125deg',
554
+ '0deg',
555
+ '0deg',
556
+ ]
557
+ ),
558
+ skewY: t(
559
+ [0, 0.111, 0.222, 0.333, 0.444, 0.555, 0.666, 0.777, 0.888, 1],
560
+ [
561
+ '0deg',
562
+ '-12.5deg',
563
+ '6.25deg',
564
+ '-3.125deg',
565
+ '1.5625deg',
566
+ '-0.78125deg',
567
+ '0.390625deg',
568
+ '-0.1953125deg',
569
+ '0deg',
570
+ '0deg',
571
+ ]
572
+ ),
573
+ });
574
+ return { transform: transforms };
575
+ case 'heartBeat':
576
+ transforms.push({
577
+ scale: t([0, 0.14, 0.28, 0.42, 0.7, 1], [1, 1.3, 1, 1.3, 1, 1]),
578
+ });
579
+ return { transform: transforms };
580
+ case 'flash':
581
+ return { opacity: t([0, 0.25, 0.5, 0.75, 1], [1, 0, 1, 0, 1]) };
582
+ case 'rubberBand':
583
+ transforms.push({
584
+ scaleX: t(
585
+ [0, 0.3, 0.4, 0.5, 0.65, 0.75, 1],
586
+ [1, 1.25, 0.75, 1.15, 0.95, 1.05, 1]
587
+ ),
588
+ scaleY: t(
589
+ [0, 0.3, 0.4, 0.5, 0.65, 0.75, 1],
590
+ [1, 0.75, 1.25, 0.85, 1.05, 0.95, 1]
591
+ ),
592
+ });
593
+ return { transform: transforms };
594
+
595
+ // FLIPPERS
596
+ case 'flip':
597
+ transforms.push({
598
+ perspective: 400,
599
+ rotateY: t(
600
+ [0, 0.4, 0.5, 0.8, 1],
601
+ ['-360deg', '-190deg', '-170deg', '-3deg', '0deg']
602
+ ),
603
+ scale: t([0, 0.4, 0.5, 0.8, 1], [1, 1.4, 1.4, 1, 1]),
604
+ });
605
+ return { transform: transforms };
606
+ case 'flipInX':
607
+ transforms.push({
608
+ perspective: 400,
609
+ rotateX: t(
610
+ [0, 0.4, 0.6, 0.8, 1],
611
+ ['90deg', '-20deg', '10deg', '-5deg', '0deg']
612
+ ),
613
+ });
614
+ return { opacity: t([0, 0.6], [0, 1]), transform: transforms };
615
+ case 'flipInY':
616
+ transforms.push({
617
+ perspective: 400,
618
+ rotateY: t(
619
+ [0, 0.4, 0.6, 0.8, 1],
620
+ ['90deg', '-20deg', '10deg', '-5deg', '0deg']
621
+ ),
622
+ });
623
+ return { opacity: t([0, 0.6], [0, 1]), transform: transforms };
624
+ case 'flipOutX':
625
+ transforms.push({
626
+ perspective: 400,
627
+ rotateX: t([0, 0.3, 1], [0, -20, 90]),
628
+ });
629
+ return { opacity: t([0, 0.3, 1], [1, 1, 0]), transform: transforms };
630
+ case 'flipOutY':
631
+ transforms.push({
632
+ perspective: 400,
633
+ rotateY: t([0, 0.3, 1], [0, -20, 90]),
634
+ });
635
+ return { opacity: t([0, 0.3, 1], [1, 1, 0]), transform: transforms };
636
+
637
+ // ROTATES
638
+ case 'rotateIn':
639
+ transforms.push({ rotate: t([0, 1], ['-200deg', '0deg']) });
640
+ return { opacity: animatedValue, transform: transforms };
641
+ case 'rotateInDownLeft':
642
+ transforms.push({ rotate: t([0, 1], ['-45deg', '0deg']) });
643
+ return { opacity: animatedValue, transform: transforms };
644
+ case 'rotateInDownRight':
645
+ transforms.push({ rotate: t([0, 1], ['45deg', '0deg']) });
646
+ return { opacity: animatedValue, transform: transforms };
647
+ case 'rotateInUpLeft':
648
+ transforms.push({ rotate: t([0, 1], ['45deg', '0deg']) });
649
+ return { opacity: animatedValue, transform: transforms };
650
+ case 'rotateInUpRight':
651
+ transforms.push({ rotate: t([0, 1], ['-45deg', '0deg']) });
652
+ return { opacity: animatedValue, transform: transforms };
653
+ case 'rotateOut':
654
+ transforms.push({ rotate: t([0, 1], ['0deg', '200deg']) });
655
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
656
+ case 'rotateOutDownLeft':
657
+ transforms.push({ rotate: t([0, 1], ['0deg', '45deg']) });
658
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
659
+ case 'rotateOutDownRight':
660
+ transforms.push({ rotate: t([0, 1], ['0deg', '-45deg']) });
661
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
662
+
663
+ // LIGHTSPEED
664
+ case 'lightSpeedInRight':
665
+ transforms.push({
666
+ translateX: t([0, 0.6, 0.8, 1], [500, 0, 0, 0]),
667
+ skewX: t([0, 0.6, 0.8, 1], ['-30deg', '20deg', '-5deg', '0deg']),
668
+ });
669
+ return { opacity: t([0, 0.6], [0, 1]), transform: transforms };
670
+ case 'lightSpeedInLeft':
671
+ transforms.push({
672
+ translateX: t([0, 0.6, 0.8, 1], [-500, 0, 0, 0]),
673
+ skewX: t([0, 0.6, 0.8, 1], ['30deg', '-20deg', '5deg', '0deg']),
674
+ });
675
+ return { opacity: t([0, 0.6], [0, 1]), transform: transforms };
676
+ case 'lightSpeedOutRight':
677
+ transforms.push({
678
+ translateX: t([0, 1], [0, 500]),
679
+ skewX: t([0, 1], ['0deg', '30deg']),
680
+ });
681
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
682
+ case 'lightSpeedOutLeft':
683
+ transforms.push({
684
+ translateX: t([0, 1], [0, -500]),
685
+ skewX: t([0, 1], ['0deg', '-30deg']),
686
+ });
687
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
688
+
689
+ // SPECIALS
690
+ case 'rollIn':
691
+ transforms.push({
692
+ translateX: t([0, 1], [-500, 0]),
693
+ rotate: t([0, 1], ['-120deg', '0deg']),
694
+ });
695
+ return { opacity: animatedValue, transform: transforms };
696
+ case 'rollOut':
697
+ transforms.push({
698
+ translateX: t([0, 1], [0, 500]),
699
+ rotate: t([0, 1], ['0deg', '120deg']),
700
+ });
701
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
702
+ case 'jackInTheBox':
703
+ transforms.push({
704
+ scale: t([0, 0.5, 0.7, 1], [0.1, 0.5, 0.5, 1]),
705
+ rotate: t([0, 0.5, 0.7, 1], ['30deg', '-10deg', '3deg', '0deg']),
706
+ });
707
+ return { opacity: animatedValue, transform: transforms };
708
+ case 'hinge':
709
+ transforms.push({
710
+ rotate: t(
711
+ [0, 0.2, 0.4, 0.6, 0.8, 1],
712
+ ['0deg', '80deg', '60deg', '80deg', '60deg', '0deg']
713
+ ),
714
+ translateY: t([0, 0.8, 1], [0, 0, 700]),
715
+ });
716
+ return { opacity: t([0, 0.8, 1], [1, 1, 0]), transform: transforms };
717
+ case 'spiralIn':
718
+ transforms.push({
719
+ scale: t([0, 1], [0, 1]),
720
+ rotate: t([0, 1], ['-720deg', '0deg']),
721
+ });
722
+ return { opacity: animatedValue, transform: transforms };
723
+ case 'spiralOut':
724
+ transforms.push({
725
+ scale: t([0, 1], [1, 0]),
726
+ rotate: t([0, 1], ['0deg', '720deg']),
727
+ });
728
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
729
+ case 'focusIn':
730
+ transforms.push({ scale: t([0, 1], [1.2, 1]) });
731
+ return { opacity: animatedValue, transform: transforms };
732
+ case 'focusOut':
733
+ transforms.push({ scale: t([0, 1], [1, 1.2]) });
734
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
735
+ case 'focusInLeft':
736
+ transforms.push({
737
+ translateX: t([0, 1], [-20, 0]),
738
+ scale: t([0, 1], [1.1, 1]),
739
+ });
740
+ return { opacity: animatedValue, transform: transforms };
741
+ case 'focusInRight':
742
+ transforms.push({
743
+ translateX: t([0, 1], [20, 0]),
744
+ scale: t([0, 1], [1.1, 1]),
745
+ });
746
+ return { opacity: animatedValue, transform: transforms };
747
+ case 'focusInUp':
748
+ transforms.push({
749
+ translateY: t([0, 1], [20, 0]),
750
+ scale: t([0, 1], [1.1, 1]),
751
+ });
752
+ return { opacity: animatedValue, transform: transforms };
753
+ case 'focusInDown':
754
+ transforms.push({
755
+ translateY: t([0, 1], [-20, 0]),
756
+ scale: t([0, 1], [1.1, 1]),
757
+ });
758
+ return { opacity: animatedValue, transform: transforms };
759
+
760
+ // CORNERS
761
+ case 'cornerInTopLeft':
762
+ transforms.push({
763
+ translateX: t([0, 1], [-500, 0]),
764
+ translateY: t([0, 1], [-500, 0]),
765
+ rotate: t([0, 1], ['-45deg', '0deg']),
766
+ });
767
+ return { opacity: animatedValue, transform: transforms };
768
+ case 'cornerInTopRight':
769
+ transforms.push({
770
+ translateX: t([0, 1], [500, 0]),
771
+ translateY: t([0, 1], [-500, 0]),
772
+ rotate: t([0, 1], ['45deg', '0deg']),
773
+ });
774
+ return { opacity: animatedValue, transform: transforms };
775
+ case 'cornerInBottomLeft':
776
+ transforms.push({
777
+ translateX: t([0, 1], [-500, 0]),
778
+ translateY: t([0, 1], [500, 0]),
779
+ rotate: t([0, 1], ['45deg', '0deg']),
780
+ });
781
+ return { opacity: animatedValue, transform: transforms };
782
+ case 'cornerInBottomRight':
783
+ transforms.push({
784
+ translateX: t([0, 1], [500, 0]),
785
+ translateY: t([0, 1], [500, 0]),
786
+ rotate: t([0, 1], ['-45deg', '0deg']),
787
+ });
788
+ return { opacity: animatedValue, transform: transforms };
789
+ case 'cornerOutTopLeft':
790
+ transforms.push({
791
+ translateX: t([0, 1], [0, -500]),
792
+ translateY: t([0, 1], [0, -500]),
793
+ rotate: t([0, 1], ['0deg', '-45deg']),
794
+ });
795
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
796
+ case 'cornerOutTopRight':
797
+ transforms.push({
798
+ translateX: t([0, 1], [0, 500]),
799
+ translateY: t([0, 1], [0, -500]),
800
+ rotate: t([0, 1], ['0deg', '45deg']),
801
+ });
802
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
803
+ case 'cornerOutBottomLeft':
804
+ transforms.push({
805
+ translateX: t([0, 1], [0, -500]),
806
+ translateY: t([0, 1], [0, 500]),
807
+ rotate: t([0, 1], ['0deg', '45deg']),
808
+ });
809
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
810
+ case 'cornerOutBottomRight':
811
+ transforms.push({
812
+ translateX: t([0, 1], [0, 500]),
813
+ translateY: t([0, 1], [0, 500]),
814
+ rotate: t([0, 1], ['0deg', '-45deg']),
815
+ });
816
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
817
+
818
+ // 3D DOOR & PERSPECTIVE
819
+ case 'perspectiveFlipX':
820
+ transforms.push({
821
+ perspective: 1000,
822
+ rotateX: t([0, 1], ['-90deg', '0deg']),
823
+ });
824
+ return { opacity: animatedValue, transform: transforms };
825
+ case 'perspectiveFlipY':
826
+ transforms.push({
827
+ perspective: 1000,
828
+ rotateY: t([0, 1], ['-90deg', '0deg']),
829
+ });
830
+ return { opacity: animatedValue, transform: transforms };
831
+ case 'doorOpenLeft':
832
+ transforms.push({
833
+ perspective: 1000,
834
+ rotateY: t([0, 1], ['0deg', '90deg']),
835
+ translateX: t([0, 1], [0, -100]),
836
+ });
837
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
838
+ case 'doorOpenRight':
839
+ transforms.push({
840
+ perspective: 1000,
841
+ rotateY: t([0, 1], ['0deg', '-90deg']),
842
+ translateX: t([0, 1], [0, 100]),
843
+ });
844
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
845
+ case 'doorCloseLeft':
846
+ transforms.push({
847
+ perspective: 1000,
848
+ rotateY: t([0, 1], ['90deg', '0deg']),
849
+ translateX: t([0, 1], [-100, 0]),
850
+ });
851
+ return { opacity: animatedValue, transform: transforms };
852
+ case 'doorCloseRight':
853
+ transforms.push({
854
+ perspective: 1000,
855
+ rotateY: t([0, 1], ['-90deg', '0deg']),
856
+ translateX: t([0, 1], [100, 0]),
857
+ });
858
+ return { opacity: animatedValue, transform: transforms };
859
+
860
+ // OTHERS
861
+ case 'stretchX':
862
+ transforms.push({ scaleX: t([0, 0.5, 1], [1, 1.5, 1]) });
863
+ return { transform: transforms };
864
+ case 'stretchY':
865
+ transforms.push({ scaleY: t([0, 0.5, 1], [1, 1.5, 1]) });
866
+ return { transform: transforms };
867
+ case 'skewIn':
868
+ transforms.push({ skewX: t([0, 1], ['45deg', '0deg']) });
869
+ return { opacity: animatedValue, transform: transforms };
870
+ case 'skewOut':
871
+ transforms.push({ skewX: t([0, 1], ['0deg', '45deg']) });
872
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
873
+ case 'skewInUp':
874
+ transforms.push({
875
+ skewY: t([0, 1], ['-45deg', '0deg']),
876
+ translateY: t([0, 1], [100, 0]),
877
+ });
878
+ return { opacity: animatedValue, transform: transforms };
879
+ case 'skewInDown':
880
+ transforms.push({
881
+ skewY: t([0, 1], ['45deg', '0deg']),
882
+ translateY: t([0, 1], [-100, 0]),
883
+ });
884
+ return { opacity: animatedValue, transform: transforms };
885
+ case 'perspectiveRotate':
886
+ transforms.push({
887
+ perspective: 400,
888
+ rotateX: t([0, 1], ['0deg', '180deg']),
889
+ });
890
+ return { transform: transforms };
891
+ case 'wave':
892
+ transforms.push({
893
+ translateY: t([0, 0.25, 0.5, 0.75, 1], [0, -20, 0, 20, 0]),
894
+ });
895
+ return { transform: transforms };
896
+ case 'blink':
897
+ return { opacity: t([0, 0.5, 1], [1, 0, 1]) };
898
+ case 'expandUp':
899
+ transforms.push({
900
+ scaleY: t([0, 1], [0, 1]),
901
+ translateY: t([0, 1], [50, 0]),
902
+ });
903
+ return { transform: transforms };
904
+ case 'expandDown':
905
+ transforms.push({
906
+ scaleY: t([0, 1], [0, 1]),
907
+ translateY: t([0, 1], [-50, 0]),
908
+ });
909
+ return { transform: transforms };
910
+ case 'expandLeft':
911
+ transforms.push({
912
+ scaleX: t([0, 1], [0, 1]),
913
+ translateX: t([0, 1], [50, 0]),
914
+ });
915
+ return { transform: transforms };
916
+ case 'expandRight':
917
+ transforms.push({
918
+ scaleX: t([0, 1], [0, 1]),
919
+ translateX: t([0, 1], [-50, 0]),
920
+ });
921
+ return { transform: transforms };
922
+ case 'squeezeX':
923
+ transforms.push({ scaleX: t([0, 0.5, 1], [1, 0.5, 1]) });
924
+ return { transform: transforms };
925
+ case 'squeezeY':
926
+ transforms.push({ scaleY: t([0, 0.5, 1], [1, 0.5, 1]) });
927
+ return { transform: transforms };
928
+ case 'wiggle':
929
+ transforms.push({
930
+ rotate: t(
931
+ [0, 0.25, 0.5, 0.75, 1],
932
+ ['0deg', '5deg', '0deg', '-5deg', '0deg']
933
+ ),
934
+ });
935
+ return { transform: transforms };
936
+ case 'shiver':
937
+ transforms.push({
938
+ scale: t(
939
+ [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
940
+ [1, 1.05, 0.95, 1.05, 0.95, 1, 1.05, 0.95, 1.05, 0.95, 1]
941
+ ),
942
+ });
943
+ return { transform: transforms };
944
+ case 'shutterIn':
945
+ transforms.push({ scaleY: t([0, 1], [0, 1]) });
946
+ return { opacity: animatedValue, transform: transforms };
947
+ case 'shutterOut':
948
+ transforms.push({ scaleY: t([0, 1], [1, 0]) });
949
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
950
+ case 'contractIn':
951
+ transforms.push({ scale: t([0, 1], [1.5, 1]) });
952
+ return { opacity: animatedValue, transform: transforms };
953
+ case 'contractOut':
954
+ transforms.push({ scale: t([0, 1], [1, 1.5]) });
955
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
956
+ case 'puffIn':
957
+ transforms.push({ scale: t([0, 1], [2, 1]), perspective: 1000 });
958
+ return { opacity: animatedValue, transform: transforms };
959
+ case 'puffOut':
960
+ transforms.push({ scale: t([0, 1], [1, 2]), perspective: 1000 });
961
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
962
+ case 'flingInLeft':
963
+ transforms.push({ translateX: t([0, 1], [-500, 0]) });
964
+ return { transform: transforms };
965
+ case 'flingInRight':
966
+ transforms.push({ translateX: t([0, 1], [500, 0]) });
967
+ return { transform: transforms };
968
+ case 'flingInUp':
969
+ transforms.push({ translateY: t([0, 1], [500, 0]) });
970
+ return { transform: transforms };
971
+ case 'flingInDown':
972
+ transforms.push({ translateY: t([0, 1], [-500, 0]) });
973
+ return { transform: transforms };
974
+ case 'float':
975
+ transforms.push({ translateY: t([0, 0.5, 1], [0, -10, 0]) });
976
+ return { transform: transforms };
977
+ case 'beat':
978
+ transforms.push({ scale: t([0, 0.5, 1], [1, 1.1, 1]) });
979
+ return { transform: transforms };
980
+ case 'bounceInTopLeft':
981
+ transforms.push({
982
+ translateX: t([0, 1], [-500, 0]),
983
+ translateY: t([0, 1], [-500, 0]),
984
+ });
985
+ return { opacity: animatedValue, transform: transforms };
986
+ case 'bounceInTopRight':
987
+ transforms.push({
988
+ translateX: t([0, 1], [500, 0]),
989
+ translateY: t([0, 1], [-500, 0]),
990
+ });
991
+ return { opacity: animatedValue, transform: transforms };
992
+ case 'bounceInBottomLeft':
993
+ transforms.push({
994
+ translateX: t([0, 1], [-500, 0]),
995
+ translateY: t([0, 1], [500, 0]),
996
+ });
997
+ return { opacity: animatedValue, transform: transforms };
998
+ case 'bounceInBottomRight':
999
+ transforms.push({
1000
+ translateX: t([0, 1], [500, 0]),
1001
+ translateY: t([0, 1], [500, 0]),
1002
+ });
1003
+ return { opacity: animatedValue, transform: transforms };
1004
+ case 'zoomInRotateLeft':
1005
+ transforms.push({
1006
+ scale: t([0, 1], [0, 1]),
1007
+ rotate: t([0, 1], ['-45deg', '0deg']),
1008
+ });
1009
+ return { opacity: animatedValue, transform: transforms };
1010
+ case 'zoomInRotateRight':
1011
+ transforms.push({
1012
+ scale: t([0, 1], [0, 1]),
1013
+ rotate: t([0, 1], ['45deg', '0deg']),
1014
+ });
1015
+ return { opacity: animatedValue, transform: transforms };
1016
+ case 'swingRotate':
1017
+ transforms.push({
1018
+ rotate: t(
1019
+ [0, 0.2, 0.4, 0.6, 0.8, 1],
1020
+ ['0deg', '45deg', '-45deg', '30deg', '-30deg', '0deg']
1021
+ ),
1022
+ });
1023
+ return { transform: transforms };
1024
+ case 'perspectiveSlideInLeft':
1025
+ transforms.push({
1026
+ perspective: 1000,
1027
+ rotateY: t([0, 1], ['-45deg', '0deg']),
1028
+ translateX: t([0, 1], [-200, 0]),
1029
+ });
1030
+ return { opacity: animatedValue, transform: transforms };
1031
+ case 'perspectiveSlideInRight':
1032
+ transforms.push({
1033
+ perspective: 1000,
1034
+ rotateY: t([0, 1], ['45deg', '0deg']),
1035
+ translateX: t([0, 1], [200, 0]),
1036
+ });
1037
+ return { opacity: animatedValue, transform: transforms };
1038
+ case 'tiltLeft':
1039
+ transforms.push({
1040
+ perspective: 1000,
1041
+ rotateY: t([0, 0.5, 1], ['0deg', '-15deg', '0deg']),
1042
+ });
1043
+ return { transform: transforms };
1044
+ case 'tiltRight':
1045
+ transforms.push({
1046
+ perspective: 1000,
1047
+ rotateY: t([0, 0.5, 1], ['0deg', '15deg', '0deg']),
1048
+ });
1049
+ return { transform: transforms };
1050
+ case 'squash':
1051
+ transforms.push({
1052
+ scaleX: t([0, 0.5, 1], [1, 1.3, 1]),
1053
+ scaleY: t([0, 0.5, 1], [1, 0.7, 1]),
1054
+ });
1055
+ return { transform: transforms };
1056
+ case 'vibrate':
1057
+ transforms.push({
1058
+ translateX: t([0, 0.2, 0.4, 0.6, 0.8, 1], [0, -2, 2, -2, 2, 0]),
1059
+ translateY: t([0, 0.2, 0.4, 0.6, 0.8, 1], [0, 2, -2, 2, -2, 0]),
1060
+ });
1061
+ return { transform: transforms };
1062
+ case 'sway':
1063
+ transforms.push({
1064
+ rotate: t([0, 0.5, 1], ['-5deg', '5deg', '-5deg']),
1065
+ translateX: t([0, 0.5, 1], [-10, 10, -10]),
1066
+ });
1067
+ return { transform: transforms };
1068
+ case 'floatLeft':
1069
+ transforms.push({
1070
+ translateX: t([0, 0.5, 1], [0, -20, 0]),
1071
+ translateY: t([0, 0.5, 1], [0, -10, 0]),
1072
+ });
1073
+ return { transform: transforms };
1074
+ case 'floatRight':
1075
+ transforms.push({
1076
+ translateX: t([0, 0.5, 1], [0, 20, 0]),
1077
+ translateY: t([0, 0.5, 1], [0, -10, 0]),
1078
+ });
1079
+ return { transform: transforms };
1080
+
1081
+ // NEW VARIETY
1082
+ case 'newspaper':
1083
+ transforms.push({
1084
+ scale: t([0, 1], [0, 1]),
1085
+ rotate: t([0, 1], ['0deg', '720deg']),
1086
+ });
1087
+ return { opacity: animatedValue, transform: transforms };
1088
+ case 'popIn':
1089
+ transforms.push({ scale: t([0, 0.7, 1], [0, 1.1, 1]) });
1090
+ return { opacity: animatedValue, transform: transforms };
1091
+ case 'popOut':
1092
+ transforms.push({ scale: t([0, 1], [1, 0]) });
1093
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1094
+ case 'popInUp':
1095
+ transforms.push({
1096
+ scale: t([0, 0.7, 1], [0, 1.1, 1]),
1097
+ translateY: t([0, 1], [100, 0]),
1098
+ });
1099
+ return { opacity: animatedValue, transform: transforms };
1100
+ case 'popInDown':
1101
+ transforms.push({
1102
+ scale: t([0, 0.7, 1], [0, 1.1, 1]),
1103
+ translateY: t([0, 1], [-100, 0]),
1104
+ });
1105
+ return { opacity: animatedValue, transform: transforms };
1106
+ case 'popInLeft':
1107
+ transforms.push({
1108
+ scale: t([0, 0.7, 1], [0, 1.1, 1]),
1109
+ translateX: t([0, 1], [-100, 0]),
1110
+ });
1111
+ return { opacity: animatedValue, transform: transforms };
1112
+ case 'popInRight':
1113
+ transforms.push({
1114
+ scale: t([0, 0.7, 1], [0, 1.1, 1]),
1115
+ translateX: t([0, 1], [100, 0]),
1116
+ });
1117
+ return { opacity: animatedValue, transform: transforms };
1118
+
1119
+ // SKATE
1120
+ case 'skateInLeft':
1121
+ transforms.push({
1122
+ translateX: t([0, 1], [-500, 0]),
1123
+ rotate: t([0, 1], ['-15deg', '0deg']),
1124
+ });
1125
+ return { opacity: animatedValue, transform: transforms };
1126
+ case 'skateInRight':
1127
+ transforms.push({
1128
+ translateX: t([0, 1], [500, 0]),
1129
+ rotate: t([0, 1], ['15deg', '0deg']),
1130
+ });
1131
+ return { opacity: animatedValue, transform: transforms };
1132
+ case 'skateOutLeft':
1133
+ transforms.push({
1134
+ translateX: t([0, 1], [0, -500]),
1135
+ rotate: t([0, 1], ['0deg', '-15deg']),
1136
+ });
1137
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1138
+ case 'skateOutRight':
1139
+ transforms.push({
1140
+ translateX: t([0, 1], [0, 500]),
1141
+ rotate: t([0, 1], ['0deg', '15deg']),
1142
+ });
1143
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1144
+
1145
+ // DRIPS & DROPS
1146
+ case 'drip':
1147
+ transforms.push({
1148
+ translateY: t([0, 0.5, 1], [0, 20, 40]),
1149
+ scaleY: t([0, 0.5, 1], [1, 1.5, 1]),
1150
+ });
1151
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1152
+ case 'dropIn':
1153
+ transforms.push({
1154
+ translateY: t([0, 0.8, 1], [-500, 0, 0]),
1155
+ scaleY: t([0, 0.8, 1], [1.5, 0.8, 1]),
1156
+ });
1157
+ return { transform: transforms };
1158
+ case 'dropOut':
1159
+ transforms.push({
1160
+ translateY: t([0, 1], [0, 500]),
1161
+ scaleY: t([0, 1], [1, 1.5]),
1162
+ });
1163
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1164
+ case 'hangIn':
1165
+ transforms.push({
1166
+ rotate: t([0, 0.5, 1], ['100deg', '-20deg', '0deg']),
1167
+ translateY: t([0, 1], [-200, 0]),
1168
+ });
1169
+ return { opacity: animatedValue, transform: transforms };
1170
+ case 'hangOut':
1171
+ transforms.push({
1172
+ rotate: t([0, 1], ['0deg', '100deg']),
1173
+ translateY: t([0, 1], [0, 200]),
1174
+ });
1175
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1176
+
1177
+ // REVEALS
1178
+ case 'revealUp':
1179
+ transforms.push({ translateY: t([0, 1], [100, 0]) });
1180
+ return { opacity: animatedValue, transform: transforms };
1181
+ case 'revealDown':
1182
+ transforms.push({ translateY: t([0, 1], [-100, 0]) });
1183
+ return { opacity: animatedValue, transform: transforms };
1184
+ case 'revealLeft':
1185
+ transforms.push({ translateX: t([0, 1], [100, 0]) });
1186
+ return { opacity: animatedValue, transform: transforms };
1187
+ case 'revealRight':
1188
+ transforms.push({ translateX: t([0, 1], [-100, 0]) });
1189
+ return { opacity: animatedValue, transform: transforms };
1190
+
1191
+ // INFINITE VARIANTS
1192
+ case 'bounceInfinite':
1193
+ transforms.push({ translateY: t([0, 0.5, 1], [0, -20, 0]) });
1194
+ return { transform: transforms };
1195
+ case 'rotateInfinite':
1196
+ transforms.push({ rotate: t([0, 1], ['0deg', '360deg']) });
1197
+ return { transform: transforms };
1198
+ case 'slideInfinite':
1199
+ transforms.push({ translateX: t([0, 0.5, 1], [-20, 20, -20]) });
1200
+ return { transform: transforms };
1201
+ case 'flipInfiniteX':
1202
+ transforms.push({
1203
+ perspective: 400,
1204
+ rotateX: t([0, 1], ['0deg', '360deg']),
1205
+ });
1206
+ return { transform: transforms };
1207
+ case 'flipInfiniteY':
1208
+ transforms.push({
1209
+ perspective: 400,
1210
+ rotateY: t([0, 1], ['0deg', '360deg']),
1211
+ });
1212
+ return { transform: transforms };
1213
+
1214
+ // CONTINUOUS
1215
+ case 'shimmer':
1216
+ return { opacity: t([0, 0.5, 1], [1, 0.3, 1]) };
1217
+ case 'dance':
1218
+ transforms.push({
1219
+ rotate: t(
1220
+ [0, 0.25, 0.5, 0.75, 1],
1221
+ ['0deg', '15deg', '0deg', '-15deg', '0deg']
1222
+ ),
1223
+ translateY: t([0, 0.5, 1], [0, -10, 0]),
1224
+ });
1225
+ return { transform: transforms };
1226
+ case 'ghost':
1227
+ transforms.push({
1228
+ translateY: t([0, 0.5, 1], [0, -15, 0]),
1229
+ scale: t([0, 0.5, 1], [1, 1.1, 1]),
1230
+ });
1231
+ return {
1232
+ opacity: t([0, 0.5, 1], [0.8, 0.4, 0.8]),
1233
+ transform: transforms,
1234
+ };
1235
+ case 'smoke':
1236
+ transforms.push({
1237
+ translateY: t([0, 1], [0, -50]),
1238
+ scale: t([0, 1], [1, 1.5]),
1239
+ rotate: t([0, 1], ['0deg', '20deg']),
1240
+ });
1241
+ return { opacity: t([0, 1], [0.8, 0]), transform: transforms };
1242
+
1243
+ // TILTS
1244
+ case 'tiltInTop':
1245
+ transforms.push({
1246
+ perspective: 1000,
1247
+ rotateX: t([0, 1], ['-30deg', '0deg']),
1248
+ translateY: t([0, 1], [-100, 0]),
1249
+ });
1250
+ return { opacity: animatedValue, transform: transforms };
1251
+ case 'tiltInBottom':
1252
+ transforms.push({
1253
+ perspective: 1000,
1254
+ rotateX: t([0, 1], ['30deg', '0deg']),
1255
+ translateY: t([0, 1], [100, 0]),
1256
+ });
1257
+ return { opacity: animatedValue, transform: transforms };
1258
+ case 'scaleIn':
1259
+ transforms.push({ scale: t([0, 1], [0.5, 1]) });
1260
+ return { opacity: animatedValue, transform: transforms };
1261
+ case 'scaleOut':
1262
+ transforms.push({ scale: t([0, 1], [1, 0.5]) });
1263
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1264
+
1265
+ // SPACE
1266
+ case 'orbit':
1267
+ transforms.push({
1268
+ translateX: t([0, 0.25, 0.5, 0.75, 1], [0, 50, 0, -50, 0]),
1269
+ translateY: t([0, 0.25, 0.5, 0.75, 1], [-20, 0, 20, 0, -20]),
1270
+ scale: t([0, 0.5, 1], [1, 0.7, 1]),
1271
+ });
1272
+ return { transform: transforms };
1273
+ case 'ufo':
1274
+ transforms.push({
1275
+ translateX: t([0, 0.1, 0.2, 0.5, 0.8, 1], [0, 50, -50, 100, -100, 0]),
1276
+ translateY: t([0, 0.5, 1], [0, -10, 0]),
1277
+ });
1278
+ return { transform: transforms };
1279
+
1280
+ // EXTRA
1281
+ case 'foldIn':
1282
+ transforms.push({
1283
+ perspective: 1000,
1284
+ rotateX: t([0, 1], ['-90deg', '0deg']),
1285
+ });
1286
+ return { opacity: animatedValue, transform: transforms };
1287
+ case 'foldOut':
1288
+ transforms.push({
1289
+ perspective: 1000,
1290
+ rotateX: t([0, 1], ['0deg', '90deg']),
1291
+ });
1292
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1293
+ case 'unfoldIn':
1294
+ transforms.push({
1295
+ perspective: 1000,
1296
+ rotateY: t([0, 1], ['-90deg', '0deg']),
1297
+ });
1298
+ return { opacity: animatedValue, transform: transforms };
1299
+ case 'unfoldOut':
1300
+ transforms.push({
1301
+ perspective: 1000,
1302
+ rotateY: t([0, 1], ['0deg', '90deg']),
1303
+ });
1304
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1305
+
1306
+ case 'rollInLeft':
1307
+ transforms.push({
1308
+ translateX: t([0, 1], [-500, 0]),
1309
+ rotate: t([0, 1], ['-360deg', '0deg']),
1310
+ });
1311
+ return { opacity: animatedValue, transform: transforms };
1312
+ case 'rollInRight':
1313
+ transforms.push({
1314
+ translateX: t([0, 1], [500, 0]),
1315
+ rotate: t([0, 1], ['360deg', '0deg']),
1316
+ });
1317
+ return { opacity: animatedValue, transform: transforms };
1318
+
1319
+ case 'jitter':
1320
+ transforms.push({
1321
+ translateX: t(
1322
+ [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
1323
+ [0, 5, -5, 3, -3, 5, -2, 4, -4, 2, 0]
1324
+ ),
1325
+ translateY: t(
1326
+ [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
1327
+ [0, -3, 3, -2, 2, -4, 1, -3, 3, -1, 0]
1328
+ ),
1329
+ });
1330
+ return { transform: transforms };
1331
+ case 'glitch':
1332
+ transforms.push({
1333
+ translateX: t([0, 0.1, 0.2, 0.5, 0.8, 1], [0, 10, -10, 5, -5, 0]),
1334
+ skewX: t(
1335
+ [0, 0.2, 0.4, 0.6, 1],
1336
+ ['0deg', '10deg', '-10deg', '5deg', '0deg']
1337
+ ),
1338
+ });
1339
+ return {
1340
+ opacity: t([0, 0.1, 0.2, 0.3, 1], [1, 0.5, 1, 0.7, 1]),
1341
+ transform: transforms,
1342
+ };
1343
+
1344
+ case 'popOutUp':
1345
+ transforms.push({
1346
+ scale: t([0, 0.3, 1], [1, 1.1, 0]),
1347
+ translateY: t([0, 1], [0, -100]),
1348
+ });
1349
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1350
+ case 'popOutDown':
1351
+ transforms.push({
1352
+ scale: t([0, 0.3, 1], [1, 1.1, 0]),
1353
+ translateY: t([0, 1], [0, 100]),
1354
+ });
1355
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1356
+ case 'vibrateFast':
1357
+ case 'vibrateSlow':
1358
+ transforms.push({
1359
+ translateX: t([0, 0.2, 0.4, 0.6, 0.8, 1], [0, -2, 2, -2, 2, 0]),
1360
+ });
1361
+ return { transform: transforms };
1362
+ case 'tiltOutTop':
1363
+ transforms.push({
1364
+ perspective: 1000,
1365
+ rotateX: t([0, 1], ['0deg', '-30deg']),
1366
+ translateY: t([0, 1], [0, -100]),
1367
+ });
1368
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1369
+ case 'spinIn':
1370
+ transforms.push({
1371
+ rotate: t([0, 1], ['-360deg', '0deg']),
1372
+ scale: t([0, 1], [0, 1]),
1373
+ });
1374
+ return { opacity: animatedValue, transform: transforms };
1375
+ case 'spinOut':
1376
+ transforms.push({
1377
+ rotate: t([0, 1], ['0deg', '360deg']),
1378
+ scale: t([0, 1], [1, 0]),
1379
+ });
1380
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1381
+ case 'bounceTop':
1382
+ transforms.push({ translateY: t([0, 0.5, 1], [0, -30, 0]) });
1383
+ return { transform: transforms };
1384
+ case 'bounceBottom':
1385
+ transforms.push({ translateY: t([0, 0.5, 1], [0, 30, 0]) });
1386
+ return { transform: transforms };
1387
+ case 'bounceLeft':
1388
+ transforms.push({ translateX: t([0, 0.5, 1], [0, -30, 0]) });
1389
+ return { transform: transforms };
1390
+ case 'bounceRight':
1391
+ transforms.push({ translateX: t([0, 0.5, 1], [0, 30, 0]) });
1392
+ return { transform: transforms };
1393
+ case 'fallIn':
1394
+ transforms.push({
1395
+ translateY: t([0, 1], [-500, 0]),
1396
+ rotate: t([0, 1], ['15deg', '0deg']),
1397
+ });
1398
+ return { transform: transforms };
1399
+ case 'fallOut':
1400
+ transforms.push({
1401
+ translateY: t([0, 1], [0, 500]),
1402
+ rotate: t([0, 1], ['0deg', '15deg']),
1403
+ });
1404
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1405
+ case 'raiseIn':
1406
+ transforms.push({
1407
+ translateY: t([0, 1], [500, 0]),
1408
+ rotate: t([0, 1], ['-15deg', '0deg']),
1409
+ });
1410
+ return { transform: transforms };
1411
+ case 'raiseOut':
1412
+ transforms.push({
1413
+ translateY: t([0, 1], [0, -500]),
1414
+ rotate: t([0, 1], ['0deg', '-15deg']),
1415
+ });
1416
+ return { opacity: t([0, 1], [1, 0]), transform: transforms };
1417
+
1418
+ default:
1419
+ return { opacity: 1 };
1420
+ }
1421
+ };