gamelet-pixui-frame
Version:
pixui开发者框架
75 lines • 2.28 kB
JavaScript
;
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