UNPKG

6.35 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.reduxLeaves = reduxLeaves;
7exports["default"] = void 0;
8
9var _leafReducer = require("./leafReducer");
10
11var _standardise = _interopRequireDefault(require("./reducersDict/standardise"));
12
13var _utils = require("./utils");
14
15var _proxy = _interopRequireDefault(require("./actions/proxy"));
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
19/**
20 *
21 * @param initialState - Initial state of the reducer
22 * @param reducersDict - Object of leaf reducer definitions keyed by creatorKeys
23 *
24 * @template TS - TreeShape
25 * @template RD - Dictionary of LeafReducer.Definition
26 */
27function reduxLeaves(initialState, reducersDict) {
28 var leafReducersDict = (0, _standardise["default"])(reducersDict || {});
29
30 var reducer = function reducer() {
31 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
32 var action = arguments.length > 1 ? arguments[1] : undefined;
33 if (!isLeafAction(action)) return state;
34 if (isCompoundAction(action)) return action.payload.reduce(reducer, state);
35 var leaf = action.leaf;
36 var path = leaf.path;
37 var prevLeafState = (0, _utils.getState)(state, path);
38 var newLeafState = (0, _leafReducer.leafReducer)(prevLeafState, action, state, initialState, leafReducersDict);
39 return (0, _utils.updateState)(state, path, newLeafState);
40 };
41
42 var actions = (0, _proxy["default"])(initialState, leafReducersDict);
43 return [reducer, actions];
44}
45
46function isLeafAction(action) {
47 // @ts-ignore
48 return action.leaf;
49}
50
51function isCompoundAction(action) {
52 return isLeafAction(action) && action.leaf.compound;
53}
54
55var _default = reduxLeaves;
56exports["default"] = _default;
57//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWR1eExlYXZlcy50cyJdLCJuYW1lcyI6WyJyZWR1eExlYXZlcyIsImluaXRpYWxTdGF0ZSIsInJlZHVjZXJzRGljdCIsImxlYWZSZWR1Y2Vyc0RpY3QiLCJyZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJpc0xlYWZBY3Rpb24iLCJpc0NvbXBvdW5kQWN0aW9uIiwicGF5bG9hZCIsInJlZHVjZSIsImxlYWYiLCJwYXRoIiwicHJldkxlYWZTdGF0ZSIsIm5ld0xlYWZTdGF0ZSIsImFjdGlvbnMiLCJjb21wb3VuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQU9BOzs7Ozs7OztBQVFBLFNBQVNBLFdBQVQsQ0FDRUMsWUFERixFQUVFQyxZQUZGLEVBR3lEO0FBQ3ZELE1BQU1DLGdCQUE0QyxHQUFHLDZCQUE0QkQsWUFBWSxJQUFJLEVBQTVDLENBQXJEOztBQUVBLE1BQU1FLE9BQTRCLEdBQUcsU0FBL0JBLE9BQStCLEdBQStDO0FBQUEsUUFBdENDLEtBQXNDLHVFQUE5QkosWUFBOEI7QUFBQSxRQUFoQkssTUFBZ0I7QUFFbEYsUUFBSSxDQUFDQyxZQUFZLENBQUNELE1BQUQsQ0FBakIsRUFBMkIsT0FBT0QsS0FBUDtBQUUzQixRQUFJRyxnQkFBZ0IsQ0FBQ0YsTUFBRCxDQUFwQixFQUE4QixPQUFPQSxNQUFNLENBQUNHLE9BQVAsQ0FBZUMsTUFBZixDQUNuQ04sT0FEbUMsRUFFbkNDLEtBRm1DLENBQVA7QUFKb0QsUUFTMUVNLElBVDBFLEdBU2pFTCxNQVRpRSxDQVMxRUssSUFUMEU7QUFBQSxRQVUxRUMsSUFWMEUsR0FVakVELElBVmlFLENBVTFFQyxJQVYwRTtBQVlsRixRQUFNQyxhQUFhLEdBQUcscUJBQVNSLEtBQVQsRUFBZ0JPLElBQWhCLENBQXRCO0FBRUEsUUFBTUUsWUFBWSxHQUFHLDhCQUNuQkQsYUFEbUIsRUFFbkJQLE1BRm1CLEVBR25CRCxLQUhtQixFQUluQkosWUFKbUIsRUFLbkJFLGdCQUxtQixDQUFyQjtBQVFBLFdBQU8sd0JBQVlFLEtBQVosRUFBbUJPLElBQW5CLEVBQXlCRSxZQUF6QixDQUFQO0FBQ0QsR0F2QkQ7O0FBeUJBLE1BQU1DLE9BQU8sR0FBRyx1QkFBc0RkLFlBQXRELEVBQW9FRSxnQkFBcEUsQ0FBaEI7QUFFQSxTQUFPLENBQUNDLE9BQUQsRUFBVVcsT0FBVixDQUFQO0FBQ0Q7O0FBRUQsU0FBU1IsWUFBVCxDQUFzQkQsTUFBdEIsRUFBeUY7QUFDdkY7QUFDQSxTQUFPQSxNQUFNLENBQUNLLElBQWQ7QUFDRDs7QUFFRCxTQUFTSCxnQkFBVCxDQUEwQkYsTUFBMUIsRUFBd0U7QUFDdEUsU0FBT0MsWUFBWSxDQUFDRCxNQUFELENBQVosSUFBd0JBLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZSyxRQUEzQztBQUNEOztlQUdjaEIsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxlYWZSZWR1Y2VyIH0gZnJvbSAnLi9sZWFmUmVkdWNlcic7XG5pbXBvcnQgc3RhbmRhcmRpc2VSZWR1Y2Vyc0RpY3QgZnJvbSAnLi9yZWR1Y2Vyc0RpY3Qvc3RhbmRhcmRpc2UnO1xuaW1wb3J0IHsgZ2V0U3RhdGUsIHVwZGF0ZVN0YXRlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBSZWR1Y2VyIH0gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHByb3h5QWN0aW9ucyBmcm9tICcuL2FjdGlvbnMvcHJveHknO1xuaW1wb3J0IHsgRmx1eFN0YW5kYXJkQWN0aW9uLCBMZWFmU3RhbmRhcmRBY3Rpb24sIExlYWZDb21wb3VuZEFjdGlvbiB9IGZyb20gJy4vdHlwZXMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IExlYWZSZWR1Y2VyIGZyb20gJy4vdHlwZXMvcmVkdWNlci50eXBlJztcbmltcG9ydCB7IEFjdGlvbnMgfSBmcm9tICcuL3R5cGVzL2FjdGlvbnMudHlwZSc7XG5cbnR5cGUgQWN0aW9uID0gRmx1eFN0YW5kYXJkQWN0aW9uIHwgTGVhZlN0YW5kYXJkQWN0aW9uIHwgTGVhZkNvbXBvdW5kQWN0aW9uXG5cbi8qKlxuICogXG4gKiBAcGFyYW0gaW5pdGlhbFN0YXRlIC0gSW5pdGlhbCBzdGF0ZSBvZiB0aGUgcmVkdWNlclxuICogQHBhcmFtIHJlZHVjZXJzRGljdCAtIE9iamVjdCBvZiBsZWFmIHJlZHVjZXIgZGVmaW5pdGlvbnMga2V5ZWQgYnkgY3JlYXRvcktleXNcbiAqIFxuICogQHRlbXBsYXRlIFRTIC0gVHJlZVNoYXBlXG4gKiBAdGVtcGxhdGUgUkQgLSBEaWN0aW9uYXJ5IG9mIExlYWZSZWR1Y2VyLkRlZmluaXRpb25cbiAqL1xuZnVuY3Rpb24gcmVkdXhMZWF2ZXM8VFMgZXh0ZW5kcyBvYmplY3QgPSBhbnksIFJEIGV4dGVuZHMgTGVhZlJlZHVjZXIuRGVmaW5pdGlvbnMgPSB7fT4oXG4gIGluaXRpYWxTdGF0ZTogVFMsXG4gIHJlZHVjZXJzRGljdD86IFJEXG4pOiBbUmVkdWNlcjxUUywgQWN0aW9uPiwgQWN0aW9ucy5CcmFuY2g8VFMsIFRTLCBUUywgUkQ+XSB7XG4gIGNvbnN0IGxlYWZSZWR1Y2Vyc0RpY3Q6IExlYWZSZWR1Y2VyLkRpY3Rpb25hcnk8UkQ+ID0gc3RhbmRhcmRpc2VSZWR1Y2Vyc0RpY3Q8UkQ+KHJlZHVjZXJzRGljdCB8fCB7fSBhcyBSRClcblxuICBjb25zdCByZWR1Y2VyOiBSZWR1Y2VyPFRTLCBBY3Rpb24+ID0gZnVuY3Rpb24oc3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKSB7XG5cbiAgICBpZiAoIWlzTGVhZkFjdGlvbihhY3Rpb24pKSByZXR1cm4gc3RhdGVcblxuICAgIGlmIChpc0NvbXBvdW5kQWN0aW9uKGFjdGlvbikpIHJldHVybiBhY3Rpb24ucGF5bG9hZC5yZWR1Y2UoXG4gICAgICByZWR1Y2VyLFxuICAgICAgc3RhdGVcbiAgICApXG5cbiAgICBjb25zdCB7IGxlYWYgfSA9IGFjdGlvbjtcbiAgICBjb25zdCB7IHBhdGggfSA9IGxlYWZcblxuICAgIGNvbnN0IHByZXZMZWFmU3RhdGUgPSBnZXRTdGF0ZShzdGF0ZSwgcGF0aClcblxuICAgIGNvbnN0IG5ld0xlYWZTdGF0ZSA9IGxlYWZSZWR1Y2VyKFxuICAgICAgcHJldkxlYWZTdGF0ZSxcbiAgICAgIGFjdGlvbixcbiAgICAgIHN0YXRlLFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgbGVhZlJlZHVjZXJzRGljdFxuICAgIClcblxuICAgIHJldHVybiB1cGRhdGVTdGF0ZShzdGF0ZSwgcGF0aCwgbmV3TGVhZlN0YXRlKVxuICB9XG5cbiAgY29uc3QgYWN0aW9ucyA9IHByb3h5QWN0aW9uczxUUywgdHlwZW9mIGxlYWZSZWR1Y2Vyc0RpY3QsIFRTLCBUUywgUkQ+KGluaXRpYWxTdGF0ZSwgbGVhZlJlZHVjZXJzRGljdClcblxuICByZXR1cm4gW3JlZHVjZXIsIGFjdGlvbnNdXG59XG5cbmZ1bmN0aW9uIGlzTGVhZkFjdGlvbihhY3Rpb246IEFjdGlvbik6IGFjdGlvbiBpcyBMZWFmU3RhbmRhcmRBY3Rpb24gfCBMZWFmQ29tcG91bmRBY3Rpb24ge1xuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBhY3Rpb24ubGVhZlxufVxuXG5mdW5jdGlvbiBpc0NvbXBvdW5kQWN0aW9uKGFjdGlvbjogQWN0aW9uKTogYWN0aW9uIGlzIExlYWZDb21wb3VuZEFjdGlvbiB7XG4gIHJldHVybiBpc0xlYWZBY3Rpb24oYWN0aW9uKSAmJiBhY3Rpb24ubGVhZi5jb21wb3VuZFxufVxuXG5leHBvcnQgeyByZWR1eExlYXZlcyB9XG5leHBvcnQgZGVmYXVsdCByZWR1eExlYXZlcyJdfQ==
\No newline at end of file