summaryrefslogtreecommitdiff
path: root/lib/dojo/mouse.js.uncompressed.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dojo/mouse.js.uncompressed.js')
-rw-r--r--lib/dojo/mouse.js.uncompressed.js171
1 files changed, 171 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..473345b14
--- /dev/null
+++ b/lib/dojo/mouse.js.uncompressed.js
@@ -0,0 +1,171 @@
+define("dojo/mouse", ["./_base/kernel", "./on", "./has", "./dom", "./_base/window"], function(dojo, on, has, dom, win){
+
+ // module:
+ // dojo/mouse
+
+ has.add("dom-quirks", win.doc && win.doc.compatMode == "BackCompat");
+ has.add("events-mouseenter", win.doc && "onmouseenter" in win.doc.createElement("div"));
+ has.add("events-mousewheel", win.doc && 'onmousewheel' in win.doc);
+
+ var mouseButtons;
+ if((has("dom-quirks") && has("ie")) || !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, selectHandler){
+ // emulation of mouseenter/leave with mouseover/out using descendant checking
+ var handler = function(node, listener){
+ return on(node, type, function(evt){
+ if(selectHandler){
+ return selectHandler(evt, listener);
+ }
+ if(!dom.isDescendant(evt.relatedTarget, node)){
+ return listener.call(this, evt);
+ }
+ });
+ };
+ handler.bubble = function(select){
+ return eventHandler(type, function(evt, listener){
+ // using a selector, use the select function to determine if the mouse moved inside the selector and was previously outside the selector
+ var target = select(evt.target);
+ var relatedTarget = evt.relatedTarget;
+ if(target && (target != (relatedTarget && relatedTarget.nodeType == 1 && select(relatedTarget)))){
+ return listener.call(target, evt);
+ }
+ });
+ };
+ return handler;
+ }
+ var wheel;
+ if(has("events-mousewheel")){
+ wheel = 'mousewheel';
+ }else{ //firefox
+ wheel = function(node, listener){
+ return on(node, 'DOMMouseScroll', function(evt){
+ evt.wheelDelta = -evt.detail;
+ listener.call(this, evt);
+ });
+ };
+ }
+ return {
+ // summary:
+ // This module provide mouse event handling utility functions and exports
+ // mouseenter and mouseleave event emulation.
+ // 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");
+ // | });
+
+ _eventHandler: eventHandler, // for dojo/touch
+
+ // enter: Synthetic Event
+ // This is an extension event for the mouseenter that IE provides, emulating the
+ // behavior on other browsers.
+ enter: eventHandler("mouseover"),
+
+ // leave: Synthetic Event
+ // This is an extension event for the mouseleave that IE provides, emulating the
+ // behavior on other browsers.
+ leave: eventHandler("mouseout"),
+
+ // wheel: Normalized Mouse Wheel Event
+ // This is an extension event for the mousewheel that non-Mozilla browsers provide,
+ // emulating the behavior on Mozilla based browsers.
+ wheel: wheel,
+
+ isLeft: mouseButtons.isLeft,
+ /*=====
+ isLeft: function(){
+ // summary:
+ // Test an event object (from a mousedown event) to see if the left button was pressed.
+ },
+ =====*/
+
+ isMiddle: mouseButtons.isMiddle,
+ /*=====
+ isMiddle: function(){
+ // summary:
+ // Test an event object (from a mousedown event) to see if the middle button was pressed.
+ },
+ =====*/
+
+ isRight: mouseButtons.isRight
+ /*=====
+ , isRight: function(){
+ // summary:
+ // Test an event object (from a mousedown event) to see if the right button was pressed.
+ }
+ =====*/
+ };
+});