@thangk/easythemer
Version:
Easily generate shades from a colour palette for use in your app
78 lines • 2.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../constants");
const utils_1 = require("../utils");
const useValidate_1 = __importDefault(require("./useValidate"));
/**
* **shadeOptions**
* - colour input from user to generate theme
* - user's input is validated first, if errors, return error and stop
* - if no errors, merge with default options
* - apply options to generate theme
*
* **shadeFactorsSets**
* - if user provides custom shades, validate first
* - if no errors, merge with default shades
* - apply shades to generate theme
*
* @param InputObject
* @returns
*/
function useThemer(props) {
const { shadeOptions, shadeFactorsSets } = props;
console.log("shadeOptions", shadeOptions);
let output = {
shadesSet: null,
shadeOptions: null,
shadeFactorsSets: null,
errors: {},
};
const { result: validatedShadeOptions, errors: optionsErrors } = (0, useValidate_1.default)(shadeOptions);
console.log("optionsErrors", optionsErrors);
if (optionsErrors)
return { ...output, errors: optionsErrors };
console.log("validatedShadeOptions", validatedShadeOptions);
// if no custom options, use default options
const mergedShadeOptions = [];
const nextPush = shadeOptions
? (0, utils_1.mergeObjects)(constants_1.defaultShadeOption, validatedShadeOptions)
: constants_1.defaultShadeOption;
console.log("nextPush", nextPush);
mergedShadeOptions.push(nextPush);
// if no custom shades, use default shades
const mergedShadeFactorsSet = shadeFactorsSets
? (0, utils_1.mergeObjects)(constants_1.defaultShadeFactorsSet, shadeFactorsSets)
: constants_1.defaultShadeFactorsSet;
console.log("mergedShadeOptions", mergedShadeOptions);
console.log("mergedShadeFactorsSet", mergedShadeFactorsSet);
// begin theme generation
const shadesSets = [];
mergedShadeOptions.forEach((option) => {
if (!option.generateShades) {
shadesSets.push({
type: constants_1.TYPE.SHADES_SET,
setName: option.optionName,
shades: {
normal: option.hex,
},
});
return;
}
shadesSets.push({
type: constants_1.TYPE.SHADES_SET,
setName: option.optionName,
shades: (0, utils_1.generateShades)(option, mergedShadeFactorsSet),
});
});
return {
...output,
shadeOptions: mergedShadeOptions,
shadeFactorsSets: mergedShadeFactorsSet,
shadesSets,
};
}
exports.default = useThemer;
//# sourceMappingURL=useThemer.js.map