@shockpkg/core
Version:
shockpkg core
64 lines (58 loc) • 993 B
JavaScript
;
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