react-application-core
Version:
A react-based application core for the business applications.
93 lines • 3.81 kB
JavaScript
;
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.entityReducerFactory = exports.composeReducers = exports.filterBySection = exports.filter = exports.reducerSectionFilter = void 0;
var redux_1 = require("redux");
var R = require("ramda");
var util_1 = require("../util");
/**
* @stable - 10.04.2018
* @param {string} customSection
* @returns {FilterT}
*/
function reducerSectionFilter(customSection) {
var section;
return function (action) { return (!(section = util_1.Selectors.sectionFromAction(action)) || customSection === section); };
}
exports.reducerSectionFilter = reducerSectionFilter;
/**
* @stable - 10.04.2018
* @param {Reducer<S>} reducer
* @param {FilterT} filterObject
* @returns {Reducer<S>}
*/
exports.filter = function (reducer, filterObject) {
return function (state, action) { return (filterObject(action) ? reducer(state, action) : state); };
};
/**
* @stable - 10.04.2018
* @param {Reducer<S>} reducer
* @param {string} customSection
* @returns {Reducer<S>}
*/
exports.filterBySection = function (reducer, customSection) {
return exports.filter(reducer, reducerSectionFilter(customSection));
};
/**
* @stable - 15.04.2018
* @param {TReducersMap} reducersMap
* @returns {Reducer<ReducersMapObject>}
*/
exports.composeReducers = function (reducersMap) {
return redux_1.combineReducers(reducersMap);
};
/**
* @deprecated Use makeEntityReducer
* @param {string} updateActionType
* @param {string} destroyActionType
* @param {TPayload} initialState
* @returns {(state: TPayload, action: AnyAction) => TPayload}
*/
exports.entityReducerFactory = function (updateActionType, destroyActionType, initialState) {
if (initialState === void 0) { initialState = null; }
return function (state, action) {
if (state === void 0) { state = initialState; }
switch (action.type) {
case updateActionType:
var payloadWrapper = action.data;
var selectedWrapper = action.data;
var replacedWrapper = action.data;
var entity = util_1.coalesce(payloadWrapper.payload, selectedWrapper.selected, replacedWrapper.replaced);
// selected === null or payload === null
var defEntity = util_1.NvlUtils.coalesceDef(payloadWrapper.payload, selectedWrapper.selected, replacedWrapper.replaced);
return R.isNil(entity)
? (util_1.TypeUtils.isUndef(defEntity) ? state : defEntity)
: (util_1.TypeUtils.isPrimitive(entity)
? entity
: (Array.isArray(entity)
? __spreadArrays(entity) : (R.isNil(replacedWrapper.replaced)
? __assign(__assign({}, state), entity) : util_1.CloneUtils.shallowClone(entity))));
case destroyActionType:
return null;
}
return state;
};
};
//# sourceMappingURL=store.support.js.map