20 lines
588 B
JavaScript
20 lines
588 B
JavaScript
/**
|
|
* Simple selector factory.
|
|
* Takes a list of string keys, and returns a simple slector for each.
|
|
*
|
|
* @function
|
|
* @param {Object|string[]} keys - If passed as object, Object.keys(keys) is used.
|
|
* @return {Object} - object of `{[key]: ({key}) => key}`
|
|
*/
|
|
const simpleSelectorFactory = (transformer, keys) => {
|
|
const selKeys = Array.isArray(keys) ? keys : Object.keys(keys);
|
|
return selKeys.reduce(
|
|
(obj, key) => ({
|
|
...obj, [key]: (state) => transformer(state)[key],
|
|
}),
|
|
{ root: (state) => transformer(state) },
|
|
);
|
|
};
|
|
|
|
export default simpleSelectorFactory;
|