Streams

Here you can see how streams works:

$blue
$red
Original event
var blue = $blue.stream('click');
Original event
var red = $red.stream('click')
Mapped event. Contains event's property clientX.
var clientXes = blue.map('.clientX')
function moreThan50Percents(x){
	return x > this.width()/2;
}

clientXes.filter(moreThan50Percents)
Skips first 3 events and takes only 3 events
var slice = blue.skip(3).take(3).map('blue')
function sum(a, b){
	return a + b;
}

clientXes.reduce(sum)
Repeat events
blue.map('Hey!').repeat(5, 200)
Collecting all clientYs for 2 seconds
red.map('.clientY').getCollected(2000)
Takes only different events
red.map('.clientY').diff()
Debounce for 2 seconds
red.map('red').debounce(1000)
Delays for 750 milliseconds
red.map('red').delay(750)
Interpolate event's data
red.interpolate("X:{{clientX}}, Y:{{clientY}}")
Merges two streams
red.merge(blue)
Synchonizes two streams
red.map(0).sync(blue.map(1))
Composes two streams
red.map(0).waitFor(blue)
Composes two streams
v>
red.map(0).after(blue)
blue.map(random).resolve(blue.map(random), bigger)
blue.map('.timeStamp').combine(blue.map('.timeStamp'), resolver