UNPKG

@angular-redux/store

Version:
59 lines 6.78 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { distinctUntilChanged, map } from 'rxjs/operators'; import { getIn } from '../utils/get-in'; import { registerFractalReducer, replaceLocalReducer, } from './fractal-reducer-map'; import { resolveToFunctionSelector, } from './selectors'; /** * @hidden * @template State */ export class SubStore { /** * @param {?} rootStore * @param {?} basePath * @param {?} localReducer */ constructor(rootStore, basePath, localReducer) { this.rootStore = rootStore; this.basePath = basePath; this.dispatch = action => this.rootStore.dispatch(Object.assign({}, ((/** @type {?} */ (action))), { '@angular-redux::fractalkey': JSON.stringify(this.basePath) })); this.getState = () => getIn(this.rootStore.getState(), this.basePath); this.configureSubStore = (basePath, localReducer) => new SubStore(this.rootStore, [...this.basePath, ...basePath], localReducer); this.select = (selector, comparator) => this.rootStore.select(this.basePath).pipe(map(resolveToFunctionSelector(selector)), distinctUntilChanged(comparator)); this.subscribe = (listener) => { /** @type {?} */ const subscription = this.select().subscribe(listener); return () => subscription.unsubscribe(); }; this.replaceReducer = (nextLocalReducer) => replaceLocalReducer(this.basePath, nextLocalReducer); registerFractalReducer(basePath, localReducer); } } if (false) { /** @type {?} */ SubStore.prototype.dispatch; /** @type {?} */ SubStore.prototype.getState; /** @type {?} */ SubStore.prototype.configureSubStore; /** @type {?} */ SubStore.prototype.select; /** @type {?} */ SubStore.prototype.subscribe; /** @type {?} */ SubStore.prototype.replaceReducer; /** * @type {?} * @private */ SubStore.prototype.rootStore; /** * @type {?} * @private */ SubStore.prototype.basePath; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLXN0b3JlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItcmVkdXgvc3RvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3N1Yi1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG1CQUFtQixHQUNwQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFHTCx5QkFBeUIsR0FFMUIsTUFBTSxhQUFhLENBQUM7Ozs7O0FBR3JCLE1BQU0sT0FBTyxRQUFROzs7Ozs7SUFDbkIsWUFDVSxTQUF1QixFQUN2QixRQUFzQixFQUM5QixZQUF1QztRQUYvQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQWM7UUFNaEMsYUFBUSxHQUF3QixNQUFNLENBQUMsRUFBRSxDQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsbUJBQ2xCLENBQUMsbUJBQUEsTUFBTSxFQUFPLENBQUMsSUFDbEIsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQzNELENBQUM7UUFFTCxhQUFRLEdBQUcsR0FBVSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhFLHNCQUFpQixHQUFHLENBQ2xCLFFBQXNCLEVBQ3RCLFlBQTBDLEVBQ2YsRUFBRSxDQUM3QixJQUFJLFFBQVEsQ0FDVixJQUFJLENBQUMsU0FBUyxFQUNkLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQy9CLFlBQVksQ0FDYixDQUFDO1FBRUosV0FBTSxHQUFHLENBQ1AsUUFBeUMsRUFDekMsVUFBdUIsRUFDSSxFQUFFLENBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQzlDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUN4QyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FDakMsQ0FBQztRQUVKLGNBQVMsR0FBRyxDQUFDLFFBQW9CLEVBQWdCLEVBQUU7O2tCQUMzQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDdEQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUFDO1FBRUYsbUJBQWMsR0FBRyxDQUFDLGdCQUEyQyxFQUFFLEVBQUUsQ0FDL0QsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBcENyRCxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQW9DRjs7O0lBbENDLDRCQUlLOztJQUVMLDRCQUF3RTs7SUFFeEUscUNBUUk7O0lBRUosMEJBT0k7O0lBRUosNkJBR0U7O0lBRUYsa0NBQ3VEOzs7OztJQXhDckQsNkJBQStCOzs7OztJQUMvQiw0QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbnlBY3Rpb24sIERpc3BhdGNoLCBSZWR1Y2VyIH0gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgZ2V0SW4gfSBmcm9tICcuLi91dGlscy9nZXQtaW4nO1xuaW1wb3J0IHtcbiAgcmVnaXN0ZXJGcmFjdGFsUmVkdWNlcixcbiAgcmVwbGFjZUxvY2FsUmVkdWNlcixcbn0gZnJvbSAnLi9mcmFjdGFsLXJlZHVjZXItbWFwJztcbmltcG9ydCB7IE5nUmVkdXggfSBmcm9tICcuL25nLXJlZHV4JztcbmltcG9ydCB7IE9ic2VydmFibGVTdG9yZSB9IGZyb20gJy4vb2JzZXJ2YWJsZS1zdG9yZSc7XG5pbXBvcnQge1xuICBDb21wYXJhdG9yLFxuICBQYXRoU2VsZWN0b3IsXG4gIHJlc29sdmVUb0Z1bmN0aW9uU2VsZWN0b3IsXG4gIFNlbGVjdG9yLFxufSBmcm9tICcuL3NlbGVjdG9ycyc7XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgY2xhc3MgU3ViU3RvcmU8U3RhdGU+IGltcGxlbWVudHMgT2JzZXJ2YWJsZVN0b3JlPFN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdFN0b3JlOiBOZ1JlZHV4PGFueT4sXG4gICAgcHJpdmF0ZSBiYXNlUGF0aDogUGF0aFNlbGVjdG9yLFxuICAgIGxvY2FsUmVkdWNlcjogUmVkdWNlcjxTdGF0ZSwgQW55QWN0aW9uPixcbiAgKSB7XG4gICAgcmVnaXN0ZXJGcmFjdGFsUmVkdWNlcihiYXNlUGF0aCwgbG9jYWxSZWR1Y2VyKTtcbiAgfVxuXG4gIGRpc3BhdGNoOiBEaXNwYXRjaDxBbnlBY3Rpb24+ID0gYWN0aW9uID0+XG4gICAgdGhpcy5yb290U3RvcmUuZGlzcGF0Y2goe1xuICAgICAgLi4uKGFjdGlvbiBhcyBhbnkpLFxuICAgICAgJ0Bhbmd1bGFyLXJlZHV4OjpmcmFjdGFsa2V5JzogSlNPTi5zdHJpbmdpZnkodGhpcy5iYXNlUGF0aCksXG4gICAgfSk7XG5cbiAgZ2V0U3RhdGUgPSAoKTogU3RhdGUgPT4gZ2V0SW4odGhpcy5yb290U3RvcmUuZ2V0U3RhdGUoKSwgdGhpcy5iYXNlUGF0aCk7XG5cbiAgY29uZmlndXJlU3ViU3RvcmUgPSA8U3ViU3RhdGU+KFxuICAgIGJhc2VQYXRoOiBQYXRoU2VsZWN0b3IsXG4gICAgbG9jYWxSZWR1Y2VyOiBSZWR1Y2VyPFN1YlN0YXRlLCBBbnlBY3Rpb24+LFxuICApOiBPYnNlcnZhYmxlU3RvcmU8U3ViU3RhdGU+ID0+XG4gICAgbmV3IFN1YlN0b3JlPFN1YlN0YXRlPihcbiAgICAgIHRoaXMucm9vdFN0b3JlLFxuICAgICAgWy4uLnRoaXMuYmFzZVBhdGgsIC4uLmJhc2VQYXRoXSxcbiAgICAgIGxvY2FsUmVkdWNlcixcbiAgICApO1xuXG4gIHNlbGVjdCA9IDxTZWxlY3RlZFN0YXRlPihcbiAgICBzZWxlY3Rvcj86IFNlbGVjdG9yPFN0YXRlLCBTZWxlY3RlZFN0YXRlPixcbiAgICBjb21wYXJhdG9yPzogQ29tcGFyYXRvcixcbiAgKTogT2JzZXJ2YWJsZTxTZWxlY3RlZFN0YXRlPiA9PlxuICAgIHRoaXMucm9vdFN0b3JlLnNlbGVjdDxTdGF0ZT4odGhpcy5iYXNlUGF0aCkucGlwZShcbiAgICAgIG1hcChyZXNvbHZlVG9GdW5jdGlvblNlbGVjdG9yKHNlbGVjdG9yKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChjb21wYXJhdG9yKSxcbiAgICApO1xuXG4gIHN1YnNjcmliZSA9IChsaXN0ZW5lcjogKCkgPT4gdm9pZCk6ICgoKSA9PiB2b2lkKSA9PiB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5zZWxlY3QoKS5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfTtcblxuICByZXBsYWNlUmVkdWNlciA9IChuZXh0TG9jYWxSZWR1Y2VyOiBSZWR1Y2VyPFN0YXRlLCBBbnlBY3Rpb24+KSA9PlxuICAgIHJlcGxhY2VMb2NhbFJlZHVjZXIodGhpcy5iYXNlUGF0aCwgbmV4dExvY2FsUmVkdWNlcik7XG59XG4iXX0=