callbag-distinct-until-changed
Version:
👜 Callbag operator that drops consecutive duplicate values
40 lines (33 loc) • 740 B
JavaScript
var is = function is(previous, current) {
return previous === current;
};
function distinctUntilChanged(compare) {
if (compare === void 0) {
compare = is;
}
return function (source) {
return function (start, sink) {
if (start !== 0) return;
var inited = false;
var prev;
var talkback;
source(0, function (type, data) {
if (type === 0) {
talkback = data;
}
if (type !== 1) {
sink(type, data);
return;
}
if (inited && compare(prev, data)) {
talkback(1);
return;
}
inited = true;
prev = data;
sink(1, data);
});
};
};
}
export default distinctUntilChanged;