From f0cfe83e3725f9a3928da97a6e3085e79cb25309 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 18 Mar 2013 10:26:24 +0400 Subject: upgrade dojo to 1.8.3 (refs #570) --- lib/dojo/mouse.js.uncompressed.js | 171 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 lib/dojo/mouse.js.uncompressed.js (limited to 'lib/dojo/mouse.js.uncompressed.js') 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. + } + =====*/ + }; +}); -- cgit v1.2.3