ngrx-immer
Version:
Immer wrappers around NgRx methods createReducer, on, and ComponentStore
48 lines (43 loc) • 1.9 kB
JavaScript
import * as i0 from '@angular/core';
import { Optional, Inject, Injectable } from '@angular/core';
import { ComponentStore, INITIAL_STATE_TOKEN, provideComponentStore } from '@ngrx/component-store';
import { immerReducer } from 'ngrx-immer/shared';
import { produce } from 'immer';
/**
* Immer wrapper around `ImmerComponentStore` to mutate state
* with `updater` and `setState`
*/
class ImmerComponentStore extends ComponentStore {
constructor(defaultState) {
super(produce(defaultState, s => s));
}
updater(updaterFn) {
return super.updater(immerReducer(updaterFn));
}
setState(stateOrUpdaterFn) {
super.setState(stateOrUpdaterFn);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ImmerComponentStore, deps: [{ token: INITIAL_STATE_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ImmerComponentStore });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ImmerComponentStore, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [INITIAL_STATE_TOKEN]
}] }] });
/**
* @description
* Immer wrapper around `provideComponentStore()` in `@ngrx/component-store`.
* @returns the ImmerComponentStore class registered as a provider
*/
function provideImmerComponentStore(componentStoreClass) {
return provideComponentStore(componentStoreClass);
}
/**
* Generated bundle index. Do not edit.
*/
export { ImmerComponentStore, provideImmerComponentStore };
//# sourceMappingURL=ngrx-immer-component-store.mjs.map