diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-03-03 05:38:35 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-03-03 05:38:35 +0100 |
| commit | 636b62aa6d0d77e19a4b7bb3c039924eeb217a71 (patch) | |
| tree | 042fa3404738e347f8d60f419fa600aa6030c61b /client/lib/mouse.js | |
hall demo
Diffstat (limited to 'client/lib/mouse.js')
| -rw-r--r-- | client/lib/mouse.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/client/lib/mouse.js b/client/lib/mouse.js new file mode 100644 index 0000000..990b8ef --- /dev/null +++ b/client/lib/mouse.js @@ -0,0 +1,67 @@ +/* + +mouse.register({ + down: (x, y) => { + }, + move: (x, y, dx, dy) => { + }, + up: (x, y) => { + }, +}) + +*/ + + +let fns = { + down: [], + move: [], + up: [], +} + +document.body.scrollTo(0,0) +document.body.parentNode.scrollTo(0,0) +document.body.addEventListener("scroll", function(e){ e.preventDefault() }) +document.body.parentNode.addEventListener("scroll", function(e){ e.preventDefault() }) + +export default { + register: (callbacks) => { + callbacks.down && fns.down.push(callbacks.down) + callbacks.move && fns.move.push(callbacks.move) + callbacks.up && fns.up.push(callbacks.up) + } +} + +let x, y, dragging = false + +function down(e){ + x = e.pageX + y = e.pageY + dragging = true + fns.down.map(f => f(x, y)) +} +function move(e){ + if (!dragging) return + let dx = e.pageX - x + let dy = e.pageY - y + x = e.pageX + y = e.pageY + dragging = true + fns.move.map(f => f(x, y, dx, dy)) +} +function up(e){ + dragging = false + fns.up.map(f => f(x, y)) +} + +function touch(f){ + return (e) => { + e.preventDefault() + f(e.touches[0]) + } +} +document.body.addEventListener("mousedown", down) +document.body.addEventListener("mousemove", move) +document.body.addEventListener("mouseup", up) +document.body.addEventListener("touchstart", touch(down)) +document.body.addEventListener("touchmove", touch(move)) +document.body.addEventListener("touchup", touch(up)) |
