baseframe-js
Version:
Baseframe JS is a comprehensive suite of modular plugins and utilities designed for front-end development
27 lines (26 loc) • 840 B
JavaScript
import $be from 'base-elem-js';
const defaultConfig = {
immediate: false,
delay: 100
};
export const debounceResize = (cb, namespace = 'debounceResize', immediate = false, delay = 100) => {
const nm = namespace !== '' ? `.${namespace}` : '';
const events = [`resize${nm}`];
debounce(window, events, cb, { immediate, delay });
};
const debounce = (elem, event, cb, config) => {
const $elem = $be(elem);
const p = { ...defaultConfig, ...config };
let timer = null;
$elem.on(event, (ev, elem) => {
clearTimeout(timer);
timer = setTimeout(cb, p.delay, ev, elem);
});
if (p.immediate) {
$elem.each((elem) => {
const ev = new Event(typeof event === 'string' ? event : event[0]);
setTimeout(cb, 0, ev, elem);
});
}
};
export default debounce;