@future-grid/fgp-graph
Version:
fgp-graph is a chart lib based on Dygraphs
149 lines (122 loc) • 13.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hsvToRGB = hsvToRGB;
exports.FgpColor = exports.RGB_COLOR_REGEX = void 0;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var RGB_COLOR_REGEX = /\((\d+),\s*(\d+),\s*(\d+)(,\s*(\d*.\d*))?\)/;
exports.RGB_COLOR_REGEX = RGB_COLOR_REGEX;
var FgpColor =
/*#__PURE__*/
function () {
function FgpColor(r, g, b, a) {
_classCallCheck(this, FgpColor);
_defineProperty(this, "r", 0);
_defineProperty(this, "g", 0);
_defineProperty(this, "b", 0);
_defineProperty(this, "a", 1);
if (typeof r === 'string') {
r = r.trim();
if (r.indexOf('#') === 0) {
r = r.substr(r.indexOf('#') + 1);
this.r = parseInt(r.substr(0, 2), 16);
this.g = parseInt(r.substr(2, 2), 16);
this.b = parseInt(r.substr(4, 2), 16);
} else if (r.indexOf('rgb') === 0) {
var res = RGB_COLOR_REGEX.exec(r);
if (res) {
this.r = parseInt(res[1], 10);
this.g = parseInt(res[2], 10);
this.b = parseInt(res[3], 10);
this.a = res[5] ? parseFloat(res[5]) : 1;
}
}
} else {
this.r = r ? r : 0;
this.g = g ? g : 0;
this.b = b ? b : 0;
this.a = a || 1;
}
}
_createClass(FgpColor, [{
key: "toHex",
value: function toHex() {
return '#' + this.r.toString(16) + this.g.toString(16) + this.b.toString(16);
}
}, {
key: "toRgb",
value: function toRgb() {
return "rgb(".concat(this.r, ", ").concat(this.g, ", ").concat(this.b, ")");
}
}, {
key: "toRgba",
value: function toRgba() {
return "rgba(".concat(this.r, ", ").concat(this.g, ", ").concat(this.b, ", ").concat(this.a, ")");
}
}, {
key: "toRgbWithAlpha",
value: function toRgbWithAlpha(a) {
return "rgba(".concat(this.r, ", ").concat(this.g, ", ").concat(this.b, ", ").concat(a, ")");
}
}]);
return FgpColor;
}();
exports.FgpColor = FgpColor;
function hsvToRGB(hue, saturation, value) {
var red = 0;
var green = 0;
var blue = 0;
if (saturation === 0) {
red = value;
green = value;
blue = value;
} else {
var i = Math.floor(hue * 6);
var f = hue * 6 - i;
var p = value * (1 - saturation);
var q = value * (1 - saturation * f);
var t = value * (1 - saturation * (1 - f));
switch (i) {
case 1:
red = q;
green = value;
blue = p;
break;
case 2:
red = p;
green = value;
blue = t;
break;
case 3:
red = p;
green = q;
blue = value;
break;
case 4:
red = t;
green = p;
blue = value;
break;
case 5:
red = value;
green = p;
blue = q;
break;
case 6: // fall through
case 0:
red = value;
green = t;
blue = p;
break;
}
}
red = Math.floor(255 * red + 0.5);
green = Math.floor(255 * green + 0.5);
blue = Math.floor(255 * blue + 0.5);
return 'rgb(' + red + ',' + green + ',' + blue + ')';
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9jb2xvclNlcnZpY2UudHMiXSwibmFtZXMiOlsiUkdCX0NPTE9SX1JFR0VYIiwiRmdwQ29sb3IiLCJyIiwiZyIsImIiLCJhIiwidHJpbSIsImluZGV4T2YiLCJzdWJzdHIiLCJwYXJzZUludCIsInJlcyIsImV4ZWMiLCJwYXJzZUZsb2F0IiwidG9TdHJpbmciLCJoc3ZUb1JHQiIsImh1ZSIsInNhdHVyYXRpb24iLCJ2YWx1ZSIsInJlZCIsImdyZWVuIiwiYmx1ZSIsImkiLCJNYXRoIiwiZmxvb3IiLCJmIiwicCIsInEiLCJ0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sSUFBTUEsZUFBZSxHQUFHLDZDQUF4Qjs7O0lBRU1DLFE7OztBQVNULG9CQUFZQyxDQUFaLEVBQWlDQyxDQUFqQyxFQUE2Q0MsQ0FBN0MsRUFBeURDLENBQXpELEVBQXFFO0FBQUE7O0FBQUEsK0JBUmxELENBUWtEOztBQUFBLCtCQVBsRCxDQU9rRDs7QUFBQSwrQkFObEQsQ0FNa0Q7O0FBQUEsK0JBTGxELENBS2tEOztBQUNqRSxRQUFJLE9BQU9ILENBQVAsS0FBYSxRQUFqQixFQUEyQjtBQUN2QkEsTUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNJLElBQUYsRUFBSjs7QUFDQSxVQUFJSixDQUFDLENBQUNLLE9BQUYsQ0FBVSxHQUFWLE1BQW1CLENBQXZCLEVBQTBCO0FBQ3RCTCxRQUFBQSxDQUFDLEdBQUdBLENBQUMsQ0FBQ00sTUFBRixDQUFTTixDQUFDLENBQUNLLE9BQUYsQ0FBVSxHQUFWLElBQWlCLENBQTFCLENBQUo7QUFDQSxhQUFLTCxDQUFMLEdBQVNPLFFBQVEsQ0FBQ1AsQ0FBQyxDQUFDTSxNQUFGLENBQVMsQ0FBVCxFQUFZLENBQVosQ0FBRCxFQUFpQixFQUFqQixDQUFqQjtBQUNBLGFBQUtMLENBQUwsR0FBU00sUUFBUSxDQUFDUCxDQUFDLENBQUNNLE1BQUYsQ0FBUyxDQUFULEVBQVksQ0FBWixDQUFELEVBQWlCLEVB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LEtBQXJCLEdBQTZCLEdBQTdCLEdBQW1DQyxJQUFuQyxHQUEwQyxHQUFqRDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFJHQl9DT0xPUl9SRUdFWCA9IC9cXCgoXFxkKyksXFxzKihcXGQrKSxcXHMqKFxcZCspKCxcXHMqKFxcZCouXFxkKikpP1xcKS87XG5cbmV4cG9ydCBjbGFzcyBGZ3BDb2xvciB7XG4gICAgcHVibGljIHI6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGc6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGI6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGE6IG51bWJlciA9IDE7XG5cbiAgICBjb25zdHJ1Y3RvcigpXG4gICAgY29uc3RydWN0b3Iocj86IHN0cmluZylcbiAgICBjb25zdHJ1Y3RvcihyPzogc3RyaW5nIHwgbnVtYmVyLCBnPzogbnVtYmVyLCBiPzogbnVtYmVyKVxuICAgIGNvbnN0cnVjdG9yKHI/OiBzdHJpbmcgfCBudW1iZXIsIGc/OiBudW1iZXIsIGI/OiBudW1iZXIsIGE/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgciA9IHIudHJpbSgpO1xuICAgICAgICAgICAgaWYgKHIuaW5kZXhPZignIycpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgciA9IHIuc3Vic3RyKHIuaW5kZXhPZignIycpICsgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yID0gcGFyc2VJbnQoci5zdWJzdHIoMCwgMiksIDE2KTtcbiAgICAgICAgICAgICAgICB0aGlzLmcgPSBwYXJzZUludChyLnN1YnN0cigyLCAyKSwgMTYpO1xuICAgICAgICAgICAgICAgIHRoaXMuYiA9IHBhcnNlSW50KHIuc3Vic3RyKDQsIDIpLCAxNik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHIuaW5kZXhPZigncmdiJykgPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXM6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBSR0JfQ09MT1JfUkVHRVguZXhlYyhyKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuciA9IHBhcnNlSW50KHJlc1sxXSwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmcgPSBwYXJzZUludChyZXNbMl0sIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iID0gcGFyc2VJbnQocmVzWzNdLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYSA9IHJlc1s1XSA/IHBhcnNlRmxvYXQocmVzWzVdKSA6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yID0gciA/IHIgOiAwO1xuICAgICAgICAgICAgdGhpcy5nID0gZyA/IGcgOiAwO1xuICAgICAgICAgICAgdGhpcy5iID0gYiA/IGIgOiAwO1xuICAgICAgICAgICAgdGhpcy5hID0gYSB8fCAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9IZXgoKSB7XG4gICAgICAgIHJldHVybiAnIycgKyB0aGlzLnIudG9TdHJpbmcoMTYpICsgdGhpcy5nLnRvU3RyaW5nKDE2KSArIHRoaXMuYi50b1N0cmluZygxNik7XG4gICAgfVxuXG4gICAgdG9SZ2IoKSB7XG4gICAgICAgIHJldHVybiBgcmdiKCR7dGhpcy5yfSwgJHt0aGlzLmd9LCAke3RoaXMuYn0pYDtcbiAgICB9XG5cbiAgICB0b1JnYmEoKSB7XG4gICAgICAgIHJldHVybiBgcmdiYSgke3RoaXMucn0sICR7dGhpcy5nfSwgJHt0aGlzLmJ9LCAke3RoaXMuYX0pYDtcbiAgICB9XG5cbiAgICB0b1JnYldpdGhBbHBoYShhOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGByZ2JhKCR7dGhpcy5yfSwgJHt0aGlzLmd9LCAke3RoaXMuYn0sICR7YX0pYDtcbiAgICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvUkdCKGh1ZTogbnVtYmVyLCBzYXR1cmF0aW9uOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcbiAgICBsZXQgcmVkID0gMDtcbiAgICBsZXQgZ3JlZW4gPSAwO1xuICAgIGxldCBibHVlID0gMDtcbiAgICBpZiAoc2F0dXJhdGlvbiA9PT0gMCkge1xuICAgICAgICByZWQgPSB2YWx1ZTtcbiAgICAgICAgZ3JlZW4gPSB2YWx1ZTtcbiAgICAgICAgYmx1ZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpID0gTWF0aC5mbG9vcihodWUgKiA2KTtcbiAgICAgICAgbGV0IGYgPSAoaHVlICogNikgLSBpO1xuICAgICAgICBsZXQgcCA9IHZhbHVlICogKDEgLSBzYXR1cmF0aW9uKTtcbiAgICAgICAgbGV0IHEgPSB2YWx1ZSAqICgxIC0gKHNhdHVyYXRpb24gKiBmKSk7XG4gICAgICAgIGxldCB0ID0gdmFsdWUgKiAoMSAtIChzYXR1cmF0aW9uICogKDEgLSBmKSkpO1xuICAgICAgICBzd2l0Y2ggKGkpIHtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICByZWQgPSBxO1xuICAgICAgICAgICAgICAgIGdyZWVuID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYmx1ZSA9IHA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgcmVkID0gcDtcbiAgICAgICAgICAgICAgICBncmVlbiA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJsdWUgPSB0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIHJlZCA9IHA7XG4gICAgICAgICAgICAgICAgZ3JlZW4gPSBxO1xuICAgICAgICAgICAgICAgIGJsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICByZWQgPSB0O1xuICAgICAgICAgICAgICAgIGdyZWVuID0gcDtcbiAgICAgICAgICAgICAgICBibHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgcmVkID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZ3JlZW4gPSBwO1xuICAgICAgICAgICAgICAgIGJsdWUgPSBxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA2OiAvLyBmYWxsIHRocm91Z2hcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBncmVlbiA9IHQ7XG4gICAgICAgICAgICAgICAgYmx1ZSA9IHA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVkID0gTWF0aC5mbG9vcigyNTUgKiByZWQgKyAwLjUpO1xuICAgIGdyZWVuID0gTWF0aC5mbG9vcigyNTUgKiBncmVlbiArIDAuNSk7XG4gICAgYmx1ZSA9IE1hdGguZmxvb3IoMjU1ICogYmx1ZSArIDAuNSk7XG4gICAgcmV0dXJuICdyZ2IoJyArIHJlZCArICcsJyArIGdyZWVuICsgJywnICsgYmx1ZSArICcpJztcbn0iXX0=