UNPKG

stapp-select

Version:

Select module for stapp - modular state manager

29 lines 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var rxjs_1 = require("rxjs"); var operators_1 = require("rxjs/operators"); var stapp_1 = require("stapp"); var constants_1 = require("./constants"); exports.select = function (_a) { var name = _a.name, selector = _a.selector, reactOn = _a.reactOn, _b = _a.reactWith, reactWith = _b === void 0 ? [] : _b; var _c; var selected = stapp_1.createEvent(constants_1.SELECT + "/" + name + ": State was selected"); var selectReducer = stapp_1.createReducer(null).on(selected, function (state, selectResult) { return selectResult || state; }); var eventFilter = stapp_1.select(reactOn.concat(stapp_1.initEvent)); var events = [selected].concat(reactWith); var reactEpic = function (event$, _, _a) { var getState = _a.getState; return event$.pipe(operators_1.filter(eventFilter), operators_1.map(function () { return selector(getState()); }), operators_1.mergeMap(function (result) { return rxjs_1.from(events.map(function (eventCreator) { return eventCreator(result); })); })); }; return { name: constants_1.SELECT + "/" + name, state: (_c = {}, _c[name] = selectReducer, _c), epic: reactEpic, useGlobalObservableConfig: false }; }; //# sourceMappingURL=select.js.map