UNPKG

@coorpacademy/progression-engine

Version:

99 lines (98 loc) 3.5 kB
"use strict"; exports.__esModule = true; exports.default = updateState; var _isEmpty2 = _interopRequireDefault(require("lodash/fp/isEmpty")); var _reduce2 = _interopRequireDefault(require("lodash/fp/reduce")); var _pipe2 = _interopRequireDefault(require("lodash/fp/pipe")); var _map2 = _interopRequireDefault(require("lodash/fp/map")); var _update2 = _interopRequireDefault(require("lodash/fp/update")); var _allAnswers = _interopRequireDefault(require("./reducers/all-answers")); var _content = _interopRequireDefault(require("./reducers/content")); var _pendingSlides = _interopRequireDefault(require("./reducers/pending-slides")); var _hasViewedAResourceAtThisStep = _interopRequireDefault(require("./reducers/has-viewed-a-resource-at-this-step")); var _isCorrect = _interopRequireDefault(require("./reducers/is-correct")); var _lives = _interopRequireDefault(require("./reducers/lives")); var _livesDisabled = _interopRequireDefault(require("./reducers/lives-disabled")); var _nextContent = _interopRequireDefault(require("./reducers/next-content")); var _remainingLifeRequests = _interopRequireDefault(require("./reducers/remaining-life-requests")); var _requestedClues = _interopRequireDefault(require("./reducers/requested-clues")); var _slides = _interopRequireDefault(require("./reducers/slides")); var _stars = _interopRequireDefault(require("./reducers/stars")); var _step = _interopRequireDefault(require("./reducers/step")); var _validate = _interopRequireDefault(require("./reducers/validate")); var _viewedResources = _interopRequireDefault(require("./reducers/viewed-resources")); var _variables = _interopRequireDefault(require("./reducers/variables")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function combineReducers(fnMap) { // eslint-disable-next-line flowtype/require-return-type const fns = (0, _map2.default)(({ fn, key }) => { return (config, action) => state => { if (!key) return fn(config)(state, action); const newState = (0, _update2.default)(key, value => fn(config)(value, action, state), state); return newState; }; }, fnMap); return config => { return (state, action) => { (0, _validate.default)(config)(state, action); return (0, _pipe2.default)(...(0, _map2.default)(fn => fn(config, action), fns))(state); }; }; } const reduceAction = combineReducers([{ key: 'livesDisabled', fn: _livesDisabled.default }, { key: 'isCorrect', fn: _isCorrect.default }, { key: 'slides', fn: _slides.default }, { key: 'lives', fn: _lives.default }, { key: 'step', fn: _step.default }, { key: 'stars', fn: _stars.default }, { key: 'requestedClues', fn: _requestedClues.default }, { key: 'viewedResources', fn: _viewedResources.default }, { key: 'remainingLifeRequests', fn: _remainingLifeRequests.default }, { key: 'hasViewedAResourceAtThisStep', fn: _hasViewedAResourceAtThisStep.default }, { key: 'content', fn: _content.default }, { key: 'nextContent', fn: _nextContent.default }, { key: 'allAnswers', fn: _allAnswers.default }, { key: 'pendingSlides', fn: _pendingSlides.default }, { fn: _variables.default }]); function updateState(config, state, actions) { if ((0, _isEmpty2.default)(actions)) { return (0, _reduce2.default)(reduceAction(config), state, [{ type: 'init' }]); } return (0, _reduce2.default)(reduceAction(config), state, actions); } //# sourceMappingURL=update-state.js.map