window-resize
Version:
Optimised window resize function using requestAnimationFrame
52 lines (42 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/**
* Resize function based from MDN
* https://developer.mozilla.org/en-US/docs/Web/Events/resize
*/
var windowResize = function () {
var savedCallback = null;
var running = false; // run the actual callback
function runCallbacks() {
savedCallback();
running = false;
} // fired on resize event
function resize() {
if (!running) {
running = true;
if (window.requestAnimationFrame) {
window.requestAnimationFrame(runCallbacks);
} else {
setTimeout(runCallbacks, 66);
}
}
} // adds callback to loop
function addCallback(callback) {
savedCallback = callback;
}
return {
// public method to add additional callback
add: function add(callback) {
window.addEventListener("resize", resize);
addCallback(callback);
},
clear: function clear() {
window.removeEventListener("resize", resize);
}
};
}();
var _default = windowResize;
exports.default = _default;