zwip
Version:
Utility for creating JS animations on top of W3C [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) function.
30 lines (23 loc) • 771 B
JavaScript
export const EaseIn = power => t => Math.pow(t, power);
export const EaseOut = power => t => 1 - Math.abs(Math.pow(t - 1, power));
export const EaseInOut = power => t =>
t < .5
? EaseIn(power)(t * 2) / 2
: EaseOut(power)(t * 2 - 1) / 2 + 0.5;
export const easings = {
linear: EaseInOut(1),
easeInQuad: EaseIn(2),
easeOutQuad: EaseOut(2),
easeInOutQuad: EaseInOut(2),
easeInCubic: EaseIn(3),
easeOutCubic: EaseOut(3),
easeInOutCubic: EaseInOut(3),
easeInQuart: EaseIn(4),
easeOutQuart: EaseOut(4),
easeInOutQuart: EaseInOut(4),
easeInQuint: EaseIn(5),
easeOutQuint: EaseOut(5),
easeInOutQuint: EaseInOut(5),
easeInCirc: t => -(Math.sqrt(1 - easings.easeInQuad(t)) - 1),
easeOutCirc: t => Math.sqrt(easings.easeOutQuad(t))
};