this repo has no description
1/*
2Adapted from https://github.com/mattdesl
3Distributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md
4*/
5export { identity as linear } from '../internal/index.js';
6
7/**
8 * https://svelte.dev/docs/svelte-easing
9 * @param {number} t
10 * @returns {number}
11 */
12export function backInOut(t) {
13 const s = 1.70158 * 1.525;
14 if ((t *= 2) < 1) return 0.5 * (t * t * ((s + 1) * t - s));
15 return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);
16}
17
18/**
19 * https://svelte.dev/docs/svelte-easing
20 * @param {number} t
21 * @returns {number}
22 */
23export function backIn(t) {
24 const s = 1.70158;
25 return t * t * ((s + 1) * t - s);
26}
27
28/**
29 * https://svelte.dev/docs/svelte-easing
30 * @param {number} t
31 * @returns {number}
32 */
33export function backOut(t) {
34 const s = 1.70158;
35 return --t * t * ((s + 1) * t + s) + 1;
36}
37
38/**
39 * https://svelte.dev/docs/svelte-easing
40 * @param {number} t
41 * @returns {number}
42 */
43export function bounceOut(t) {
44 const a = 4.0 / 11.0;
45 const b = 8.0 / 11.0;
46 const c = 9.0 / 10.0;
47 const ca = 4356.0 / 361.0;
48 const cb = 35442.0 / 1805.0;
49 const cc = 16061.0 / 1805.0;
50 const t2 = t * t;
51 return t < a
52 ? 7.5625 * t2
53 : t < b
54 ? 9.075 * t2 - 9.9 * t + 3.4
55 : t < c
56 ? ca * t2 - cb * t + cc
57 : 10.8 * t * t - 20.52 * t + 10.72;
58}
59
60/**
61 * https://svelte.dev/docs/svelte-easing
62 * @param {number} t
63 * @returns {number}
64 */
65export function bounceInOut(t) {
66 return t < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;
67}
68
69/**
70 * https://svelte.dev/docs/svelte-easing
71 * @param {number} t
72 * @returns {number}
73 */
74export function bounceIn(t) {
75 return 1.0 - bounceOut(1.0 - t);
76}
77
78/**
79 * https://svelte.dev/docs/svelte-easing
80 * @param {number} t
81 * @returns {number}
82 */
83export function circInOut(t) {
84 if ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1);
85 return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
86}
87
88/**
89 * https://svelte.dev/docs/svelte-easing
90 * @param {number} t
91 * @returns {number}
92 */
93export function circIn(t) {
94 return 1.0 - Math.sqrt(1.0 - t * t);
95}
96
97/**
98 * https://svelte.dev/docs/svelte-easing
99 * @param {number} t
100 * @returns {number}
101 */
102export function circOut(t) {
103 return Math.sqrt(1 - --t * t);
104}
105
106/**
107 * https://svelte.dev/docs/svelte-easing
108 * @param {number} t
109 * @returns {number}
110 */
111export function cubicInOut(t) {
112 return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;
113}
114
115/**
116 * https://svelte.dev/docs/svelte-easing
117 * @param {number} t
118 * @returns {number}
119 */
120export function cubicIn(t) {
121 return t * t * t;
122}
123
124/**
125 * https://svelte.dev/docs/svelte-easing
126 * @param {number} t
127 * @returns {number}
128 */
129export function cubicOut(t) {
130 const f = t - 1.0;
131 return f * f * f + 1.0;
132}
133
134/**
135 * https://svelte.dev/docs/svelte-easing
136 * @param {number} t
137 * @returns {number}
138 */
139export function elasticInOut(t) {
140 return t < 0.5
141 ? 0.5 * Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0))
142 : 0.5 *
143 Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *
144 Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +
145 1.0;
146}
147
148/**
149 * https://svelte.dev/docs/svelte-easing
150 * @param {number} t
151 * @returns {number}
152 */
153export function elasticIn(t) {
154 return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));
155}
156
157/**
158 * https://svelte.dev/docs/svelte-easing
159 * @param {number} t
160 * @returns {number}
161 */
162export function elasticOut(t) {
163 return Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0;
164}
165
166/**
167 * https://svelte.dev/docs/svelte-easing
168 * @param {number} t
169 * @returns {number}
170 */
171export function expoInOut(t) {
172 return t === 0.0 || t === 1.0
173 ? t
174 : t < 0.5
175 ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)
176 : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;
177}
178
179/**
180 * https://svelte.dev/docs/svelte-easing
181 * @param {number} t
182 * @returns {number}
183 */
184export function expoIn(t) {
185 return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));
186}
187
188/**
189 * https://svelte.dev/docs/svelte-easing
190 * @param {number} t
191 * @returns {number}
192 */
193export function expoOut(t) {
194 return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);
195}
196
197/**
198 * https://svelte.dev/docs/svelte-easing
199 * @param {number} t
200 * @returns {number}
201 */
202export function quadInOut(t) {
203 t /= 0.5;
204 if (t < 1) return 0.5 * t * t;
205 t--;
206 return -0.5 * (t * (t - 2) - 1);
207}
208
209/**
210 * https://svelte.dev/docs/svelte-easing
211 * @param {number} t
212 * @returns {number}
213 */
214export function quadIn(t) {
215 return t * t;
216}
217
218/**
219 * https://svelte.dev/docs/svelte-easing
220 * @param {number} t
221 * @returns {number}
222 */
223export function quadOut(t) {
224 return -t * (t - 2.0);
225}
226
227/**
228 * https://svelte.dev/docs/svelte-easing
229 * @param {number} t
230 * @returns {number}
231 */
232export function quartInOut(t) {
233 return t < 0.5 ? +8.0 * Math.pow(t, 4.0) : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;
234}
235
236/**
237 * https://svelte.dev/docs/svelte-easing
238 * @param {number} t
239 * @returns {number}
240 */
241export function quartIn(t) {
242 return Math.pow(t, 4.0);
243}
244
245/**
246 * https://svelte.dev/docs/svelte-easing
247 * @param {number} t
248 * @returns {number}
249 */
250export function quartOut(t) {
251 return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;
252}
253
254/**
255 * https://svelte.dev/docs/svelte-easing
256 * @param {number} t
257 * @returns {number}
258 */
259export function quintInOut(t) {
260 if ((t *= 2) < 1) return 0.5 * t * t * t * t * t;
261 return 0.5 * ((t -= 2) * t * t * t * t + 2);
262}
263
264/**
265 * https://svelte.dev/docs/svelte-easing
266 * @param {number} t
267 * @returns {number}
268 */
269export function quintIn(t) {
270 return t * t * t * t * t;
271}
272
273/**
274 * https://svelte.dev/docs/svelte-easing
275 * @param {number} t
276 * @returns {number}
277 */
278export function quintOut(t) {
279 return --t * t * t * t * t + 1;
280}
281
282/**
283 * https://svelte.dev/docs/svelte-easing
284 * @param {number} t
285 * @returns {number}
286 */
287export function sineInOut(t) {
288 return -0.5 * (Math.cos(Math.PI * t) - 1);
289}
290
291/**
292 * https://svelte.dev/docs/svelte-easing
293 * @param {number} t
294 * @returns {number}
295 */
296export function sineIn(t) {
297 const v = Math.cos(t * Math.PI * 0.5);
298 if (Math.abs(v) < 1e-14) return 1;
299 else return 1 - v;
300}
301
302/**
303 * https://svelte.dev/docs/svelte-easing
304 * @param {number} t
305 * @returns {number}
306 */
307export function sineOut(t) {
308 return Math.sin((t * Math.PI) / 2);
309}