diff options
Diffstat (limited to 'lib/dojo/mouse.js.uncompressed.js')
-rw-r--r-- | lib/dojo/mouse.js.uncompressed.js | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/lib/dojo/mouse.js.uncompressed.js b/lib/dojo/mouse.js.uncompressed.js new file mode 100644 index 000000000..c6eceb476 --- /dev/null +++ b/lib/dojo/mouse.js.uncompressed.js @@ -0,0 +1,127 @@ +define("dojo/mouse", ["./_base/kernel", "./on", "./has", "./dom", "./_base/window"], function(dojo, on, has, dom, win){ + + /*===== + dojo.mouse = { + // summary: + // This module provide mouse event handling utility functions and exports + // mouseenter and mouseleave event emulation. + // enter: Synthetic Event + // This is an extension event for the mouseenter that IE provides, emulating the + // behavior on other browsers. + // leave: Synthetic Event + // This is an extension event for the mouseleave that IE provides, emulating the + // behavior on other browsers. + // isLeft: Function + // Test an event object (from a mousedown event) to see if the left button was pressed. + // isMiddle: Function + // Test an event object (from a mousedown event) to see if the middle button was pressed. + // isRight: Function + // Test an event object (from a mousedown event) to see if the right button was pressed. + // example: + // To use these events, you register a mouseenter like this: + // | define(["dojo/on", dojo/mouse"], function(on, mouse){ + // | on(targetNode, mouse.enter, function(event){ + // | dojo.addClass(targetNode, "highlighted"); + // | }); + // | on(targetNode, mouse.leave, function(event){ + // | dojo.removeClass(targetNode, "highlighted"); + // | }); + }; + ======*/ + + has.add("dom-quirks", win.doc && win.doc.compatMode == "BackCompat"); + has.add("events-mouseenter", win.doc && "onmouseenter" in win.doc.createElement("div")); + + var mouseButtons; + if(has("dom-quirks") || !has("dom-addeventlistener")){ + mouseButtons = { + LEFT: 1, + MIDDLE: 4, + RIGHT: 2, + // helper functions + isButton: function(e, button){ return e.button & button; }, + isLeft: function(e){ return e.button & 1; }, + isMiddle: function(e){ return e.button & 4; }, + isRight: function(e){ return e.button & 2; } + }; + }else{ + mouseButtons = { + LEFT: 0, + MIDDLE: 1, + RIGHT: 2, + // helper functions + isButton: function(e, button){ return e.button == button; }, + isLeft: function(e){ return e.button == 0; }, + isMiddle: function(e){ return e.button == 1; }, + isRight: function(e){ return e.button == 2; } + }; + } + dojo.mouseButtons = mouseButtons; + +/*===== + dojo.mouseButtons = { + // LEFT: Number + // Numeric value of the left mouse button for the platform. + LEFT: 0, + // MIDDLE: Number + // Numeric value of the middle mouse button for the platform. + MIDDLE: 1, + // RIGHT: Number + // Numeric value of the right mouse button for the platform. + RIGHT: 2, + + isButton: function(e, button){ + // summary: + // Checks an event object for a pressed button + // e: Event + // Event object to examine + // button: Number + // The button value (example: dojo.mouseButton.LEFT) + return e.button == button; // Boolean + }, + isLeft: function(e){ + // summary: + // Checks an event object for the pressed left button + // e: Event + // Event object to examine + return e.button == 0; // Boolean + }, + isMiddle: function(e){ + // summary: + // Checks an event object for the pressed middle button + // e: Event + // Event object to examine + return e.button == 1; // Boolean + }, + isRight: function(e){ + // summary: + // Checks an event object for the pressed right button + // e: Event + // Event object to examine + return e.button == 2; // Boolean + } + }; +=====*/ + + function eventHandler(type, mustBubble){ + // emulation of mouseenter/leave with mouseover/out using descendant checking + var handler = function(node, listener){ + return on(node, type, function(evt){ + if(!dom.isDescendant(evt.relatedTarget, mustBubble ? evt.target : node)){ + return listener.call(this, evt); + } + }); + }; + if(!mustBubble){ + handler.bubble = eventHandler(type, true); + } + return handler; + } + return { + enter: eventHandler("mouseover"), + leave: eventHandler("mouseout"), + isLeft: mouseButtons.isLeft, + isMiddle: mouseButtons.isMiddle, + isRight: mouseButtons.isRight + }; +}); |