UNPKG

animate-value

Version:
79 lines (57 loc) 1.71 kB
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;