UNPKG

@cycle/state

Version:

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

103 lines 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var xstream_1 = require("xstream"); var PickMergeListener = /** @class */ (function () { function PickMergeListener(out, p, ins) { this.ins = ins; this.out = out; this.p = p; } PickMergeListener.prototype._n = function (t) { var p = this.p, out = this.out; if (out === null) { return; } out._n(t); }; PickMergeListener.prototype._e = function (err) { var out = this.out; if (out === null) { return; } out._e(err); }; PickMergeListener.prototype._c = function () { }; return PickMergeListener; }()); var PickMerge = /** @class */ (function () { function PickMerge(sel, ins) { this.type = 'pickMerge'; this.ins = ins; this.out = null; this.sel = sel; this.ils = new Map(); this.inst = null; } PickMerge.prototype._start = function (out) { this.out = out; this.ins._add(this); }; PickMerge.prototype._stop = function () { this.ins._remove(this); var ils = this.ils; ils.forEach(function (il, key) { il.ins._remove(il); il.ins = null; il.out = null; ils.delete(key); }); ils.clear(); this.out = null; this.ils = new Map(); this.inst = null; }; PickMerge.prototype._n = function (inst) { this.inst = inst; var arrSinks = inst.arr; var ils = this.ils; var out = this.out; var sel = this.sel; var n = arrSinks.length; // add for (var i = 0; i < n; ++i) { var sinks = arrSinks[i]; var key = sinks._key; var sink = xstream_1.default.fromObservable(sinks[sel] || xstream_1.default.never()); if (!ils.has(key)) { ils.set(key, new PickMergeListener(out, this, sink)); sink._add(ils.get(key)); } } // remove ils.forEach(function (il, key) { if (!inst.dict.has(key) || !inst.dict.get(key)) { il.ins._remove(il); il.ins = null; il.out = null; ils.delete(key); } }); }; PickMerge.prototype._e = function (err) { var u = this.out; if (u === null) { return; } u._e(err); }; PickMerge.prototype._c = function () { var u = this.out; if (u === null) { return; } u._c(); }; return PickMerge; }()); function pickMerge(selector) { return function pickMergeOperator(inst$) { return new xstream_1.Stream(new PickMerge(selector, inst$)); }; } exports.pickMerge = pickMerge; //# sourceMappingURL=pickMerge.js.map