UNPKG

@shoutem/redux-composers

Version:

Reducers you can use for composing reducer hierarchy like with combineReducers from redux

64 lines (48 loc) 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ACTION_OPTIONS_KEY = void 0; exports.addActionOptions = addActionOptions; exports.getActionOptions = getActionOptions; exports.setActionOption = setActionOption; var _get2 = _interopRequireDefault(require("lodash/get")); var _set2 = _interopRequireDefault(require("lodash/set")); var _isPlainObject2 = _interopRequireDefault(require("lodash/isPlainObject")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /** * Action options are additional reserved property for saving * redux composers actions settings. * * @type {string} */ var ACTION_OPTIONS_KEY = 'actionOptions'; /** * Mutates action by adding `actionOptions` to the `action.meta`. * @param action * @param actionOptions */ exports.ACTION_OPTIONS_KEY = ACTION_OPTIONS_KEY; function addActionOptions(action) { var actionOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (!(0, _isPlainObject2["default"])(action)) { throw Error("Invalid action, can not add action options to the ".concat(_typeof(action), ".") + 'Action must be an object!'); } if (!(0, _isPlainObject2["default"])(actionOptions)) { throw Error("Action options must be an object, error for action type ".concat(action.type)); } (0, _set2["default"])(action, ['meta', ACTION_OPTIONS_KEY], actionOptions); } function getActionOptions(action) { return (0, _get2["default"])(action, ['meta', ACTION_OPTIONS_KEY]); } function setActionOption(action, option, value) { var actionOptions = getActionOptions(action); if (!actionOptions) { addActionOptions(action); actionOptions = getActionOptions(action); } (0, _set2["default"])(actionOptions, option, value); return action; }