UNPKG

yarfl

Version:

Yet Another Redux Forms Library

71 lines 2.91 kB
var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; import types from '../actions/types'; import { checkActionForKey, checkActionForKeyAndIndex } from '../helpers/checkers'; import { append, getIn, parseKey, removeAt, setInWithPath } from '../helpers/utils'; export var createArrayReducer = function () { return function (state, action) { var type = action.type; switch (type) { case types.ARRAY_FIELD_ADD: case types.ARRAY_FIELD_DELETE: break; default: return state; } var checkedAction = checkActionForKey(action); switch (type) { case types.ARRAY_FIELD_ADD: return createAddArrayFieldReducer()(state, checkedAction); case types.ARRAY_FIELD_DELETE: return createDeleteArrayFieldReducer()(state, checkedAction); default: return state; } }; }; var createAddArrayFieldReducer = function () { return function (state, action) { var key = checkActionForKey(action).key; var fieldPath = parseKey(key); var _a = getIn(state, ['fields'].concat(fieldPath)), fields = _a.fields, template = _a.default; var fieldKey = fieldPath.reverse()[0]; var index = fields.length; var newField = createNewField(fieldKey, template, index); var targetPath = ['fields'].concat(fieldPath, ['fields']); var target = getIn(state, targetPath); if (!target) { return state; } var updatedTarget = append(target, newField); return setInWithPath(state, targetPath, updatedTarget); }; }; export var createNewField = function (parentKey, template, index) { // check if it is proper type of field if (typeof template === 'undefined') { throw new Error(); } return Object.entries(template).reduce(function (acc, _a) { var k = _a[0], entry = _a[1]; var _b; var _c = entry, childKey = _c.key, id = _c.id; return __assign({}, acc, (_b = {}, _b[k] = __assign({}, entry, { key: childKey + "[" + index + "]", id: id + "-" + index, name: parentKey + "[][" + childKey + "]" }), _b)); }, {}); }; var createDeleteArrayFieldReducer = function () { return function (state, action) { var _a = checkActionForKeyAndIndex(action), key = _a.key, index = _a.index; var fieldPath = parseKey(key); var targetPath = ['fields'].concat(fieldPath, ['fields']); var target = getIn(state, targetPath); if (!target) { return state; } var updatedTarget = removeAt(target, index); return setInWithPath(state, targetPath, updatedTarget); }; }; //# sourceMappingURL=arrayReducer.js.map