19 lines
440 B
JavaScript
19 lines
440 B
JavaScript
import { call } from 'frptools';
|
|
|
|
export const streamConfig = {
|
|
is: s => s && typeof s.subscribe === 'function',
|
|
sub: (s, fn) => s.subscribe(fn),
|
|
off: subList => subList.forEach(call),
|
|
on: (accum, vm) => {
|
|
const redraw = () => vm.redraw();
|
|
return accum.map(s => (streamConfig.is(s) ? streamConfig.sub(s, redraw) : s()));
|
|
},
|
|
val: (s, accum) =>{
|
|
if (streamConfig.is(s)) {
|
|
accum.push(s);
|
|
return s();
|
|
}
|
|
return s;
|
|
}
|
|
};
|