1 line
9.2 KiB
Plaintext
1 line
9.2 KiB
Plaintext
{"version":3,"sources":["Easing.js"],"names":["cond","lessThan","multiply","pow","cos","sqrt","sub","add","divide","AnimatedBezier","Easing","linear","t","ease","quad","cubic","poly","n","sin","Math","PI","circle","exp","elastic","bounciness","p","back","s","undefined","bounce","sq","v","bezier","x1","y1","x2","y2","in","easing","out","inOut"],"mappings":"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","sourcesContent":["import {\n cond,\n lessThan,\n multiply,\n pow,\n cos,\n sqrt,\n sub,\n add,\n divide,\n} from './base';\nimport AnimatedBezier from './core/AnimatedBezier';\n\n/**\n * The `Easing` module implements common easing functions. This module is used\n * by [Animate.timing()](docs/animate.html#timing) to convey physically\n * believable motion in animations.\n *\n * You can find a visualization of some common easing functions at\n * http://easings.net/\n *\n * ### Predefined animations\n *\n * The `Easing` module provides several predefined animations through the\n * following methods:\n *\n * - [`back`](docs/easing.html#back) provides a simple animation where the\n * object goes slightly back before moving forward\n * - [`bounce`](docs/easing.html#bounce) provides a bouncing animation\n * - [`ease`](docs/easing.html#ease) provides a simple inertial animation\n * - [`elastic`](docs/easing.html#elastic) provides a simple spring interaction\n *\n * ### Standard functions\n *\n * Three standard easing functions are provided:\n *\n * - [`linear`](docs/easing.html#linear)\n * - [`quad`](docs/easing.html#quad)\n * - [`cubic`](docs/easing.html#cubic)\n *\n * The [`poly`](docs/easing.html#poly) function can be used to implement\n * quartic, quintic, and other higher power functions.\n *\n * ### Additional functions\n *\n * Additional mathematical functions are provided by the following methods:\n *\n * - [`bezier`](docs/easing.html#bezier) provides a cubic bezier curve\n * - [`circle`](docs/easing.html#circle) provides a circular function\n * - [`sin`](docs/easing.html#sin) provides a sinusoidal function\n * - [`exp`](docs/easing.html#exp) provides an exponential function\n *\n * The following helpers are used to modify other easing functions.\n *\n * - [`in`](docs/easing.html#in) runs an easing function forwards\n * - [`inOut`](docs/easing.html#inout) makes any easing function symmetrical\n * - [`out`](docs/easing.html#out) runs an easing function backwards\n */\nexport default class Easing {\n /**\n * A linear function, `f(t) = t`. Position correlates to elapsed time one to\n * one.\n *\n * http://cubic-bezier.com/#0,0,1,1\n */\n static linear(t) {\n return t;\n }\n\n /**\n * A simple inertial interaction, similar to an object slowly accelerating to\n * speed.\n *\n * http://cubic-bezier.com/#.42,0,1,1\n */\n static ease(t) {\n return new AnimatedBezier(t, 0.42, 0, 1, 1);\n }\n\n /**\n * A quadratic function, `f(t) = t * t`. Position equals the square of elapsed\n * time.\n *\n * http://easings.net/#easeInQuad\n */\n static quad(t) {\n return multiply(t, t);\n }\n\n /**\n * A cubic function, `f(t) = t * t * t`. Position equals the cube of elapsed\n * time.\n *\n * http://easings.net/#easeInCubic\n */\n static cubic(t) {\n return multiply(t, t, t);\n }\n\n /**\n * A power function. Position is equal to the Nth power of elapsed time.\n *\n * n = 4: http://easings.net/#easeInQuart\n * n = 5: http://easings.net/#easeInQuint\n */\n static poly(n) {\n return t => pow(t, n);\n }\n\n /**\n * A sinusoidal function.\n *\n * http://easings.net/#easeInSine\n */\n static sin(t) {\n return sub(1, cos(multiply(t, Math.PI, 0.5)));\n }\n\n /**\n * A circular function.\n *\n * http://easings.net/#easeInCirc\n */\n static circle(t) {\n return sub(1, sqrt(sub(1, multiply(t, t))));\n }\n\n /**\n * An exponential function.\n *\n * http://easings.net/#easeInExpo\n */\n static exp(t) {\n return pow(2, multiply(10, sub(t, 1)));\n }\n\n /**\n * A simple elastic interaction, similar to a spring oscillating back and\n * forth.\n *\n * Default bounciness is 1, which overshoots a little bit once. 0 bounciness\n * doesn't overshoot at all, and bounciness of N > 1 will overshoot about N\n * times.\n *\n * http://easings.net/#easeInElastic\n */\n static elastic(bounciness = 1) {\n const p = bounciness * Math.PI;\n return t =>\n sub(\n 1,\n multiply(pow(cos(multiply(t, Math.PI, 0.5)), 3), cos(multiply(t, p)))\n );\n }\n\n /**\n * Use with `Animated.parallel()` to create a simple effect where the object\n * animates back slightly as the animation starts.\n *\n * Wolfram Plot:\n *\n * - http://tiny.cc/back_default (s = 1.70158, default)\n */\n static back(s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return t => multiply(t, t, sub(multiply(add(s, 1), t), s));\n }\n\n /**\n * Provides a simple bouncing effect.\n *\n * http://easings.net/#easeInBounce\n */\n static bounce(t) {\n const sq = v => multiply(7.5625, v, v);\n return cond(\n lessThan(t, 1 / 2.75),\n sq(t),\n cond(\n lessThan(t, 2 / 2.75),\n add(0.75, sq(sub(t, 1.5 / 2.75))),\n cond(\n lessThan(t, 2.5 / 2.76),\n add(0.9375, sq(sub(t, 2.25 / 2.75))),\n add(0.984375, sq(sub(t, 2.625 / 2.75)))\n )\n )\n );\n }\n\n /**\n * Provides a cubic bezier curve, equivalent to CSS Transitions'\n * `transition-timing-function`.\n *\n * A useful tool to visualize cubic bezier curves can be found at\n * http://cubic-bezier.com/\n */\n static bezier(x1, y1, x2, y2) {\n return t => new AnimatedBezier(t, x1, y1, x2, y2);\n }\n\n /**\n * Runs an easing function forwards.\n */\n static in(easing) {\n return easing;\n }\n\n /**\n * Runs an easing function backwards.\n */\n static out(easing) {\n return t => sub(1, easing(sub(1, t)));\n }\n\n /**\n * Makes any easing function symmetrical. The easing function will run\n * forwards for half of the duration, then backwards for the rest of the\n * duration.\n */\n static inOut(easing) {\n return t =>\n cond(\n lessThan(t, 0.5),\n divide(easing(multiply(t, 2)), 2),\n sub(1, divide(easing(multiply(sub(1, t), 2)), 2))\n );\n }\n}\n"]} |