UNPKG

addimated

Version:

An always interruptable, declarative animation library for React

106 lines (84 loc) 3.65 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.TimingAnimation = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _invariant = _interopRequireDefault(require("invariant")); var _warning = _interopRequireDefault(require("warning")); var _Animation2 = require("./Animation"); var Easing = _interopRequireWildcard(require("./Easing")); var _WithDefault = require("./WithDefault"); var easeInOut = Easing.inOut(Easing.ease); var TimingAnimation = /*#__PURE__*/ function (_Animation) { (0, _inherits2.default)(TimingAnimation, _Animation); function TimingAnimation(config) { var _this; (0, _classCallCheck2.default)(this, TimingAnimation); _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TimingAnimation).call(this)); _this.startTime = null; _this.currentTime = null; _this.toValue = config.toValue; _this.easing = (0, _WithDefault.withDefault)(config.easing, easeInOut); _this.duration = (0, _WithDefault.withDefault)(config.duration, 500); _this.delay = (0, _WithDefault.withDefault)(config.delay, 0); return _this; } (0, _createClass2.default)(TimingAnimation, [{ key: "start", value: function start(animatedVal, fromValue, onEnd) { animatedVal.model = this.toValue; this.active = true; this.fromValue = fromValue - this.toValue; this.toValue = 0; this.endCallback = onEnd; this.currentTime = performance.now(); this.startTime = this.currentTime + this.delay; return animatedVal.animations.concat(this); } }, { key: "step", value: function step(timestamp) { var startTime = this.startTime; process.env.NODE_ENV !== "production" ? (0, _warning.default)(startTime != null, "Attempted to step an animation which hasn't started") : void 0; if (!this.ended && timestamp >= startTime + this.duration) { this.stop(true); } this.currentTime = timestamp; } }, { key: "getValue", value: function getValue() { var toValue = this.toValue; var fromValue = this.fromValue; var currentTime = this.currentTime; var startTime = this.startTime; !(currentTime && startTime) ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, "Attempted to get the value of an animation which hasn't started") : invariant(false) : void 0; if (currentTime <= startTime) { return fromValue; } else { return fromValue + this.easing((currentTime - startTime) / this.duration) * (toValue - fromValue); } } }, { key: "stop", value: function stop() { var finished = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; this.ended = true; this.endCallback && this.endCallback({ finished: finished }); } }]); return TimingAnimation; }(_Animation2.Animation); exports.TimingAnimation = TimingAnimation; //# sourceMappingURL=TimingAnimation.js.map