redux-data-structures
Version:
Creator functions for common reducers
39 lines (38 loc) • 1.58 kB
JavaScript
export default (function (_ref) {
var _ref$initialState = _ref.initialState,
initialState = _ref$initialState === undefined ? 0 : _ref$initialState,
_ref$incrementActionT = _ref.incrementActionTypes,
incrementActionTypes = _ref$incrementActionT === undefined ? [] : _ref$incrementActionT,
_ref$increment = _ref.increment,
increment = _ref$increment === undefined ? function () {
return 1;
} : _ref$increment,
max = _ref.max,
_ref$decrementActionT = _ref.decrementActionTypes,
decrementActionTypes = _ref$decrementActionT === undefined ? [] : _ref$decrementActionT,
_ref$decrement = _ref.decrement,
decrement = _ref$decrement === undefined ? function () {
return 1;
} : _ref$decrement,
min = _ref.min,
_ref$resetActionTypes = _ref.resetActionTypes,
resetActionTypes = _ref$resetActionTypes === undefined ? [] : _ref$resetActionTypes;
return function () {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var action = arguments[1];
var type = action.type;
if (incrementActionTypes.includes(type)) {
var m = max && max(action);
var x = state + increment(action);
return m || m === 0 ? Math.min(x, m) : x;
} else if (decrementActionTypes.includes(type)) {
var n = min && min(action);
var y = state - decrement(action);
return n || n === 0 ? Math.max(y, n) : y;
} else if (resetActionTypes.includes(type)) {
return initialState;
} else {
return state;
}
};
});