UNPKG

gamelet-pixui-frame

Version:

pixui开发者框架

75 lines 2.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LocalDispatcher = void 0; var utilities_1 = require("./utilities"); // dispatcher for local window // events will only available on current window var LocalDispatcherImpl = /** @class */ (function () { function LocalDispatcherImpl() { this.events = new Map(); } LocalDispatcherImpl.prototype.init = function () { }; LocalDispatcherImpl.prototype.add = function (e, f) { var set = this.events.get(e); if (set == undefined) { set = new Set(); this.events.set(e, set); } if (set.has(f)) { // event handler duplicated console.warn("".concat(e, " is adding duplicated event handler, ignore!")); return; } set.add(f); }; LocalDispatcherImpl.prototype.remove = function (e, f) { if (!this.events.has(e)) { // no such event; return; } var set = this.events.get(e); if (set == undefined) { return; } if (!set.has(f)) { // no such handler return; } set.delete(f); }; LocalDispatcherImpl.prototype.dispatch = function (e) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } if (!this.events.has(e)) { // Log.info(`no handler set found`); return; } // copy it var set = new Set(this.events.get(e)); if (set.size == 0) { // Log.info(`handler set is empty`); return; } set.forEach(function (f) { try { // Log.info(`invoking handler of ${e}`); f.apply(void 0, args); } catch (e) { console.error(e); } }); }; LocalDispatcherImpl.prototype.clear = function () { this.events.clear(); }; LocalDispatcherImpl.prototype.dispose = function () { this.clear(); }; return LocalDispatcherImpl; }()); exports.LocalDispatcher = (0, utilities_1.singleton)(LocalDispatcherImpl); //# sourceMappingURL=local_dispatcher.js.map