@robotlegsjs/core
Version:
An architecture-based IoC framework for JavaScript/TypeScript
80 lines • 3.38 kB
JavaScript
;
// ------------------------------------------------------------------------------
// Copyright (c) 2017-present, RobotlegsJS. 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.CommandTriggerMap = void 0;
/**
* @private
*/
var CommandTriggerMap = /** @class */ (function () {
/*============================================================================*/
/* Constructor */
/*============================================================================*/
/**
* Creates a command trigger map
*
* @param keyFactory Factory function to creates keys
* @param triggerFactory Factory function to create triggers
*/
function CommandTriggerMap(keyFactory, triggerFactory) {
/*============================================================================*/
/* Private Properties */
/*============================================================================*/
this._triggers = new Map();
this._keyFactory = keyFactory;
this._triggerFactory = triggerFactory;
}
/*============================================================================*/
/* Public Functions */
/*============================================================================*/
/**
* @private
*/
CommandTriggerMap.prototype.getTrigger = function () {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
var key = this._getKey(params);
var trigger = this._triggers.get(key);
if (!trigger) {
trigger = this._createTrigger(params);
this._triggers.set(key, trigger);
}
return trigger;
};
/**
* @private
*/
CommandTriggerMap.prototype.removeTrigger = function () {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
return this._destroyTrigger(this._getKey(params));
};
/*============================================================================*/
/* Private Functions */
/*============================================================================*/
CommandTriggerMap.prototype._getKey = function (mapperArgs) {
return this._keyFactory.apply(null, mapperArgs);
};
CommandTriggerMap.prototype._createTrigger = function (mapperArgs) {
return this._triggerFactory.apply(null, mapperArgs);
};
CommandTriggerMap.prototype._destroyTrigger = function (key) {
var trigger = this._triggers.get(key);
if (trigger) {
trigger.deactivate();
this._triggers.delete(key);
}
return trigger;
};
return CommandTriggerMap;
}());
exports.CommandTriggerMap = CommandTriggerMap;
//# sourceMappingURL=CommandTriggerMap.js.map