|
|
|
function backInOut(t) { |
|
const s = 1.70158 * 1.525; |
|
if ((t *= 2) < 1) return 0.5 * (t * t * ((s + 1) * t - s)); |
|
return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2); |
|
} |
|
function backIn(t) { |
|
const s = 1.70158; |
|
return t * t * ((s + 1) * t - s); |
|
} |
|
function backOut(t) { |
|
const s = 1.70158; |
|
return --t * t * ((s + 1) * t + s) + 1; |
|
} |
|
function bounceOut(t) { |
|
const a = 4 / 11; |
|
const b = 8 / 11; |
|
const c = 9 / 10; |
|
const ca = 4356 / 361; |
|
const cb = 35442 / 1805; |
|
const cc = 16061 / 1805; |
|
const t2 = t * t; |
|
return t < a ? 7.5625 * t2 : t < b ? 9.075 * t2 - 9.9 * t + 3.4 : t < c ? ca * t2 - cb * t + cc : 10.8 * t * t - 20.52 * t + 10.72; |
|
} |
|
function bounceInOut(t) { |
|
return t < 0.5 ? 0.5 * (1 - bounceOut(1 - t * 2)) : 0.5 * bounceOut(t * 2 - 1) + 0.5; |
|
} |
|
function bounceIn(t) { |
|
return 1 - bounceOut(1 - t); |
|
} |
|
function circInOut(t) { |
|
if ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1); |
|
return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); |
|
} |
|
function circIn(t) { |
|
return 1 - Math.sqrt(1 - t * t); |
|
} |
|
function circOut(t) { |
|
return Math.sqrt(1 - --t * t); |
|
} |
|
function cubicInOut(t) { |
|
return t < 0.5 ? 4 * t * t * t : 0.5 * Math.pow(2 * t - 2, 3) + 1; |
|
} |
|
function cubicIn(t) { |
|
return t * t * t; |
|
} |
|
function cubicOut(t) { |
|
const f = t - 1; |
|
return f * f * f + 1; |
|
} |
|
function elasticInOut(t) { |
|
return t < 0.5 ? 0.5 * Math.sin(13 * Math.PI / 2 * 2 * t) * Math.pow(2, 10 * (2 * t - 1)) : 0.5 * Math.sin(-13 * Math.PI / 2 * (2 * t - 1 + 1)) * Math.pow(2, -10 * (2 * t - 1)) + 1; |
|
} |
|
function elasticIn(t) { |
|
return Math.sin(13 * t * Math.PI / 2) * Math.pow(2, 10 * (t - 1)); |
|
} |
|
function elasticOut(t) { |
|
return Math.sin(-13 * (t + 1) * Math.PI / 2) * Math.pow(2, -10 * t) + 1; |
|
} |
|
function expoInOut(t) { |
|
return t === 0 || t === 1 ? t : t < 0.5 ? 0.5 * Math.pow(2, 20 * t - 10) : -0.5 * Math.pow(2, 10 - t * 20) + 1; |
|
} |
|
function expoIn(t) { |
|
return t === 0 ? t : Math.pow(2, 10 * (t - 1)); |
|
} |
|
function expoOut(t) { |
|
return t === 1 ? t : 1 - Math.pow(2, -10 * t); |
|
} |
|
function quadInOut(t) { |
|
t /= 0.5; |
|
if (t < 1) return 0.5 * t * t; |
|
t--; |
|
return -0.5 * (t * (t - 2) - 1); |
|
} |
|
function quadIn(t) { |
|
return t * t; |
|
} |
|
function quadOut(t) { |
|
return -t * (t - 2); |
|
} |
|
function quartInOut(t) { |
|
return t < 0.5 ? 8 * Math.pow(t, 4) : -8 * Math.pow(t - 1, 4) + 1; |
|
} |
|
function quartIn(t) { |
|
return Math.pow(t, 4); |
|
} |
|
function quartOut(t) { |
|
return Math.pow(t - 1, 3) * (1 - t) + 1; |
|
} |
|
function quintInOut(t) { |
|
if ((t *= 2) < 1) return 0.5 * t * t * t * t * t; |
|
return 0.5 * ((t -= 2) * t * t * t * t + 2); |
|
} |
|
function quintIn(t) { |
|
return t * t * t * t * t; |
|
} |
|
function quintOut(t) { |
|
return --t * t * t * t * t + 1; |
|
} |
|
function sineInOut(t) { |
|
return -0.5 * (Math.cos(Math.PI * t) - 1); |
|
} |
|
function sineIn(t) { |
|
const v = Math.cos(t * Math.PI * 0.5); |
|
if (Math.abs(v) < 1e-14) return 1; |
|
else return 1 - v; |
|
} |
|
function sineOut(t) { |
|
return Math.sin(t * Math.PI / 2); |
|
} |
|
|
|
export { |
|
backInOut, |
|
backIn, |
|
backOut, |
|
bounceOut, |
|
bounceInOut, |
|
bounceIn, |
|
circInOut, |
|
circIn, |
|
circOut, |
|
cubicInOut, |
|
cubicIn, |
|
cubicOut, |
|
elasticInOut, |
|
elasticIn, |
|
elasticOut, |
|
expoInOut, |
|
expoIn, |
|
expoOut, |
|
quadInOut, |
|
quadIn, |
|
quadOut, |
|
quartInOut, |
|
quartIn, |
|
quartOut, |
|
quintInOut, |
|
quintIn, |
|
quintOut, |
|
sineInOut, |
|
sineIn, |
|
sineOut |
|
}; |
|
|
|
|