UNPKG

toosoon-events

Version:

Project providing services implemented as singleton class instances

39 lines (38 loc) 1.11 kB
import { EventManager } from './index'; /** * Utility class for creating resize event listeners * * @class ResizeManager * @extends EventManager */ class ResizeManager extends EventManager { listeners = []; width = 0; height = 0; _debounceDelay = 10; // in ms _timeout; bind() { window.addEventListener('resize', this._onResize); window.addEventListener('orientationchange', this._onResize); } unbind() { window.removeEventListener('resize', this._onResize); window.removeEventListener('orientationchange', this._onResize); } resize = () => { this.width = window.innerWidth; this.height = window.innerHeight; this.listeners.forEach((listener) => listener(this.width, this.height)); }; _onResize = () => { clearTimeout(this._timeout); this._timeout = setTimeout(this.resize, this._debounceDelay); }; get debounceDelay() { return this._debounceDelay; } set debounceDelay(delay) { this._debounceDelay = delay; } } export default new ResizeManager();