UNPKG

bdn-pocket

Version:

pocket tools for managing redux and redux-saga

59 lines (38 loc) 1.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _has = require('ramda/src/has'); var _has2 = _interopRequireDefault(_has); var _path = require('ramda/src/path'); var _path2 = _interopRequireDefault(_path); var _assocPath = require('ramda/src/assocPath'); var _assocPath2 = _interopRequireDefault(_assocPath); var _dissocPath = require('ramda/src/dissocPath'); var _dissocPath2 = _interopRequireDefault(_dissocPath); var _make_reducer = require('./make_reducer'); var _make_reducer2 = _interopRequireDefault(_make_reducer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ensureArray(v) { return Array.isArray(v) ? v : [v]; } var DELETE_KEY = { del: 'my key' }; function makePathReducer(messenger, pathGetter) { var defaultState = messenger.defaultState; var subReducer = (0, _make_reducer2.default)(messenger); var reducers = messenger.reducers; var reducer = function reducer() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; var action = arguments[1]; if (!(0, _has2.default)(action.type, reducers)) return state; var pathArr = ensureArray(pathGetter(action)); var subState = (0, _path2.default)(pathArr, state); var newSubState = subReducer(subState, action); return newSubState === DELETE_KEY ? (0, _dissocPath2.default)(pathArr, state) : (0, _assocPath2.default)(pathArr, newSubState, state); }; return reducer; } makePathReducer.DELETE_KEY = DELETE_KEY; exports.default = makePathReducer;