ts-action-immer
Version:
Immer-based reducer creators for Redux
23 lines (22 loc) • 847 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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.on = void 0;
var immer_1 = require("immer");
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 immer_1.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 };
}
exports.on = on;