animate-value
Version:
🏃 animates a numeric value
93 lines (64 loc) • 2.13 kB
JavaScript
;
exports.__esModule = true;
var _calcStartEnd = require('./calc/calcStartEnd');
var _calcStartEnd2 = _interopRequireDefault(_calcStartEnd);
var _calcProgress = require('./calc/calcProgress');
var _calcProgress2 = _interopRequireDefault(_calcProgress);
var _now = require('./time/now');
var _now2 = _interopRequireDefault(_now);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var tick = function tick(data, label, resolve) {
var _data = data,
start = _data.start,
end = _data.end,
easing = _data.easing,
to = _data.to,
from = _data.from,
duration = _data.duration,
change = _data.change,
done = _data.done,
loop = _data.loop,
rewind = _data.rewind,
loopDelay = _data.loopDelay;
if (start && end) {
var prog = (0, _calcProgress2.default)(start, duration, easing);
data.value = from + (to - from) * prog;
if ((0, _now2.default)() <= end) {
if (change && (0, _now2.default)() >= start) change(data.value);
label = requestAnimationFrame(function () {
return tick(data, label, resolve);
});
} else {
if (change) change(data.to);
if (loop) {
if (rewind) {
var _data2 = data,
_from = _data2.from,
_to = _data2.to;
data.from = _to;
data.to = _from;
}
var _delay = loopDelay;
data = Object.assign({}, data, (0, _calcStartEnd2.default)(_delay, duration));
if (data.iteration) {
data.iteration += 1;
var _data3 = data,
_iteration = _data3.iteration;
if (rewind) _iteration = _iteration / 2;
if (loop === true || _iteration <= loop) {
label = requestAnimationFrame(function () {
return tick(data, label, resolve);
});
} else {
if (done) done();
resolve();
}
}
} else {
if (done) done();
}
}
}
};
exports.default = tick;
module.exports = exports['default'];