this repo has no description
at main 309 lines 6.2 kB view raw
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}