UNPKG

react-application-core

Version:

A react-based application core for the business applications.

88 lines 4.57 kB
"use strict"; var __assign = (this && this.__assign) || function () { __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; }; return __assign.apply(this, arguments); }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.stackReducer = void 0; var R = require("ramda"); var definition_1 = require("../../definition"); var stack_support_1 = require("./stack.support"); var util_1 = require("../../util"); /** * @stable [21.10.2019] * @param {IReduxStackEntity} state * @param {IEffectsAction} action * @returns {IReduxStackEntity} */ exports.stackReducer = function (state, action) { if (state === void 0) { state = definition_1.DefaultEntities.INITIAL_REDUX_STACK_ENTITY; } var stack = state.stack; var payloadEntity = action.data; switch (action.type) { /** * @stable [21.09.2019] */ case definition_1.$RAC_STACK_REMOVE_ACTION_TYPE: var sectionsToDestroy_1 = action.data; return __assign(__assign({}, state), { stack: R.filter(function (entry) { return !sectionsToDestroy_1.includes(entry.section); }, stack) .map(function (itm) { return (__assign(__assign({}, itm), { linkedSections: itm.linkedSections.filter(function (linkedSection) { return !sectionsToDestroy_1.includes(linkedSection); }) })); }) }); /** * @stable [20.09.2019] */ case definition_1.$RAC_STACK_PUSH_ACTION_TYPE: var pushSection = payloadEntity.section; // Next section var pushUrl = payloadEntity.url; // Next section url (url path) return __assign(__assign(__assign({}, state), { destroySections: __spreadArrays(definition_1.DefaultEntities.INITIAL_REDUX_STACK_ENTITY.destroySections) }), (util_1.findStackItemEntityIndexBySection(pushSection, state) > -1 // If already inserted ? {} : { stack: __spreadArrays(stack, [ { section: pushSection, url: pushUrl, linkedSections: [] } ]), })); /** * @stable [20.09.2019] * Is called from componentWillUnmount */ case definition_1.$RAC_STACK_POP_ACTION_TYPE: var previousSection = payloadEntity.section; var additionalSectionsToDestroy_1 = stack_support_1.getAdditionalStackSectionsToDestroy(previousSection, state); return __assign(__assign(__assign({}, state), { lock: definition_1.DefaultEntities.INITIAL_REDUX_STACK_ENTITY.lock, destroySections: __spreadArrays(definition_1.DefaultEntities.INITIAL_REDUX_STACK_ENTITY.destroySections) }), (state.lock ? {} // If there is a lock - do nothing : { stack: util_1.truncateStack(state, previousSection).map(function (itm) { return (__assign(__assign({}, itm), { linkedSections: itm.linkedSections.filter(function (itm0) { return !additionalSectionsToDestroy_1.includes(itm0); }) })); }), destroySections: additionalSectionsToDestroy_1, })); /** * @stable [21.09.2019] */ case definition_1.$RAC_STACK_LOCK_ACTION_TYPE: var nextSection_1 = action.data; return __assign(__assign({}, state), { lock: true, // If there is a lock - we should attach the next section to linked sections stack: stack.map(function (entry, index) { return (index === stack.length - 1 ? __assign(__assign({}, entry), { linkedSections: Array.from(new Set(entry.linkedSections.concat(nextSection_1) .filter(function (section) { return section !== entry.section; }) // Prevent the recursive links )) }) : entry); }) }); } return state; }; //# sourceMappingURL=stack.reducer.js.map