UNPKG

ngrx-immer

Version:

Immer wrappers around NgRx methods createReducer, on, and ComponentStore

36 lines (32 loc) 1.01 kB
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