redux-data-structures
Version:
Creator functions for common reducers
39 lines (38 loc) • 1.84 kB
JavaScript
export default (function (_ref) {
var _ref$initialState = _ref.initialState,
initialState = _ref$initialState === undefined ? [] : _ref$initialState,
_ref$enqueueActionTyp = _ref.enqueueActionTypes,
enqueueActionTypes = _ref$enqueueActionTyp === undefined ? [] : _ref$enqueueActionTyp,
_ref$dequeueActionTyp = _ref.dequeueActionTypes,
dequeueActionTypes = _ref$dequeueActionTyp === undefined ? [] : _ref$dequeueActionTyp,
_ref$pushActionTypes = _ref.pushActionTypes,
pushActionTypes = _ref$pushActionTypes === undefined ? [] : _ref$pushActionTypes,
_ref$popActionTypes = _ref.popActionTypes,
popActionTypes = _ref$popActionTypes === undefined ? [] : _ref$popActionTypes,
_ref$itemGetter = _ref.itemGetter,
itemGetter = _ref$itemGetter === undefined ? function (action) {
return action.payload;
} : _ref$itemGetter,
_ref$resetActionTypes = _ref.resetActionTypes,
resetActionTypes = _ref$resetActionTypes === undefined ? [] : _ref$resetActionTypes,
_ref$emptyActionTypes = _ref.emptyActionTypes,
emptyActionTypes = _ref$emptyActionTypes === undefined ? [] : _ref$emptyActionTypes;
return function () {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var action = arguments[1];
var type = action.type;
if (enqueueActionTypes.includes(type) || pushActionTypes.includes(type)) {
return state.concat(itemGetter(action));
} else if (dequeueActionTypes.includes(type)) {
return state.slice(1);
} else if (popActionTypes.includes(type)) {
return state.slice(0, -1);
} else if (resetActionTypes.includes(type)) {
return initialState;
} else if (emptyActionTypes.includes(type)) {
return [];
} else {
return state;
}
};
});