This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
szurubooru/client/js/util/optimized_resize.js

33 lines
651 B
JavaScript

"use strict";
let callbacks = [];
let running = false;
function resize() {
if (!running) {
running = true;
if (window.requestAnimationFrame) {
window.requestAnimationFrame(runCallbacks);
} else {
setTimeout(runCallbacks, 66);
}
}
}
function runCallbacks() {
callbacks.forEach((callback) => {
callback();
});
running = false;
}
function add(callback) {
callbacks.push(callback);
}
function remove(callback) {
callbacks = callbacks.filter((c) => c !== callback);
}
window.addEventListener("resize", resize);
module.exports = { add: add, remove: remove };