UNPKG

@shockpkg/core

Version:
57 lines (52 loc) 859 B
/** * Event dispatcher. */ export class Dispatcher { /** * Event context. */ /** * Event handlers. */ _handlers = new Set(); /** * Event dispatcher constructor. * * @param context Context object. */ constructor(context) { this._context = context; } /** * Add listener. * * @param handler Event handler. */ on(handler) { this._handlers.add(handler); } /** * Remove listener. * * @param handler Event handler. */ off(handler) { this._handlers.delete(handler); } /** * Trigger handlers. * * @param event Event data. * @returns Handler count. */ trigger(event) { const self = this._context; let i = 0; for (const cb of this._handlers) { cb.call(self, event); i++; } return i; } } //# sourceMappingURL=dispatcher.mjs.map