just-animate
Version:
_Making Animation Simple_
31 lines (30 loc) • 954 B
JavaScript
import { _ } from '../utils/constants';
import { inRange } from '../utils/math';
import { finish } from './finish';
import { update } from './update';
export const tick = (model, delta, _ctx) => {
const duration = model.duration;
const repeat = model.repeat;
const rate = model.rate;
let time = model.time === _ ? (rate < 0 ? duration : 0) : model.time;
let round = model.round || 0;
const isReversed = rate < 0;
time += delta * rate;
let iterationEnded = false;
if (!inRange(time, 0, duration)) {
model.round = ++round;
time = isReversed ? 0 : duration;
iterationEnded = true;
if (model.yoyo) {
model.rate = (model.rate || 0) * -1;
}
time = model.rate < 0 ? duration : 0;
}
model.time = time;
model.round = round;
if (iterationEnded && repeat === round) {
finish(model, _, _ctx);
return;
}
update(model, _, _ctx);
};