var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; Eif ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { Eif (protoProps) defineProperties(Constructor.prototype, protoProps); Iif (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
Eif (typeof define !== 'function') {
var define = require('amdefine')(module);
}
define(function (require) {
'use strict';
var Enum = function () {
function Enum() {
_classCallCheck(this, Enum);
this.valueIndex = [];
this.aliasIndex = {};
this.textIndex = {};
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (element.value == null) {
element.value = i;
}
this.addElement(element);
}
}
_createClass(Enum, [{
key: 'addElement',
value: function addElement(element) {
if (this.hasOwnProperty(element.value)) {
throw new Error('Already defined an element with value ' + element.value + ' in this enum type');
}
if (this.hasOwnProperty(element.alias)) {
throw new Error('Already defined an element with alias ' + element.alias + ' in this enum type');
}
this[element.value] = element.alias;
this[element.alias] = element.value;
this.valueIndex[element.value] = element;
this.aliasIndex[element.alias] = element;
this.textIndex[element.text] = element;
}
}, {
key: 'fromValue',
value: function fromValue(value) {
return this.valueIndex[value];
}
}, {
key: 'fromAlias',
value: function fromAlias(alias) {
return this.aliasIndex[alias];
}
}, {
key: 'fromText',
value: function fromText(text) {
return this.textIndex[text];
}
}, {
key: 'getTextFromValue',
value: function getTextFromValue(value) {
return this.fromValue(value).text;
}
}, {
key: 'getTextFromAlias',
value: function getTextFromAlias(alias) {
return this.fromAlias(alias).text;
}
}, {
key: 'getValueFromAlias',
value: function getValueFromAlias(alias) {
return this.fromAlias(alias).value;
}
}, {
key: 'getValueFromText',
value: function getValueFromText(text) {
return this.fromText(text).value;
}
}, {
key: 'getAliasFromValue',
value: function getAliasFromValue(value) {
return this.fromValue(value).alias;
}
}, {
key: 'getAliasFromText',
value: function getAliasFromText(text) {
return this.fromText(text).alias;
}
}, {
key: 'toArray',
value: function toArray() {
var array = [];
if (arguments.length > 0) {
for (var i = 0; i < arguments.length; i++) {
var hint = arguments[i];
if (typeof hint === 'string') {
array.push(this.fromAlias(hint));
} else {
array.push(hint);
}
}
} else {
for (var _i = 0; _i < this.valueIndex.length; _i++) {
if (this.valueIndex[_i]) {
array.push(this.valueIndex[_i]);
}
}
}
return array;
}
}]);
return Enum;
}();
return Enum;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9FbnVtLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFJLE9BQU8sTUFBUCxLQUFrQixVQUFsQixFQUE4QjtBQUFDLFFBQUksU0FBUyxRQUFRLFVBQVIsRUFBb0IsTUFBcEIsQ0FBVCxDQUFMO0NBQWxDOztBQUVBLE9BQU8sVUFBVSxPQUFWLEVBQW1CO0FBQ3RCLGlCQURzQjs7UUFHaEI7QUFDRix3QkFBYzs7O0FBQ1YsaUJBQUssVUFBTCxHQUFrQixFQUFsQixDQURVO0FBRVYsaUJBQUssVUFBTCxHQUFrQixFQUFsQixDQUZVO0FBR1YsaUJBQUssU0FBTCxHQUFpQixFQUFqQixDQUhVOztBQUtWLGlCQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxVQUFVLE1BQVYsRUFBa0IsR0FBdEMsRUFBMkM7QUFDdkMsb0JBQU0sVUFBVSxVQUFVLENBQVYsQ0FBVixDQURpQztBQUV2QyxvQkFBSSxRQUFRLEtBQVIsSUFBaUIsSUFBakIsRUFBdUI7QUFDdkIsNEJBQVEsS0FBUixHQUFnQixDQUFoQixDQUR1QjtpQkFBM0I7QUFHQSxxQkFBSyxVQUFMLENBQWdCLE9BQWhCLEVBTHVDO2FBQTNDO1NBTEo7Ozs7dUNBY1csU0FBUztBQUNoQixvQkFBSSxLQUFLLGNBQUwsQ0FBb0IsUUFBUSxLQUFSLENBQXhCLEVBQXdDO0FBQ3BDLDBCQUFNLElBQUksS0FBSiw0Q0FBbUQsUUFBUSxLQUFSLHVCQUFuRCxDQUFOLENBRG9DO2lCQUF4Qzs7QUFJQSxvQkFBSSxLQUFLLGNBQUwsQ0FBb0IsUUFBUSxLQUFSLENBQXhCLEVBQXdDO0FBQ3BDLDBCQUFNLElBQUksS0FBSiw0Q0FBbUQsUUFBUSxLQUFSLHVCQUFuRCxDQUFOLENBRG9DO2lCQUF4Qzs7QUFJQSxxQkFBSyxRQUFRLEtBQVIsQ0FBTCxHQUFzQixRQUFRLEtBQVIsQ0FUTjtBQVVoQixxQkFBSyxRQUFRLEtBQVIsQ0FBTCxHQUFzQixRQUFRLEtBQVIsQ0FWTjs7QUFZaEIscUJBQUssVUFBTCxDQUFnQixRQUFRLEtBQVIsQ0FBaEIsR0FBaUMsT0FBakMsQ0FaZ0I7QUFhaEIscUJBQUssVUFBTCxDQUFnQixRQUFRLEtBQVIsQ0FBaEIsR0FBaUMsT0FBakMsQ0FiZ0I7QUFjaEIscUJBQUssU0FBTCxDQUFlLFFBQVEsSUFBUixDQUFmLEdBQStCLE9BQS9CLENBZGdCOzs7O3NDQWlCVixPQUFPO0FBQ2IsdUJBQU8sS0FBSyxVQUFMLENBQWdCLEtBQWhCLENBQVAsQ0FEYTs7OztzQ0FJUCxPQUFPO0FBQ2IsdUJBQU8sS0FBSyxVQUFMLENBQWdCLEtBQWhCLENBQVAsQ0FEYTs7OztxQ0FJUixNQUFNO0FBQ1gsdUJBQU8sS0FBSyxTQUFMLENBQWUsSUFBZixDQUFQLENBRFc7Ozs7NkNBSUUsT0FBTztBQUNwQix1QkFBTyxLQUFLLFNBQUwsQ0FBZSxLQUFmLEVBQXNCLElBQXRCLENBRGE7Ozs7NkNBSVAsT0FBTztBQUNwQix1QkFBTyxLQUFLLFNBQUwsQ0FBZSxLQUFmLEVBQXNCLElBQXRCLENBRGE7Ozs7OENBSU4sT0FBTztBQUNyQix1QkFBTyxLQUFLLFNBQUwsQ0FBZSxLQUFmLEVBQXNCLEtBQXRCLENBRGM7Ozs7NkNBSVIsTUFBTTtBQUNuQix1QkFBTyxLQUFLLFFBQUwsQ0FBYyxJQUFkLEVBQW9CLEtBQXBCLENBRFk7Ozs7OENBSUwsT0FBTztBQUNyQix1QkFBTyxLQUFLLFNBQUwsQ0FBZSxLQUFmLEVBQXNCLEtBQXRCLENBRGM7Ozs7NkNBSVIsTUFBTTtBQUNuQix1QkFBTyxLQUFLLFFBQUwsQ0FBYyxJQUFkLEVBQW9CLEtBQXBCLENBRFk7Ozs7c0NBSWI7QUFDTixvQkFBTSxRQUFRLEVBQVIsQ0FEQTtBQUVOLG9CQUFJLFVBQVUsTUFBVixHQUFtQixDQUFuQixFQUFzQjtBQUN0Qix5QkFBSyxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksVUFBVSxNQUFWLEVBQWtCLEdBQXRDLEVBQTJDO0FBQ3ZDLDRCQUFNLE9BQU8sVUFBVSxDQUFWLENBQVAsQ0FEaUM7QUFFdkMsNEJBQUksT0FBTyxJQUFQLEtBQWdCLFFBQWhCLEVBQTBCO0FBQzFCLGtDQUFNLElBQU4sQ0FBVyxLQUFLLFNBQUwsQ0FBZSxJQUFmLENBQVgsRUFEMEI7eUJBQTlCLE1BR0s7QUFDRCxrQ0FBTSxJQUFOLENBQVcsSUFBWCxFQURDO3lCQUhMO3FCQUZKO2lCQURKLE1BV0s7QUFDRCx5QkFBSyxJQUFJLEtBQUksQ0FBSixFQUFPLEtBQUksS0FBSyxVQUFMLENBQWdCLE1BQWhCLEVBQXdCLElBQTVDLEVBQWlEO0FBQzdDLDRCQUFJLEtBQUssVUFBTCxDQUFnQixFQUFoQixDQUFKLEVBQXdCO0FBQ3BCLGtDQUFNLElBQU4sQ0FBVyxLQUFLLFVBQUwsQ0FBZ0IsRUFBaEIsQ0FBWCxFQURvQjt5QkFBeEI7cUJBREo7aUJBWko7O0FBbUJBLHVCQUFPLEtBQVAsQ0FyQk07Ozs7O1FBdkVROztBQWdHdEIsV0FBTyxJQUFQLENBaEdzQjtDQUFuQixDQUFQIiwiZmlsZSI6IkVudW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpZiAodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykge3ZhciBkZWZpbmUgPSByZXF1aXJlKCdhbWRlZmluZScpKG1vZHVsZSl9XG5cbmRlZmluZShmdW5jdGlvbiAocmVxdWlyZSkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIGNsYXNzIEVudW0ge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVJbmRleCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5hbGlhc0luZGV4ID0ge307XG4gICAgICAgICAgICB0aGlzLnRleHRJbmRleCA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWRkRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eShlbGVtZW50LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQWxyZWFkeSBkZWZpbmVkIGFuIGVsZW1lbnQgd2l0aCB2YWx1ZSAke2VsZW1lbnQudmFsdWV9IGluIHRoaXMgZW51bSB0eXBlYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KGVsZW1lbnQuYWxpYXMpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBbHJlYWR5IGRlZmluZWQgYW4gZWxlbWVudCB3aXRoIGFsaWFzICR7ZWxlbWVudC5hbGlhc30gaW4gdGhpcyBlbnVtIHR5cGVgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpc1tlbGVtZW50LnZhbHVlXSA9IGVsZW1lbnQuYWxpYXM7XG4gICAgICAgICAgICB0aGlzW2VsZW1lbnQuYWxpYXNdID0gZWxlbWVudC52YWx1ZTtcblxuICAgICAgICAgICAgdGhpcy52YWx1ZUluZGV4W2VsZW1lbnQudmFsdWVdID0gZWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuYWxpYXNJbmRleFtlbGVtZW50LmFsaWFzXSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLnRleHRJbmRleFtlbGVtZW50LnRleHRdID0gZWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZyb21WYWx1ZSh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVJbmRleFt2YWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICBmcm9tQWxpYXMoYWxpYXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFsaWFzSW5kZXhbYWxpYXNdO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbVRleHQodGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dEluZGV4W3RleHRdO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0VGV4dEZyb21WYWx1ZSh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVZhbHVlKHZhbHVlKS50ZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0VGV4dEZyb21BbGlhcyhhbGlhcykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbUFsaWFzKGFsaWFzKS50ZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0VmFsdWVGcm9tQWxpYXMoYWxpYXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21BbGlhcyhhbGlhcykudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRWYWx1ZUZyb21UZXh0KHRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21UZXh0KHRleHQpLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0QWxpYXNGcm9tVmFsdWUodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21WYWx1ZSh2YWx1ZSkuYWxpYXM7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRBbGlhc0Zyb21UZXh0KHRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21UZXh0KHRleHQpLmFsaWFzO1xuICAgICAgICB9XG5cbiAgICAgICAgdG9BcnJheSgpIHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gW107XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoaW50ID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhpbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHRoaXMuZnJvbUFsaWFzKGhpbnQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LnB1c2goaGludCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWVJbmRleC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUluZGV4W2ldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHRoaXMudmFsdWVJbmRleFtpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBFbnVtO1xufSk7XG4iXX0= |