-
Notifications
You must be signed in to change notification settings - Fork 206
Pairwise
Brian Cavalier edited this page Jun 17, 2016
·
1 revision
Create a stream that pairs the previous event value with the current event value, e.g. [previous, current]
import { loop, skip } from 'most'
// pairwise :: a -> Stream a -> Stream (a, a)
// Return a stream of [previous, current] event pairs
// The first pair will be [initial, first event]
const pairwise = (initial, stream) =>
loop(pairs, initial, stream)
// pairwise1 :: Stream a -> Stream (a, a)
// Variant of pairwise without an initial value
// The first pair will be [first event, second event]
const pairwise1 = stream =>
skip(1, pairwise(void 0, stream))
const pairs = (prev, current) =>
({ seed: current, value: [prev, current] })
import { mousemove } from '@most/dom-event'
const coords = mouseEvent =>
({ x: mouseEvent.clientX, y: mouseEvent.clientY })
const drawLine = (prev, current) => {
// draw a line from prev to current coordinates
}
const position = mousemove(document).map(coords)
// Use the mouse to draw
const pairs = pairwise1(position)
.observe([prev, current] => drawLine(prev, current))