animejs
Version:
JavaScript animation engine
58 lines (51 loc) • 1.71 kB
JavaScript
/**
* Anime.js - utils - CJS
* @version v4.3.6
* @license MIT
* @copyright 2026 - Julian Garnier
*/
;
var consts = require('../core/consts.cjs');
var globals = require('../core/globals.cjs');
var helpers = require('../core/helpers.cjs');
var timer = require('../timer/timer.cjs');
/**
* @import {
* Callback,
* Tickable,
* } from '../types/index.js'
*/
/**
* @param {Callback<Timer>} [callback]
* @return {Timer}
*/
const sync = (callback = consts.noop) => {
return new timer.Timer({ duration: 1 * globals.globals.timeScale, onComplete: callback }, null, 0).resume();
};
/**
* @param {(...args: any[]) => Tickable | ((...args: any[]) => void)} constructor
* @return {(...args: any[]) => Tickable | ((...args: any[]) => void)}
*/
const keepTime = constructor => {
/** @type {Tickable} */
let tracked;
return (...args) => {
let currentIteration, currentIterationProgress, reversed, alternate;
if (tracked) {
currentIteration = tracked.currentIteration;
currentIterationProgress = tracked.iterationProgress;
reversed = tracked.reversed;
alternate = tracked._alternate;
tracked.revert();
}
const cleanup = constructor(...args);
if (cleanup && !helpers.isFnc(cleanup) && cleanup.revert) tracked = cleanup;
if (!helpers.isUnd(currentIterationProgress)) {
/** @type {Tickable} */(tracked).currentIteration = currentIteration;
/** @type {Tickable} */(tracked).iterationProgress = (alternate ? !(currentIteration % 2) ? reversed : !reversed : reversed) ? 1 - currentIterationProgress : currentIterationProgress;
}
return cleanup || consts.noop;
}
};
exports.keepTime = keepTime;
exports.sync = sync;