summaryrefslogtreecommitdiff
path: root/client/lib/mouse.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/lib/mouse.js')
-rw-r--r--client/lib/mouse.js11
1 files changed, 8 insertions, 3 deletions
diff --git a/client/lib/mouse.js b/client/lib/mouse.js
index 990b8ef..809f209 100644
--- a/client/lib/mouse.js
+++ b/client/lib/mouse.js
@@ -15,6 +15,7 @@ mouse.register({
let fns = {
down: [],
move: [],
+ drag: [],
up: [],
}
@@ -27,6 +28,7 @@ export default {
register: (callbacks) => {
callbacks.down && fns.down.push(callbacks.down)
callbacks.move && fns.move.push(callbacks.move)
+ callbacks.drag && fns.drag.push(callbacks.drag)
callbacks.up && fns.up.push(callbacks.up)
}
}
@@ -36,17 +38,20 @@ let x, y, dragging = false
function down(e){
x = e.pageX
y = e.pageY
+ x /= window.innerWidth
+ y /= window.innerHeight
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
+ x /= window.innerWidth
+ y /= window.innerHeight
fns.move.map(f => f(x, y, dx, dy))
+ dragging && fns.drag.map(f => f(x, y, dx, dy))
}
function up(e){
dragging = false
@@ -61,7 +66,7 @@ function touch(f){
}
document.body.addEventListener("mousedown", down)
document.body.addEventListener("mousemove", move)
-document.body.addEventListener("mouseup", up)
+window.addEventListener("mouseup", up)
document.body.addEventListener("touchstart", touch(down))
document.body.addEventListener("touchmove", touch(move))
document.body.addEventListener("touchup", touch(up))