ngrx-immer
Version:
Immer wrappers around NgRx methods createReducer, on, and ComponentStore
21 lines • 3.08 kB
JavaScript
import { patchState } from '@ngrx/signals';
import { immerReducer } from 'ngrx-immer';
function toFullStateUpdater(updater) {
return (state) => {
const patchedState = updater(state);
if (patchedState) {
return ({ ...state, ...patchedState });
}
return;
};
}
export function immerPatchState(state, ...updaters) {
const immerUpdaters = updaters.map(updater => {
if (typeof updater === 'function') {
return immerReducer(toFullStateUpdater(updater));
}
return updater;
});
patchState(state, ...immerUpdaters);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lnbmFscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFVBQVUsRUFBa0MsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUkxQyxTQUFTLGtCQUFrQixDQUF1QixPQUF3RTtJQUN6SCxPQUFPLENBQUMsS0FBWSxFQUFFLEVBQUU7UUFDdkIsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPO0lBQ1IsQ0FBQyxDQUFDO0FBQ0gsQ0FBQztBQUNELE1BQU0sVUFBVSxlQUFlLENBQXVCLEtBQWlDLEVBQUUsR0FBRyxRQUFxSDtJQUNoTixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzVDLElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbkMsT0FBTyxZQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQStDLENBQUM7UUFDaEcsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJ0aWFsU3RhdGVVcGRhdGVyLCBwYXRjaFN0YXRlLCBXcml0YWJsZVN0YXRlU291cmNlLCAgUHJldHRpZnkgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGltbWVyUmVkdWNlciB9IGZyb20gJ25ncngtaW1tZXInO1xuXG5leHBvcnQgdHlwZSBJbW1lclN0YXRlVXBkYXRlcjxTdGF0ZSBleHRlbmRzIG9iamVjdD4gPSAoc3RhdGU6IFN0YXRlKSA9PiB2b2lkO1xuXG5mdW5jdGlvbiB0b0Z1bGxTdGF0ZVVwZGF0ZXI8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KHVwZGF0ZXI6IFBhcnRpYWxTdGF0ZVVwZGF0ZXI8U3RhdGUgJiB7fT4gfCBJbW1lclN0YXRlVXBkYXRlcjxTdGF0ZSAmIHt9Pik6IChzdGF0ZTogU3RhdGUpID0+IFN0YXRlIHwgdm9pZCB7XG5cdHJldHVybiAoc3RhdGU6IFN0YXRlKSA9PiB7XG5cdFx0Y29uc3QgcGF0Y2hlZFN0YXRlID0gdXBkYXRlcihzdGF0ZSk7XG5cdFx0aWYgKHBhdGNoZWRTdGF0ZSkge1xuXHRcdFx0cmV0dXJuICh7IC4uLnN0YXRlLCAuLi5wYXRjaGVkU3RhdGUgfSk7XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbW1lclBhdGNoU3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KHN0YXRlOiBXcml0YWJsZVN0YXRlU291cmNlPFN0YXRlPiwgLi4udXBkYXRlcnM6IEFycmF5PFBhcnRpYWw8UHJldHRpZnk8U3RhdGU+PiB8IFBhcnRpYWxTdGF0ZVVwZGF0ZXI8UHJldHRpZnk8U3RhdGU+PiB8IEltbWVyU3RhdGVVcGRhdGVyPFByZXR0aWZ5PFN0YXRlPj4+KTogdm9pZCB7XG5cdGNvbnN0IGltbWVyVXBkYXRlcnMgPSB1cGRhdGVycy5tYXAodXBkYXRlciA9PiB7XG5cdFx0aWYgKHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRyZXR1cm4gaW1tZXJSZWR1Y2VyKHRvRnVsbFN0YXRlVXBkYXRlcih1cGRhdGVyKSkgYXMgdW5rbm93biBhcyBQYXJ0aWFsU3RhdGVVcGRhdGVyPFN0YXRlICYge30+O1xuXHRcdH1cblx0XHRyZXR1cm4gdXBkYXRlcjtcblx0fSk7XG5cdHBhdGNoU3RhdGUoc3RhdGUsIC4uLmltbWVyVXBkYXRlcnMpO1xufVxuIl19