UNPKG

@cycle/state

Version:

Wraps your Cycle.js main function with reducer-driven state management

30 lines 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var xstream_1 = require("xstream"); var concat_1 = require("xstream/extra/concat"); var StateSource_1 = require("./StateSource"); var quicktask_1 = require("quicktask"); var schedule = quicktask_1.default(); function withState(main, name) { if (name === void 0) { name = 'state'; } return function mainWithState(sources) { var reducerMimic$ = xstream_1.default.create(); var state$ = reducerMimic$ .fold(function (state, reducer) { return reducer(state); }, void 0) .drop(1); var innerSources = sources; innerSources[name] = new StateSource_1.StateSource(state$, name); var sinks = main(innerSources); if (sinks[name]) { var stream$ = concat_1.default(xstream_1.default.fromObservable(sinks[name]), xstream_1.default.never()); stream$.subscribe({ next: function (i) { return schedule(function () { return reducerMimic$._n(i); }); }, error: function (err) { return schedule(function () { return reducerMimic$._e(err); }); }, complete: function () { return schedule(function () { return reducerMimic$._c(); }); }, }); } return sinks; }; } exports.withState = withState; //# sourceMappingURL=withState.js.map