Files
frontend-app-learner-dashboard/src/data/utils.js
2022-05-25 14:27:26 -04:00

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;