ngrx-immer
Version:
Immer wrappers around NgRx methods createReducer, on, and ComponentStore
36 lines (32 loc) • 1.01 kB
JavaScript
import { patchState } from '@ngrx/signals';
import { immerReducer } from 'ngrx-immer';
import { on } from '@ngrx/signals/events';
import { produce } from 'immer';
function toFullStateUpdater(updater) {
return (state) => {
const patchedState = updater(state);
if (patchedState) {
return ({ ...state, ...patchedState });
}
return;
};
}
function immerPatchState(stateSource, ...updaters) {
const immerUpdaters = updaters.map(updater => {
if (typeof updater === 'function') {
return immerReducer(toFullStateUpdater(updater));
}
return updater;
});
patchState(stateSource, ...immerUpdaters);
}
function immerOn(...args) {
const reducer = args.pop();
const events = args;
return on(...events, (action, state) => produce(state, (draft) => reducer(draft, action)));
}
/**
* Generated bundle index. Do not edit.
*/
export { immerOn, immerPatchState };
//# sourceMappingURL=ngrx-immer-signals.mjs.map