UNPKG

@thangk/easythemer

Version:

Easily generate shades from a colour palette for use in your app

88 lines 3.03 kB
"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