@thangk/easythemer
Version:
Easily generate shades from a colour palette for use in your app
88 lines • 3.03 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../constants");
/**
* Validates HSL values
* @param hslInput HSL values to validate
* @getters getResult(), getHSLInput(), hasErrors(), getErrorsList()
* @result HSL values object or null
*/
class ValidateHSLValues {
result = null;
errors = false;
errmsg = [];
hslInput = { type: constants_1.TYPE.HSL, h: -1, s: -1, l: -1 }; // default returns error to validation
constructor(hslInput) {
this.hslInput = hslInput;
if (this.isHueOutOfRange() || this.isSaturationOutOfRange() || this.isLightnessOutOfRange()) {
this.setErrorState();
return;
}
const regex = /^[0-9]*$/;
for (const [key, value] of Object.entries(this.hslInput)) {
if (!regex.test(value.toString())) {
this.setErrorState();
this.addError(`${key.toUpperCase()} value must be a number.`);
}
}
this.result = this.errors ? null : this.hslInput;
}
get getResult() {
return this.result;
}
get getHSLInput() {
return this.hslInput;
}
get hasErrors() {
return this.errors;
}
get getErrorsList() {
return this.errmsg;
}
addError(msg) {
this.errmsg.push(msg);
}
setErrorState() {
this.errors = true;
}
showErrors() {
this.errmsg.forEach((msg) => {
console.log(msg);
});
}
isHueOutOfRange() {
if (this.hslInput.h > constants_1.HSL_LIMITS.MAX_H) {
this.addError(`Hue value is too high. Max is ${constants_1.HSL_LIMITS.MAX_H}.`);
return true;
}
if (this.hslInput.h < constants_1.HSL_LIMITS.MIN_H) {
this.addError(`Hue value is too low. Min is ${constants_1.HSL_LIMITS.MIN_H}.`);
return true;
}
return false;
}
isSaturationOutOfRange() {
if (this.hslInput.s > constants_1.HSL_LIMITS.MAX_S) {
this.addError(`Saturation value is too high. Max is ${constants_1.HSL_LIMITS.MAX_S}.`);
return true;
}
if (this.hslInput.s < constants_1.HSL_LIMITS.MIN_S) {
this.addError(`Saturation value is too low. Min is ${constants_1.HSL_LIMITS.MIN_S}.`);
return true;
}
return false;
}
isLightnessOutOfRange() {
if (this.hslInput.l > constants_1.HSL_LIMITS.MAX_L) {
this.addError(`Lightness value is too high. Max is ${constants_1.HSL_LIMITS.MAX_L}.`);
return true;
}
if (this.hslInput.l < constants_1.HSL_LIMITS.MIN_L) {
this.addError(`Lightness value is too low. Min is ${constants_1.HSL_LIMITS.MIN_L}.`);
return true;
}
return false;
}
}
exports.default = ValidateHSLValues;
//# sourceMappingURL=ValidateHSLValues.js.map