UNPKG

styles-merge

Version:

A JavaScript utility for merging style objects together

62 lines (52 loc) 1.3 kB
'use strict' /** * A simple utility to conditionally evaluate style properties * and merge them into a single one. * * @returns {Object} */ function StylesMerge () { const self = this return function (...stylePredicatePairs) { let mergedStyles = stylePredicatePairs.reduce((o, pair) => ({ ...o, ...pair }), {}) /** * Prototype method for an 'if-then' semantic. * * @param {Boolean} argIf * @param {Object} argThen * @returns {Object} */ self.ifThen = (argIf, argThen) => { if (argIf === true) { mergedStyles = { ...mergedStyles, ...(argThen || {}) } } return self } /** * Prototype method for an 'if-then-else' semantic. * * @param {Boolean} argIf * @param {Object} argThen * @param {Object} argElse * @returns {Object} */ self.ifThenElse = (argIf, argThen, argElse) => { if (argIf === true) { mergedStyles = { ...mergedStyles, ...(argThen || {}) } } else { mergedStyles = { ...mergedStyles, ...(argElse || {}) } } return self } /** * Return the evaulated styles. * * @returns {Object} */ self.eval = () => { return mergedStyles } return self } } module.exports = new StylesMerge()