You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.1 KiB
80 lines
2.1 KiB
10 years ago
|
/**
|
||
|
* Copyright 2013-2015, Facebook, Inc.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* This source code is licensed under the BSD-style license found in the
|
||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||
|
*
|
||
|
* @providesModule SyntheticMouseEvent
|
||
|
* @typechecks static-only
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var SyntheticUIEvent = require("./SyntheticUIEvent");
|
||
|
var ViewportMetrics = require("./ViewportMetrics");
|
||
|
|
||
|
var getEventModifierState = require("./getEventModifierState");
|
||
|
|
||
|
/**
|
||
|
* @interface MouseEvent
|
||
|
* @see http://www.w3.org/TR/DOM-Level-3-Events/
|
||
|
*/
|
||
|
var MouseEventInterface = {
|
||
|
screenX: null,
|
||
|
screenY: null,
|
||
|
clientX: null,
|
||
|
clientY: null,
|
||
|
ctrlKey: null,
|
||
|
shiftKey: null,
|
||
|
altKey: null,
|
||
|
metaKey: null,
|
||
|
getModifierState: getEventModifierState,
|
||
|
button: function(event) {
|
||
|
// Webkit, Firefox, IE9+
|
||
|
// which: 1 2 3
|
||
|
// button: 0 1 2 (standard)
|
||
|
var button = event.button;
|
||
|
if ('which' in event) {
|
||
|
return button;
|
||
|
}
|
||
|
// IE<9
|
||
|
// which: undefined
|
||
|
// button: 0 0 0
|
||
|
// button: 1 4 2 (onmouseup)
|
||
|
return button === 2 ? 2 : button === 4 ? 1 : 0;
|
||
|
},
|
||
|
buttons: null,
|
||
|
relatedTarget: function(event) {
|
||
|
return event.relatedTarget || (
|
||
|
((event.fromElement === event.srcElement ? event.toElement : event.fromElement))
|
||
|
);
|
||
|
},
|
||
|
// "Proprietary" Interface.
|
||
|
pageX: function(event) {
|
||
|
return 'pageX' in event ?
|
||
|
event.pageX :
|
||
|
event.clientX + ViewportMetrics.currentScrollLeft;
|
||
|
},
|
||
|
pageY: function(event) {
|
||
|
return 'pageY' in event ?
|
||
|
event.pageY :
|
||
|
event.clientY + ViewportMetrics.currentScrollTop;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @param {object} dispatchConfig Configuration used to dispatch this event.
|
||
|
* @param {string} dispatchMarker Marker identifying the event target.
|
||
|
* @param {object} nativeEvent Native browser event.
|
||
|
* @extends {SyntheticUIEvent}
|
||
|
*/
|
||
|
function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
||
|
SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
||
|
}
|
||
|
|
||
|
SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
|
||
|
|
||
|
module.exports = SyntheticMouseEvent;
|