All files / packages/design-system/scripts lib.js

0% Statements 0/30
0% Branches 0/4
0% Functions 0/18
0% Lines 0/24

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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56                                                                                                               
const Either = require('data.either');
const { toList } = require('../shared/utils/tree');
 
const find = (list, f) => Either.fromNullable(list.find(f));
 
module.exports = ui => {
  const component = name =>
    Either.of(ui.get('components')).chain(cs =>
      Either.fromNullable(cs.get(name))
    );
 
  const components = () =>
    ui
      .get('components')
      .keySeq()
      .sort();
 
  const utilities = () =>
    ui
      .get('utilities')
      .keySeq()
      .sort();
 
  const isUtil = item => item.getIn(['annotations', 'utility']);
 
  const variants = comp =>
    isUtil(comp)
      ? comp.get('restrictees')
      : toList(comp).filter(item => item.getIn(['annotations', 'variant']));
 
  const utility = name =>
    Either.of(ui.get('utilities')).chain(u => Either.fromNullable(u.get(name)));
 
  const findVariant = (comp, id) =>
    Either.of(id).chain(i => find(toList(comp), x => x.get('id') === i));
 
  const getShowcase = (comp, variant) =>
    utilities().find(u => u === comp)
      ? utility(comp).map(u => u.get('showcase'))
      : component(comp)
          .chain(c => findVariant(c, variant))
          .map(v => v.get('showcase'));
 
  // check compile/entry.js for the rest...
  return {
    ui,
    component,
    components,
    utility,
    utilities,
    variants,
    findVariant,
    getShowcase
  };
};