thx.stream.dom - Examples
mouse move
container
.streamMouseMove()
.map.fn('x: ${_.clientX}, y: ${_.clientY}')
.next(output.receive()).run();
click count
click
.streamClick()
.count()
.map.fn('clicks: $_')
.next(output.receive()).run();
plus & minus
plus
.streamClick().toValue(1)
.merge(
minus.streamClick().toValue(-1)
)
.reduce(function(acc, v) return acc + v, 0)
.map.fn('count: $_')
.next(output.receive()).run();
replicate text
input
.streamInput()
.map.fn(_.toUpperCase())
.next(output.receive()).run();
draw canvas
canvas.streamMouseMove()
.map(function(e) {
var bb = canvas.getBoundingClientRect();
return { x : e.clientX - bb.left, y : e.clientY - bb.top };
})
.slidingWindow(2, 2)
.pair(
canvas
.streamMouseDown().toTrue()
.merge(canvas.streamMouseUp().toFalse())
)
.filter.fn(_._1)
.left()
.next(function(e) {
ctx.beginPath();
ctx.moveTo(e[0].x, e[0].y);
ctx.lineTo(e[1].x, e[1].y);
ctx.stroke();
}).run();