ngrx-immer
Version: 
Immer wrappers around NgRx methods createReducer, on, and ComponentStore
48 lines (43 loc) • 1.89 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.2.1", 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.2.1", ngImport: i0, type: ImmerComponentStore });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", 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