django-vue3-admin-web/node_modules/@interactjs/utils/raf.js
2025-10-20 21:21:14 +08:00

45 lines
1.3 KiB
JavaScript

/**
* interact.js 1.10.27
*
* Copyright (c) 2012-present Taye Adeyemi <dev@taye.me>
* Released under the MIT License.
* https://raw.github.com/taye/interact.js/main/LICENSE
*/
let lastTime = 0;
let request;
let cancel;
function init(global) {
request = global.requestAnimationFrame;
cancel = global.cancelAnimationFrame;
if (!request) {
const vendors = ['ms', 'moz', 'webkit', 'o'];
for (const vendor of vendors) {
request = global[`${vendor}RequestAnimationFrame`];
cancel = global[`${vendor}CancelAnimationFrame`] || global[`${vendor}CancelRequestAnimationFrame`];
}
}
request = request && request.bind(global);
cancel = cancel && cancel.bind(global);
if (!request) {
request = callback => {
const currTime = Date.now();
const timeToCall = Math.max(0, 16 - (currTime - lastTime));
const token = global.setTimeout(() => {
// eslint-disable-next-line n/no-callback-literal
callback(currTime + timeToCall);
}, timeToCall);
lastTime = currTime + timeToCall;
return token;
};
cancel = token => clearTimeout(token);
}
}
var raf = {
request: callback => request(callback),
cancel: token => cancel(token),
init
};
export { raf as default };
//# sourceMappingURL=raf.js.map