summaryrefslogtreecommitdiff
path: root/assets/javascripts/rectangles/util
diff options
context:
space:
mode:
Diffstat (limited to 'assets/javascripts/rectangles/util')
-rw-r--r--assets/javascripts/rectangles/util/mouse.js37
1 files changed, 26 insertions, 11 deletions
diff --git a/assets/javascripts/rectangles/util/mouse.js b/assets/javascripts/rectangles/util/mouse.js
index 87a68fc..3bd5876 100644
--- a/assets/javascripts/rectangles/util/mouse.js
+++ b/assets/javascripts/rectangles/util/mouse.js
@@ -24,10 +24,11 @@ function mouse (opt) {
var base = this
opt = defaults(opt, {
- el: document,
+ el: null,
down: null,
move: null,
drag: null,
+ enter: null,
up: null,
rightclick: null,
propagate: false,
@@ -46,33 +47,42 @@ function mouse (opt) {
opt.down && base.tube.on("down", opt.down)
opt.move && base.tube.on("move", opt.move)
opt.drag && base.tube.on("drag", opt.drag)
+ opt.enter && base.tube.on("enter", opt.enter)
opt.up && base.tube.on("up", opt.up)
opt.rightclick && base.tube.on("rightclick", opt.rightclick)
- var offset = opt.el.getBoundingClientRect()
+ var offset = opt.el ? opt.el.getBoundingClientRect() : null
base.init = function (){
base.bind()
}
base.bind = function(){
- opt.el.addEventListener("mousedown", base.mousedown)
+ if (opt.el) {
+ opt.el.addEventListener("mousedown", base.mousedown)
+ opt.el.addEventListener("contextmenu", base.contextmenu)
+ }
window.addEventListener("mousemove", base.mousemove)
window.addEventListener("mouseup", base.mouseup)
- opt.el.addEventListener("contextmenu", base.contextmenu)
+ }
+ base.bind_el = function(el){
+ el.addEventListener("mousedown", base.mousedown)
+ // todo.. need a way to remove this event potentially?
}
function positionFromMouse(e) {
- var mx = offset.left - e.pageX
- var my = e.pageY - offset.top
-
- return new vec2(mx, my)
+ if (offset) {
+ return new vec2(offset.left - e.pageX, e.pageY - offset.top)
+ }
+ else {
+ return new vec2(-e.pageX, e.pageY)
+ }
}
base.mousedown = function(e){
e.stopPropagation()
-
- offset = opt.el.getBoundingClientRect()
+
+ offset = this.getBoundingClientRect()
var pos = positionFromMouse(e)
@@ -85,7 +95,7 @@ function mouse (opt) {
base.mousemove = function(e){
e.stopPropagation()
- if (! offset) return;
+ if (! offset) return
var pos = positionFromMouse(e)
@@ -106,6 +116,11 @@ function mouse (opt) {
base.tube("move", e, base.cursor)
}
}
+ base.mouseenter = function(e, el){
+ if (! offset) return
+ if (! base.down) return
+ base.tube("enter", e, el, base.cursor)
+ }
base.mouseup = function(e){
var pos, new_cursor