ts-action-immer
Version:
Immer-based reducer creators for Redux
19 lines (18 loc) • 728 B
JavaScript
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
import { produce } from "immer";
export function on() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var draftReducer = args.pop();
var reducer = function (state, action) {
return produce(state, function (draft) { return draftReducer(draft, action); });
};
var types = args.reduce(function (result, creator) { return __spreadArray(__spreadArray([], result), [creator.type]); }, []);
return { reducer: reducer, types: types };
}