UNPKG

@thangk/easythemer

Version:

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

78 lines 2.94 kB
"use strict"; 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