UNPKG

motion

Version:

The Motion library for the web

38 lines (33 loc) 1.38 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var cubicBezier = require('./cubic-bezier.cjs.js'); var popmotion = require('popmotion'); var noop = require('../../../utils/noop.cjs.js'); const namedEasings = { ease: cubicBezier.cubicBezier(0.25, 0.1, 0.25, 1.0), "ease-in": cubicBezier.cubicBezier(0.42, 0.0, 1.0, 1.0), "ease-in-out": cubicBezier.cubicBezier(0.42, 0.0, 0.58, 1.0), "ease-out": cubicBezier.cubicBezier(0.0, 0.0, 0.58, 1.0), }; const functionArgsRegex = /\((.*?)\)/; function getEasingFunction(definition) { // If already an easing function, return if (typeof definition === "function") return definition; // If an easing curve definition, return bezier function if (Array.isArray(definition)) return cubicBezier.cubicBezier(...definition); // If we have a predefined easing function, return if (namedEasings[definition]) return namedEasings[definition]; // If this is a steps function, attempt to create easing curve if (definition.startsWith("steps")) { const args = functionArgsRegex.exec(definition); if (args) { const argsArray = args[1].split(","); return popmotion.steps(parseFloat(argsArray[0]), argsArray[1].trim()); } } return noop.noopReturn; } exports.getEasingFunction = getEasingFunction;