ngrx-handlers
Version:
NgRx Plugin for Generating Actions and Reducer Based on the Handler Map
25 lines • 2.49 kB
JavaScript
/**
* Merges the array of reducers into one.
*
* @param reducers An array of reducers for the same state slice.
* @returns A reducer merged from the provided reducers.
*
* @example
* // movies.reducer.ts
* const moviesReducer = mergeReducers(moviesPageReducer, moviesEffectsReducer);
*
* // movies.module.ts
* \@NgModule({
* imports: [StoreModule.forFeature('movies', moviesReducer)],
* })
* export class MoviesModule {}
*
* @see combineHandlers
*/
export function mergeReducers(...reducers) {
return (state, action) => {
const reducer = reducers.find(r => r(state, action) !== state);
return reducer ? reducer(state, action) : state;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtcmVkdWNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3J4LWhhbmRsZXJzL3NyYy9saWIvbWVyZ2UtcmVkdWNlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBUSxHQUFHLFFBQWdDO0lBQ3RFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdkIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDL0QsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQU0sQ0FBQztJQUNuRCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uUmVkdWNlciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuLyoqXG4gKiBNZXJnZXMgdGhlIGFycmF5IG9mIHJlZHVjZXJzIGludG8gb25lLlxuICpcbiAqIEBwYXJhbSByZWR1Y2VycyBBbiBhcnJheSBvZiByZWR1Y2VycyBmb3IgdGhlIHNhbWUgc3RhdGUgc2xpY2UuXG4gKiBAcmV0dXJucyBBIHJlZHVjZXIgbWVyZ2VkIGZyb20gdGhlIHByb3ZpZGVkIHJlZHVjZXJzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBtb3ZpZXMucmVkdWNlci50c1xuICogY29uc3QgbW92aWVzUmVkdWNlciA9IG1lcmdlUmVkdWNlcnMobW92aWVzUGFnZVJlZHVjZXIsIG1vdmllc0VmZmVjdHNSZWR1Y2VyKTtcbiAqXG4gKiAvLyBtb3ZpZXMubW9kdWxlLnRzXG4gKiBcXEBOZ01vZHVsZSh7XG4gKiAgIGltcG9ydHM6IFtTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKCdtb3ZpZXMnLCBtb3ZpZXNSZWR1Y2VyKV0sXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIE1vdmllc01vZHVsZSB7fVxuICpcbiAqIEBzZWUgY29tYmluZUhhbmRsZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVJlZHVjZXJzPFN0YXRlPiguLi5yZWR1Y2VyczogQWN0aW9uUmVkdWNlcjxTdGF0ZT5bXSk6IEFjdGlvblJlZHVjZXI8U3RhdGU+IHtcbiAgcmV0dXJuIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJzLmZpbmQociA9PiByKHN0YXRlLCBhY3Rpb24pICE9PSBzdGF0ZSk7XG4gICAgcmV0dXJuIHJlZHVjZXIgPyByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIDogc3RhdGUhO1xuICB9O1xufVxuIl19