UNPKG

addimated

Version:

An always interruptable, declarative animation library for React

88 lines (77 loc) 2.33 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Manager = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _AnimatedValue = require("./AnimatedValue"); var Manager = /*#__PURE__*/ function () { function Manager() { (0, _classCallCheck2.default)(this, Manager); this.ticking = false; this.animatedValues = new Set(); } (0, _createClass2.default)(Manager, [{ key: "attachValue", value: function attachValue(value) { this.animatedValues.add(value); } }, { key: "detatchValue", value: function detatchValue(value) { this.animatedValues.delete(value); } }, { key: "requestTick", value: function requestTick() { if (!this.ticking) { window.requestAnimationFrame(this.__update.bind(this)); this.ticking = true; } } }, { key: "__update", value: function __update(timestamp) { this.ticking = false; var valsToFlush = []; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = this.animatedValues[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var animatedValue = _step.value; var maybeVal = animatedValue.step(timestamp); if (maybeVal) { valsToFlush.push(maybeVal); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } if (valsToFlush.length > 0) { valsToFlush.forEach(function (anim) { return anim.flush(); }); this.requestTick(); } } }]); return Manager; }(); exports.Manager = Manager; //# sourceMappingURL=Manager.js.map