All files / style9/src/helpers generate-classes.js

100% Statements 15/15
100% Branches 7/7
100% Functions 4/4
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 388x           8x     115x 138x 7x       7x     131x 19x 19x       19x     112x 112x         89x     8x  
const { mapObject, mapObjectValues } = require('../utils/helpers');
const {
  getClass,
  normalizePseudoElements,
  isAtRule,
  isPseudoSelector
} = require('../utils/styles');
 
function getClassValues(styles, { atRules = [], pseudoSelectors = [] } = {}) {
  return mapObject(styles, ([name, value]) => {
    if (isAtRule(name)) {
      const newValue = getClassValues(value, {
        atRules: [...atRules, name],
        pseudoSelectors
      });
      return [name, newValue];
    }
 
    if (isPseudoSelector(name)) {
      const normalizedName = normalizePseudoElements(name);
      const newValue = getClassValues(value, {
        pseudoSelectors: [...pseudoSelectors, normalizedName],
        atRules
      });
      return [normalizedName, newValue];
    }
 
    const newValue = getClass({ name, value, atRules, pseudoSelectors });
    return [name, newValue];
  });
}
 
function generateClasses(obj) {
  return mapObjectValues(obj, value => getClassValues(value));
}
 
module.exports = generateClasses;