svelte-motion
Version:
Svelte animation library based on the React library framer-motion.
46 lines (42 loc) • 1.54 kB
JavaScript
/**
based on framer-motion@4.0.3,
Copyright (c) 2018 Framer B.V.
*/
import {fixed} from '../../utils/fix-process-env';
import { __read } from 'tslib';
import { cubicBezier, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut } from 'popmotion';
//import { invariant } from 'hey-listen';
var easingLookup = {
linear: linear,
easeIn: easeIn,
easeInOut: easeInOut,
easeOut: easeOut,
circIn: circIn,
circInOut: circInOut,
circOut: circOut,
backIn: backIn,
backInOut: backInOut,
backOut: backOut,
anticipate: anticipate,
bounceIn: bounceIn,
bounceInOut: bounceInOut,
bounceOut: bounceOut,
};
var easingDefinitionToFunction = function (definition) {
if (Array.isArray(definition)) {
// If cubic bezier definition, create bezier curve
//invariant(definition.length === 4, "Cubic bezier arrays must contain four numerical values.");
var _a = __read(definition, 4), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
return cubicBezier(x1, y1, x2, y2);
}
else if (typeof definition === "string") {
// Else lookup from table
//invariant(easingLookup[definition] !== undefined, "Invalid easing type '" + definition + "'");
return easingLookup[definition];
}
return definition;
};
var isEasingArray = function (ease) {
return Array.isArray(ease) && typeof ease[0] !== "number";
};
export { easingDefinitionToFunction, isEasingArray };