reedx
Version:
Like redux but with less code
20 lines (14 loc) • 565 B
JavaScript
import reduce from './utils/reduce'
import isFunc from './utils/isFunc'
const { assign, keys, values } = Object
const mountObject = (model, selectors) =>
reduce(keys(selectors), (obj, key, idx) => {
const selector = values(selectors)[idx]
return assign(obj, {
[key]: isFunc(selector) ? selector(model) : mountObject(model, selector)
})
}, {})
const propsFrom = (...models) => (globalState) =>
reduce(keys(models), (obj, key, idx) =>
assign(obj, mountObject(globalState, values(models)[idx].selectors)), {})
export default propsFrom