@cycle/state
Version:
Wraps your Cycle.js main function with reducer-driven state management
103 lines • 2.91 kB
JavaScript
"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