@harmowatch/ngx-redux-core
Version:
[](https://gitter.im/harmowatch/ngx-redux-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
74 lines (73 loc) • 6.05 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable } from '@angular/core';
import { ReduxRegistry } from './redux-registry';
var ReduxReducerProvider = /** @class */ (function () {
function ReduxReducerProvider() {
this.stateProviders = {};
}
Object.defineProperty(ReduxReducerProvider.prototype, "rootReducer", {
get: /**
* @return {?}
*/
function () {
return this.reduce.bind(this);
},
enumerable: true,
configurable: true
});
/**
* @param {?} provider
* @return {?}
*/
ReduxReducerProvider.prototype.addStateProvider = /**
* @param {?} provider
* @return {?}
*/
function (provider) {
if (!this.stateProviders[provider.name]) {
ReduxRegistry.registerState(provider);
this.stateProviders[provider.name] = provider;
}
else {
throw new Error("State \"" + provider.name + "\" is registered twice! Make sure your state name is unique!");
}
};
/**
* @param {?} rootState
* @param {?} action
* @return {?}
*/
ReduxReducerProvider.prototype.reduce = /**
* @param {?} rootState
* @param {?} action
* @return {?}
*/
function (rootState, action) {
var _a;
if (action.type === ReduxRegistry.ACTION_REGISTER_STATE) {
/** @type {?} */
var regAction = (/** @type {?} */ ((action)));
return tslib_1.__assign({}, rootState, (_a = {}, _a[regAction.payload.name] = regAction.payload.initialValue, _a));
}
return Object.values(this.stateProviders).reduce(function (stateToReduce, provider) {
var _a;
return Object.assign({}, stateToReduce, (_a = {},
_a[provider.name] = provider.reduce(stateToReduce[provider.name], action),
_a));
}, rootState);
};
ReduxReducerProvider.decorators = [
{ type: Injectable }
];
return ReduxReducerProvider;
}());
export { ReduxReducerProvider };
if (false) {
/** @type {?} */
ReduxReducerProvider.prototype.stateProviders;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtcmVkdWNlci5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoYXJtb3dhdGNoL25neC1yZWR1eC1jb3JlLyIsInNvdXJjZXMiOlsicHJvdmlkZXJzL3JlZHV4LXJlZHVjZXIucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBeUIsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs4QkFTbEUsRUFBRTs7MEJBRUssNkNBQVc7Ozs7O1lBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7Ozs7OztJQUd6QiwrQ0FBZ0I7Ozs7Y0FBQyxRQUE0QjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBRSxRQUFRLENBQUMsSUFBSSxDQUFFLEVBQUU7WUFDekMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUUsR0FBRyxRQUFRLENBQUM7U0FDakQ7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBVSxRQUFRLENBQUMsSUFBSSxpRUFBNkQsQ0FBQyxDQUFDO1NBQ3ZHOzs7Ozs7O0lBR0kscUNBQU07Ozs7O2NBQUMsU0FBeUIsRUFBRSxNQUFtQzs7UUFFMUUsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRTs7WUFDdkQsSUFBTSxTQUFTLEdBQUcsb0JBQUMsTUFBWSxHQUFrRCxDQUFDO1lBRWxGLDRCQUNLLFNBQVMsZUFDVixTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksT0FDMUQ7U0FDSDtRQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsYUFBYSxFQUFFLFFBQVE7O1lBQ3ZFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYTtnQkFDcEMsR0FBRSxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUUsRUFBRSxNQUFNLENBQUM7b0JBQzFFLENBQUM7U0FDSixFQUFFLFNBQVMsQ0FBQyxDQUFDOzs7Z0JBbkNqQixVQUFVOzsrQkFSWDs7U0FTYSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlZHVjZXIgfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgeyBSZWR1eFN0YXRlUHJvdmlkZXIgfSBmcm9tICcuL3JlZHV4LXN0YXRlLnByb3ZpZGVyJztcbmltcG9ydCB7IElSZWdpc3RlclN0YXRlUGF5bG9hZCwgUmVkdXhSZWdpc3RyeSB9IGZyb20gJy4vcmVkdXgtcmVnaXN0cnknO1xuaW1wb3J0IHsgUmVkdXhSb290U3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlZHV4LXJvb3Qtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlZHV4QWN0aW9uV2l0aFBheWxvYWQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlZHV4LWFjdGlvbi13aXRoLXBheWxvYWQuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlZHV4UmVkdWNlclByb3ZpZGVyIHtcblxuICBwcml2YXRlIHN0YXRlUHJvdmlkZXJzOiB7XG4gICAgW25hbWU6IHN0cmluZ106IFJlZHV4U3RhdGVQcm92aWRlcixcbiAgfSA9IHt9O1xuXG4gIHB1YmxpYyBnZXQgcm9vdFJlZHVjZXIoKTogUmVkdWNlcjxSZWR1eFJvb3RTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnJlZHVjZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGFkZFN0YXRlUHJvdmlkZXIocHJvdmlkZXI6IFJlZHV4U3RhdGVQcm92aWRlcikge1xuICAgIGlmICghdGhpcy5zdGF0ZVByb3ZpZGVyc1sgcHJvdmlkZXIubmFtZSBdKSB7XG4gICAgICBSZWR1eFJlZ2lzdHJ5LnJlZ2lzdGVyU3RhdGUocHJvdmlkZXIpO1xuICAgICAgdGhpcy5zdGF0ZVByb3ZpZGVyc1sgcHJvdmlkZXIubmFtZSBdID0gcHJvdmlkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhdGUgXCIke3Byb3ZpZGVyLm5hbWV9XCIgaXMgcmVnaXN0ZXJlZCB0d2ljZSEgTWFrZSBzdXJlIHlvdXIgc3RhdGUgbmFtZSBpcyB1bmlxdWUhYCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZHVjZShyb290U3RhdGU6IFJlZHV4Um9vdFN0YXRlLCBhY3Rpb246IFJlZHV4QWN0aW9uV2l0aFBheWxvYWQ8YW55Pik6IFJlZHV4Um9vdFN0YXRlIHtcblxuICAgIGlmIChhY3Rpb24udHlwZSA9PT0gUmVkdXhSZWdpc3RyeS5BQ1RJT05fUkVHSVNURVJfU1RBVEUpIHtcbiAgICAgIGNvbnN0IHJlZ0FjdGlvbiA9IChhY3Rpb24gYXMge30gYXMgUmVkdXhBY3Rpb25XaXRoUGF5bG9hZDxJUmVnaXN0ZXJTdGF0ZVBheWxvYWQ+KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucm9vdFN0YXRlLFxuICAgICAgICBbIHJlZ0FjdGlvbi5wYXlsb2FkLm5hbWUgXTogcmVnQWN0aW9uLnBheWxvYWQuaW5pdGlhbFZhbHVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnN0YXRlUHJvdmlkZXJzKS5yZWR1Y2UoKHN0YXRlVG9SZWR1Y2UsIHByb3ZpZGVyKSA9PiB7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGVUb1JlZHVjZSwge1xuICAgICAgICBbIHByb3ZpZGVyLm5hbWUgXTogcHJvdmlkZXIucmVkdWNlKHN0YXRlVG9SZWR1Y2VbIHByb3ZpZGVyLm5hbWUgXSwgYWN0aW9uKSxcbiAgICAgIH0pO1xuICAgIH0sIHJvb3RTdGF0ZSk7XG4gIH1cblxufVxuIl19