UNPKG

3.94 kBJavaScriptView Raw
1export { identity as linear } from '../internal';
2
3/*
4Adapted from https://github.com/mattdesl
5Distributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md
6*/
7function backInOut(t) {
8 const s = 1.70158 * 1.525;
9 if ((t *= 2) < 1)
10 return 0.5 * (t * t * ((s + 1) * t - s));
11 return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);
12}
13function backIn(t) {
14 const s = 1.70158;
15 return t * t * ((s + 1) * t - s);
16}
17function backOut(t) {
18 const s = 1.70158;
19 return --t * t * ((s + 1) * t + s) + 1;
20}
21function bounceOut(t) {
22 const a = 4.0 / 11.0;
23 const b = 8.0 / 11.0;
24 const c = 9.0 / 10.0;
25 const ca = 4356.0 / 361.0;
26 const cb = 35442.0 / 1805.0;
27 const cc = 16061.0 / 1805.0;
28 const t2 = t * t;
29 return t < a
30 ? 7.5625 * t2
31 : t < b
32 ? 9.075 * t2 - 9.9 * t + 3.4
33 : t < c
34 ? ca * t2 - cb * t + cc
35 : 10.8 * t * t - 20.52 * t + 10.72;
36}
37function bounceInOut(t) {
38 return t < 0.5
39 ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))
40 : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;
41}
42function bounceIn(t) {
43 return 1.0 - bounceOut(1.0 - t);
44}
45function circInOut(t) {
46 if ((t *= 2) < 1)
47 return -0.5 * (Math.sqrt(1 - t * t) - 1);
48 return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
49}
50function circIn(t) {
51 return 1.0 - Math.sqrt(1.0 - t * t);
52}
53function circOut(t) {
54 return Math.sqrt(1 - --t * t);
55}
56function cubicInOut(t) {
57 return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;
58}
59function cubicIn(t) {
60 return t * t * t;
61}
62function cubicOut(t) {
63 const f = t - 1.0;
64 return f * f * f + 1.0;
65}
66function elasticInOut(t) {
67 return t < 0.5
68 ? 0.5 *
69 Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *
70 Math.pow(2.0, 10.0 * (2.0 * t - 1.0))
71 : 0.5 *
72 Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *
73 Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +
74 1.0;
75}
76function elasticIn(t) {
77 return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));
78}
79function elasticOut(t) {
80 return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);
81}
82function expoInOut(t) {
83 return t === 0.0 || t === 1.0
84 ? t
85 : t < 0.5
86 ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)
87 : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;
88}
89function expoIn(t) {
90 return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));
91}
92function expoOut(t) {
93 return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);
94}
95function quadInOut(t) {
96 t /= 0.5;
97 if (t < 1)
98 return 0.5 * t * t;
99 t--;
100 return -0.5 * (t * (t - 2) - 1);
101}
102function quadIn(t) {
103 return t * t;
104}
105function quadOut(t) {
106 return -t * (t - 2.0);
107}
108function quartInOut(t) {
109 return t < 0.5
110 ? +8.0 * Math.pow(t, 4.0)
111 : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;
112}
113function quartIn(t) {
114 return Math.pow(t, 4.0);
115}
116function quartOut(t) {
117 return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;
118}
119function quintInOut(t) {
120 if ((t *= 2) < 1)
121 return 0.5 * t * t * t * t * t;
122 return 0.5 * ((t -= 2) * t * t * t * t + 2);
123}
124function quintIn(t) {
125 return t * t * t * t * t;
126}
127function quintOut(t) {
128 return --t * t * t * t * t + 1;
129}
130function sineInOut(t) {
131 return -0.5 * (Math.cos(Math.PI * t) - 1);
132}
133function sineIn(t) {
134 const v = Math.cos(t * Math.PI * 0.5);
135 if (Math.abs(v) < 1e-14)
136 return 1;
137 else
138 return 1 - v;
139}
140function sineOut(t) {
141 return Math.sin((t * Math.PI) / 2);
142}
143
144export { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };