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.
60 lines
1.9 KiB
60 lines
1.9 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 SyntheticWheelEvent
|
||
|
* @typechecks static-only
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var SyntheticMouseEvent = require("./SyntheticMouseEvent");
|
||
|
|
||
|
/**
|
||
|
* @interface WheelEvent
|
||
|
* @see http://www.w3.org/TR/DOM-Level-3-Events/
|
||
|
*/
|
||
|
var WheelEventInterface = {
|
||
|
deltaX: function(event) {
|
||
|
return (
|
||
|
'deltaX' in event ? event.deltaX :
|
||
|
// Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
|
||
|
'wheelDeltaX' in event ? -event.wheelDeltaX : 0
|
||
|
);
|
||
|
},
|
||
|
deltaY: function(event) {
|
||
|
return (
|
||
|
'deltaY' in event ? event.deltaY :
|
||
|
// Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
|
||
|
'wheelDeltaY' in event ? -event.wheelDeltaY :
|
||
|
// Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
|
||
|
'wheelDelta' in event ? -event.wheelDelta : 0
|
||
|
);
|
||
|
},
|
||
|
deltaZ: null,
|
||
|
|
||
|
// Browsers without "deltaMode" is reporting in raw wheel delta where one
|
||
|
// notch on the scroll is always +/- 120, roughly equivalent to pixels.
|
||
|
// A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
|
||
|
// ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
|
||
|
deltaMode: null
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @param {object} dispatchConfig Configuration used to dispatch this event.
|
||
|
* @param {string} dispatchMarker Marker identifying the event target.
|
||
|
* @param {object} nativeEvent Native browser event.
|
||
|
* @extends {SyntheticMouseEvent}
|
||
|
*/
|
||
|
function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent) {
|
||
|
SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
|
||
|
}
|
||
|
|
||
|
SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
|
||
|
|
||
|
module.exports = SyntheticWheelEvent;
|