@vipstorage/material-color-picker
Version:
Angular Material Color Picker
64 lines • 9.71 kB
JavaScript
import { MAX_RGB, rgbaToHex, rgbToHex } from '../helpers';
export class Color {
constructor(_r, _g, _b, _a) {
this.r = _r > MAX_RGB ? MAX_RGB : _r;
this.g = _g > MAX_RGB ? MAX_RGB : _g;
this.b = _b > MAX_RGB ? MAX_RGB : _b;
if (_a != null) {
this.a = _a > 1 ? 1 : _a;
}
else {
this.a = 1;
}
this.roundA = Math.round(this.a);
this.hex = rgbToHex(this.r, this.g, this.b);
this.rgba = this.toRgba();
}
toHex(allow3Char) {
return rgbToHex(this.r, this.g, this.b, allow3Char);
}
toRgba() {
return `rgba(${this.r},${this.g},${this.b},${this.a})`;
}
toHexString(allow3Char) {
return '#' + this.toHex(allow3Char);
}
toRgbString() {
return (this.a === 1) ?
"rgb(" + Math.round(this.r) + ", " + Math.round(this.g) + ", " + Math.round(this.b) + ")" :
"rgba(" + Math.round(this.r) + ", " + Math.round(this.g) + ", " + Math.round(this.b) + ", " + this.roundA + ")";
}
toHex8(allow4Char) {
return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);
}
toHex8String(allow4Char) {
return '#' + this.toHex8(allow4Char);
}
toString(format) {
let formatSet = !!format;
let formattedString;
let hasAlpha = this.a < 1 && this.a >= 0;
let needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6"
|| format === "hex3" || format === "hex4" || format === "hex8");
if (needsAlphaFormat) {
return this.toRgbString();
}
if (format === "rgb") {
formattedString = this.toRgbString();
}
if (format === "hex" || format === "hex6") {
formattedString = this.toHexString();
}
if (format === "hex3") {
formattedString = this.toHexString(true);
}
if (format === "hex4") {
formattedString = this.toHex8String(true);
}
if (format === "hex8") {
formattedString = this.toHex8String();
}
return formattedString || this.toHexString();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xvci1waWNrZXIvc3JjL2xpYi9tb2RlbHMvY29sb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRzFELE1BQU0sT0FBTyxLQUFLO0lBV2QsWUFBWSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFXO1FBQ3ZELElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtZQUNaLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNILElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElB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QUFDLElBQUksQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQ25CLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDekM7UUFFRCxPQUFPLGVBQWUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTUFYX1JHQiwgcmdiYVRvSGV4LCByZ2JUb0hleCB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQ29sb3JJbnB1dEZvcm1hdCB9IGZyb20gJy4vY29sb3ItaW5wdXQtZm9ybWF0JztcblxuZXhwb3J0IGNsYXNzIENvbG9yIHtcblxuICAgIHB1YmxpYyByOiBudW1iZXI7XG4gICAgcHVibGljIGc6IG51bWJlcjtcbiAgICBwdWJsaWMgYjogbnVtYmVyO1xuICAgIHB1YmxpYyBhOiBudW1iZXI7XG4gICAgcHVibGljIHJvdW5kQTogbnVtYmVyO1xuXG4gICAgcHVibGljIGhleDogc3RyaW5nO1xuICAgIHB1YmxpYyByZ2JhOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihfcjogbnVtYmVyLCBfZzogbnVtYmVyLCBfYjogbnVtYmVyLCBfYT86IG51bWJlcikge1xuICAgICAgICB0aGlzLnIgPSBfciA+IE1BWF9SR0IgPyBNQVhfUkdCIDogX3I7XG4gICAgICAgIHRoaXMuZyA9IF9nID4gTUFYX1JHQiA/IE1BWF9SR0IgOiBfZztcbiAgICAgICAgdGhpcy5iID0gX2IgPiBNQVhfUkdCID8gTUFYX1JHQiA6IF9iO1xuICAgICAgICBpZiAoX2EgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5hID0gX2EgPiAxID8gMSA6IF9hO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hID0gMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdW5kQSA9IE1hdGgucm91bmQodGhpcy5hKTtcbiAgICAgICAgdGhpcy5oZXggPSByZ2JUb0hleCh0aGlzLnIsIHRoaXMuZywgdGhpcy5iKTtcbiAgICAgICAgdGhpcy5yZ2JhID0gdGhpcy50b1JnYmEoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9IZXgoYWxsb3czQ2hhcj86IGJvb2xlYW4sICk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiByZ2JUb0hleCh0aGlzLnIsIHRoaXMuZywgdGhpcy5iLCBhbGxvdzNDaGFyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9SZ2JhKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgcmdiYSgke3RoaXMucn0sJHt0aGlzLmd9LCR7dGhpcy5ifSwke3RoaXMuYX0pYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9IZXhTdHJpbmcoYWxsb3czQ2hhcj86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJyMnICsgdGhpcy50b0hleChhbGxvdzNDaGFyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9SZ2JTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmEgPT09IDEpID9cbiAgICAgICAgICAgIFwicmdiKFwiICsgTWF0aC5yb3VuZCh0aGlzLnIpICsgXCIsIFwiICsgTWF0aC5yb3VuZCh0aGlzLmcpICsgXCIsIFwiICsgTWF0aC5yb3VuZCh0aGlzLmIpICsgXCIpXCIgOlxuICAgICAgICAgICAgXCJyZ2JhKFwiICsgTWF0aC5yb3VuZCh0aGlzLnIpICsgXCIsIFwiICsgTWF0aC5yb3VuZCh0aGlzLmcpICsgXCIsIFwiICsgTWF0aC5yb3VuZCh0aGlzLmIpICsgXCIsIFwiICsgdGhpcy5yb3VuZEEgKyBcIilcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9IZXg4KGFsbG93NENoYXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcmdiYVRvSGV4KHRoaXMuciwgdGhpcy5nLCB0aGlzLmIsIHRoaXMuYSwgYWxsb3c0Q2hhcik7XG4gICAgfVxuXG4gICAgcHVibGljIHRvSGV4OFN0cmluZyhhbGxvdzRDaGFyPzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnIycgKyB0aGlzLnRvSGV4OChhbGxvdzRDaGFyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9TdHJpbmcoZm9ybWF0OiBDb2xvcklucHV0Rm9ybWF0KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGZvcm1hdFNldCA9ICEhZm9ybWF0O1xuXG4gICAgICAgIGxldCBmb3JtYXR0ZWRTdHJpbmc7XG4gICAgICAgIGxldCBoYXNBbHBoYSA9IHRoaXMuYSA8IDEgJiYgdGhpcy5hID49IDA7XG4gICAgICAgIGxldCBuZWVkc0FscGhhRm9ybWF0ID0gIWZvcm1hdFNldCAmJiBoYXNBbHBoYSAmJiAoZm9ybWF0ID09PSBcImhleFwiIHx8IGZvcm1hdCA9PT0gXCJoZXg2XCJcbiAgICAgICAgICAgIHx8IGZvcm1hdCA9PT0gXCJoZXgzXCIgfHwgZm9ybWF0ID09PSBcImhleDRcIiB8fCBmb3JtYXQgPT09IFwiaGV4OFwiKTtcblxuICAgICAgICBpZiAobmVlZHNBbHBoYUZvcm1hdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9SZ2JTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0ID09PSBcInJnYlwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvUmdiU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXhcIiB8fCBmb3JtYXQgPT09IFwiaGV4NlwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvSGV4U3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXgzXCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9IZXhTdHJpbmcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXg0XCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9IZXg4U3RyaW5nKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgPT09IFwiaGV4OFwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvSGV4OFN0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFN0cmluZyB8fCB0aGlzLnRvSGV4U3RyaW5nKCk7XG4gICAgfVxuXG59Il19