UNPKG

@shockpkg/core

Version:
64 lines (58 loc) 993 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Dispatcher = void 0; /** * Event dispatcher. */ 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; } } exports.Dispatcher = Dispatcher; //# sourceMappingURL=dispatcher.js.map