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 }; }; |