UNPKG

@cycle/state

Version:

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

27 lines 1.17 kB
import xs from 'xstream'; import concat from 'xstream/extra/concat'; import { StateSource } from './StateSource'; import microtask from 'quicktask'; var schedule = microtask(); export function withState(main, name) { if (name === void 0) { name = 'state'; } return function mainWithState(sources) { var reducerMimic$ = xs.create(); var state$ = reducerMimic$ .fold(function (state, reducer) { return reducer(state); }, void 0) .drop(1); var innerSources = sources; innerSources[name] = new StateSource(state$, name); var sinks = main(innerSources); if (sinks[name]) { var stream$ = concat(xs.fromObservable(sinks[name]), xs.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; }; } //# sourceMappingURL=withState.js.map