UNPKG

color-theme-generator

Version:

Generates random color themes that are based in color theory.

130 lines (129 loc) 9.19 kB
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _Validator_instances, _Validator_validatePropertiesIsPresent, _Validator_isAnyPropertyUndefined, _Validator_isUndefined, _Validator_getPropertyUndefinedMessage, _Validator_validateMaxAndMinTypes, _Validator_isMaxOrMinNaN, _Validator_getMaxOrMinNaNMessage, _Validator_validateIsRecievedValid, _Validator_isRecievedInvalid, _Validator_getRecievedInvalidMessage, _Validator_isRecievedNaN, _Validator_getInvalidTypeMessage, _Validator_isRecievedNotColor, _Validator_isRecievedNotHTML, _Validator_isRecievedNotColorThemes, _Validator_isRecievedNotColorArray, _Validator_throwError; import { Color } from './Color.js'; import { ColorThemes } from '../enums/ColorThemes.js'; import { ExpectedTypes } from '../enums/ExpectedTypes.js'; import { MaxMinObject } from './MaxMinObject.js'; export class Validator { constructor() { _Validator_instances.add(this); } /** * Validates an argument of type number with a max and min value. * * @param values - A ValidationObject containing the values to validate. * @throws Error if a property is missing on the argument. * @throws Error if the argument does not pass the validation. */ validateNumberArgumentWithMaxAndMin(values) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_validatePropertiesIsPresent).call(this, values); __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_validateMaxAndMinTypes).call(this, values); __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_validateIsRecievedValid).call(this, values); } /** * Validates an argument of type number. * * @param recieved - The argument to validate. * @throws Error if the arguments does not pass the validation. */ validateNumberArgument(recieved) { if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNaN).call(this, recieved)) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.NUMBER)); } } /** * Validates an argument of type Color. * * @param recieved - The argument to validate. * @throws Error if the arguments does not pass the validation. */ validateColorArgument(recieved) { if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotColor).call(this, recieved)) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.COLOR)); } } /** * Validates an argument of type HTMLElement. * * @param recieved - The argument to validate. * @throws Error if the arguments does not pass the validation. */ validateHTMLElementArgument(recieved) { if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotHTML).call(this, recieved)) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.HTMLELEMENT)); } } /** * Validates an argument of type ColorThemes. * * @param recieved - The argument to validate. * @throws Error if the arguments does not pass the validation. */ validateColorThemesArgument(recieved) { if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotColorThemes).call(this, recieved)) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.COLORTHEMES)); } } /** * Validates an argument of type Color[]. * * @param recieved - The argument to validate. * @throws Error if the arguments does not pass the validation. */ validateColorArrayArgument(recieved) { if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotColorArray).call(this, recieved)) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getInvalidTypeMessage).call(this, ExpectedTypes.COLORARRAY)); } } } _Validator_instances = new WeakSet(), _Validator_validatePropertiesIsPresent = function _Validator_validatePropertiesIsPresent(values) { if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isAnyPropertyUndefined).call(this, values)) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getPropertyUndefinedMessage).call(this)); } }, _Validator_isAnyPropertyUndefined = function _Validator_isAnyPropertyUndefined(values) { return __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isUndefined).call(this, values.max) || __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isUndefined).call(this, values.min) || __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isUndefined).call(this, values.recieved); }, _Validator_isUndefined = function _Validator_isUndefined(recieved) { return recieved === undefined; }, _Validator_getPropertyUndefinedMessage = function _Validator_getPropertyUndefinedMessage() { return 'Could not validate since at least one property is missing.'; }, _Validator_validateMaxAndMinTypes = function _Validator_validateMaxAndMinTypes(values) { if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isMaxOrMinNaN).call(this, new MaxMinObject(values.max, values.min))) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getMaxOrMinNaNMessage).call(this)); } }, _Validator_isMaxOrMinNaN = function _Validator_isMaxOrMinNaN(values) { return isNaN(values.max) || isNaN(values.min); }, _Validator_getMaxOrMinNaNMessage = function _Validator_getMaxOrMinNaNMessage() { return 'Could not validate since at least one of maxValue and minValue is not of type number.'; }, _Validator_validateIsRecievedValid = function _Validator_validateIsRecievedValid(values) { if (__classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedInvalid).call(this, values)) { __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_throwError).call(this, __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_getRecievedInvalidMessage).call(this, new MaxMinObject(values.max, values.min))); } }, _Validator_isRecievedInvalid = function _Validator_isRecievedInvalid(values) { return isNaN(values.recieved) || values.recieved > values.max || values.recieved < values.min; }, _Validator_getRecievedInvalidMessage = function _Validator_getRecievedInvalidMessage(limits) { return `The argument cannot be greater than ${limits.max}, nor less than ${limits.min}.`; }, _Validator_isRecievedNaN = function _Validator_isRecievedNaN(recieved) { return isNaN(recieved); }, _Validator_getInvalidTypeMessage = function _Validator_getInvalidTypeMessage(expectedType) { return `The argument must be of type ${expectedType}.`; }, _Validator_isRecievedNotColor = function _Validator_isRecievedNotColor(recieved) { return !(recieved instanceof Color); }, _Validator_isRecievedNotHTML = function _Validator_isRecievedNotHTML(recieved) { // nodeType is a property on a Node. The value 1 means it is an element node, i.e. a HTMLElement. return recieved.nodeType !== 1; }, _Validator_isRecievedNotColorThemes = function _Validator_isRecievedNotColorThemes(recieved) { const values = Object.values(ColorThemes); return !values.includes(recieved); }, _Validator_isRecievedNotColorArray = function _Validator_isRecievedNotColorArray(recieved) { const isNotArray = !Array.isArray(recieved); const isEmpty = recieved.length === 0; const includesInvalidElement = recieved.some(color => __classPrivateFieldGet(this, _Validator_instances, "m", _Validator_isRecievedNotColor).call(this, color)); return isNotArray || isEmpty || includesInvalidElement; }, _Validator_throwError = function _Validator_throwError(errorMessage) { const error = new Error(errorMessage); throw error; };