ts-useful
Version:
Functions for animation, color transitions, ecliptic, bezier, decasteljau, curves, three dimensional curves, smooth scrolling, random range, randomItem, mobius index, vectors, physics vectors, and easing.
56 lines • 3.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Easing = void 0;
const bezier_1 = require("./bezier");
const randomItem_1 = require("./randomItem");
class Easing {
}
exports.Easing = Easing;
Easing.linear = (0, bezier_1.Bezier)([0.0, 0.0, 1.0, 1.0]);
Easing.sineIn = (0, bezier_1.Bezier)([0.47, 0, 0.745, 0.715]);
Easing.sineOut = (0, bezier_1.Bezier)([0.39, 0.575, 0.565, 1]);
Easing.sineInOut = (0, bezier_1.Bezier)([0.445, 0.05, 0.55, 0.95]);
Easing.quadIn = (0, bezier_1.Bezier)([0.55, 0.085, 0.68, 0.53]);
Easing.quadOut = (0, bezier_1.Bezier)([0.25, 0.46, 0.45, 0.94]);
Easing.quadInOut = (0, bezier_1.Bezier)([0.455, 0.03, 0.515, 0.955]);
Easing.cubicIn = (0, bezier_1.Bezier)([0.55, 0.055, 0.675, 0.19]);
Easing.cubicOut = (0, bezier_1.Bezier)([0.215, 0.61, 0.355, 1]);
Easing.cubicInOut = (0, bezier_1.Bezier)([0.645, 0.045, 0.355, 1]);
Easing.quartIn = (0, bezier_1.Bezier)([0.895, 0.03, 0.685, 0.22]);
Easing.quartOut = (0, bezier_1.Bezier)([0.165, 0.84, 0.44, 1]);
Easing.quartInOut = (0, bezier_1.Bezier)([0.77, 0, 0.175, 1]);
Easing.quintIn = (0, bezier_1.Bezier)([0.755, 0.05, 0.855, 0.06]);
Easing.quintOut = (0, bezier_1.Bezier)([0.23, 1, 0.32, 1]);
Easing.quintInOut = (0, bezier_1.Bezier)([0.86, 0, 0.07, 1]);
Easing.expoIn = (0, bezier_1.Bezier)([0.95, 0.05, 0.795, 0.035]);
Easing.expoOut = (0, bezier_1.Bezier)([0.19, 1, 0.22, 1]);
Easing.expoInOut = (0, bezier_1.Bezier)([1, 0, 0, 1]);
Easing.circIn = (0, bezier_1.Bezier)([0.6, 0.04, 0.98, 0.335]);
Easing.circOut = (0, bezier_1.Bezier)([0.075, 0.82, 0.165, 1]);
Easing.circInOut = (0, bezier_1.Bezier)([0.785, 0.135, 0.15, 0.86]);
Easing.backIn = (0, bezier_1.Bezier)([0.6, -0.28, 0.735, 0.045]);
Easing.backOut = (0, bezier_1.Bezier)([0.175, 0.885, 0.32, 1.275]);
Easing.backInOut = (0, bezier_1.Bezier)([0.68, -0.55, 0.265, 1.55]);
Easing.boomerang = (t) => ((t >= .5) ? 1 - t : t) * 2;
Easing.elasticIn = (t) => (.04 - .04 / t) * Math.sin(25 * t) + 1;
Easing.elasticOut = (t) => .04 * t / (--t) * Math.sin(25 * t);
Easing.elasticInOut = (t) => (t -= .5) < 0 ? (.02 + .01 / t) * Math.sin(50 * t) : (0.02 - .01 / t) * Math.sin(50 * t) + 1;
// Refactored from https://easings.net/#easeOutBounce
Easing.bounceOut = (t) => {
const [n1, d1] = [7.5625, 2.75];
return (t < 1 / d1) ? n1 * t * t
: (t < 2 / d1) ? n1 * (t -= 1.5 / d1) * t + 0.75
: (t < 2.5 / d1) ? n1 * (t -= 2.25 / d1) * t + 0.9375
: n1 * (t -= 2.625 / d1) * t + 0.984375;
};
Easing.bounceIn = (t) => 1 - Easing.bounceOut(1 - t);
Easing.bounceInOut = (t) => t < 0.5 ? (1 - Easing.bounceOut(1 - 2 * t)) / 2 : (1 + Easing.bounceOut(2 * t - 1)) / 2;
Easing.random = () => (0, randomItem_1.RandomItem)([
Easing.backIn, Easing.backInOut, Easing.backOut, Easing.bounceIn, Easing.bounceInOut, Easing.bounceOut,
Easing.circIn, Easing.circInOut, Easing.circOut, Easing.cubicIn, Easing.cubicInOut, Easing.cubicOut,
Easing.elasticIn, Easing.elasticInOut, Easing.elasticOut, Easing.expoIn, Easing.expoInOut, Easing.expoOut,
Easing.linear, Easing.boomerang,
Easing.quadIn, Easing.quadInOut, Easing.quadOut, Easing.quartIn, Easing.quartInOut, Easing.quartOut,
Easing.quintIn, Easing.quintInOut, Easing.quintOut, Easing.sineIn, Easing.sineInOut, Easing.sineOut,
]);
//# sourceMappingURL=easing.js.map