pithos
Version:
Advanced JavaScript/TypeScript superset providing performance, gestures, animations, and DOM utilities
43 lines • 1.25 kB
JavaScript
import { Debouncer } from "./debouncer";
export class EventDebouncerManager {
constructor(callback, delay = 3000) {
this.listeners = [];
this.debouncer = new Debouncer(delay, callback);
}
addTriggerEvent(element, event) {
this.addEvent({ element, event, preventTimeout: false });
}
addPreventEvent(element, event) {
this.addEvent({ element, event, preventTimeout: true });
}
addEvent(config) {
const handler = () => {
if (config.preventTimeout) {
this.debouncer.cancel();
}
else {
this.debouncer.trigger();
}
};
config.element.addEventListener(config.event, handler);
this.listeners.push({
element: config.element,
event: config.event,
handler,
});
}
trigger() {
this.debouncer.trigger();
}
cancel() {
this.debouncer.cancel();
}
destroy() {
this.debouncer.destroy();
this.listeners.forEach(({ element, event, handler }) => {
element.removeEventListener(event, handler);
});
this.listeners = [];
}
}
//# sourceMappingURL=event-debouncer-manager.js.map