@robotlegsjs/pixi-signalmediator
Version:
TypeScript port of Robotlegs Extension SignalMediator
66 lines • 3.06 kB
JavaScript
;
// ------------------------------------------------------------------------------
// Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved.
// Copyright (c) 2016 San Dinh Studios. All Rights Reserved.
//
// NOTICE: You are permitted to use, modify, and distribute this file
// in accordance with the terms of the license agreement accompanying it.
// ------------------------------------------------------------------------------
Object.defineProperty(exports, "__esModule", { value: true });
exports.SignalMap = void 0;
var tslib_1 = require("tslib");
var core_1 = require("@robotlegsjs/core");
var SignalMap = /** @class */ (function () {
/*============================================================================*/
/* Constructor */
/*============================================================================*/
function SignalMap() {
this._handlersBySignal = new Map();
}
/*============================================================================*/
/* Public Functions */
/*============================================================================*/
SignalMap.prototype.addToSignal = function (signal, handler) {
signal.add(handler);
this.storeSignalHandler(signal, handler);
};
SignalMap.prototype.addOnceToSignal = function (signal, handler) {
signal.addOnce(handler);
this.storeSignalHandler(signal, handler);
};
SignalMap.prototype.removeFromSignal = function (signal, handler) {
signal.remove(handler);
if (!this._handlersBySignal.has(signal) ||
this._handlersBySignal.get(signal).length === 0) {
return;
}
var handlerIndex = this._handlersBySignal.get(signal).indexOf(handler);
if (handlerIndex > -1) {
this._handlersBySignal.get(signal).splice(handlerIndex, 1);
}
};
SignalMap.prototype.removeAll = function () {
this._handlersBySignal.forEach(function (handlers, signal) {
return handlers.forEach(function (handler) { return signal.remove(handler); });
});
this._handlersBySignal.clear();
};
/*============================================================================*/
/* Protected Functions */
/*============================================================================*/
SignalMap.prototype.storeSignalHandler = function (signal, handler) {
if (!this._handlersBySignal.has(signal)) {
this._handlersBySignal.set(signal, [handler]);
}
else {
this._handlersBySignal.get(signal).push(handler);
}
};
SignalMap = tslib_1.__decorate([
core_1.injectable(),
tslib_1.__metadata("design:paramtypes", [])
], SignalMap);
return SignalMap;
}());
exports.SignalMap = SignalMap;
//# sourceMappingURL=SignalMap.js.map