animate-value
Version:
🏃 animates a numeric value
79 lines (57 loc) • 1.71 kB
JavaScript
import calcStartEnd from './calc/calcStartEnd';
import calcProgress from './calc/calcProgress';
import now from './time/now';
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 = calcProgress(start, duration, easing);
data.value = from + (to - from) * prog;
if (now() <= end) {
if (change && now() >= 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, calcStartEnd(_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();
}
}
}
};
export default tick;