UNPKG

yarfl

Version:

Yet Another Redux Forms Library

73 lines 3.06 kB
"use strict"; 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; }; Object.defineProperty(exports, "__esModule", { value: true }); var types_1 = require("../actions/types"); var checkers_1 = require("../helpers/checkers"); var utils_1 = require("../helpers/utils"); exports.createArrayReducer = function () { return function (state, action) { var type = action.type; switch (type) { case types_1.default.ARRAY_FIELD_ADD: case types_1.default.ARRAY_FIELD_DELETE: break; default: return state; } var checkedAction = checkers_1.checkActionForKey(action); switch (type) { case types_1.default.ARRAY_FIELD_ADD: return createAddArrayFieldReducer()(state, checkedAction); case types_1.default.ARRAY_FIELD_DELETE: return createDeleteArrayFieldReducer()(state, checkedAction); default: return state; } }; }; var createAddArrayFieldReducer = function () { return function (state, action) { var key = checkers_1.checkActionForKey(action).key; var fieldPath = utils_1.parseKey(key); var _a = utils_1.getIn(state, ['fields'].concat(fieldPath)), fields = _a.fields, template = _a.default; var fieldKey = fieldPath.reverse()[0]; var index = fields.length; var newField = exports.createNewField(fieldKey, template, index); var targetPath = ['fields'].concat(fieldPath, ['fields']); var target = utils_1.getIn(state, targetPath); if (!target) { return state; } var updatedTarget = utils_1.append(target, newField); return utils_1.setInWithPath(state, targetPath, updatedTarget); }; }; exports.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 = checkers_1.checkActionForKeyAndIndex(action), key = _a.key, index = _a.index; var fieldPath = utils_1.parseKey(key); var targetPath = ['fields'].concat(fieldPath, ['fields']); var target = utils_1.getIn(state, targetPath); if (!target) { return state; } var updatedTarget = utils_1.removeAt(target, index); return utils_1.setInWithPath(state, targetPath, updatedTarget); }; }; //# sourceMappingURL=arrayReducer.js.map