UNPKG

1.8 kBJavaScriptView Raw
1/**
2 * Copyright (c) 2013-present, Facebook, Inc.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 */
8
9'use strict';
10
11var SyntheticMouseEvent = require('./SyntheticMouseEvent');
12
13/**
14 * @interface WheelEvent
15 * @see http://www.w3.org/TR/DOM-Level-3-Events/
16 */
17var WheelEventInterface = {
18 deltaX: function (event) {
19 return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
20 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;
21 },
22 deltaY: function (event) {
23 return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
24 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
25 'wheelDelta' in event ? -event.wheelDelta : 0;
26 },
27 deltaZ: null,
28
29 // Browsers without "deltaMode" is reporting in raw wheel delta where one
30 // notch on the scroll is always +/- 120, roughly equivalent to pixels.
31 // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
32 // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
33 deltaMode: null
34};
35
36/**
37 * @param {object} dispatchConfig Configuration used to dispatch this event.
38 * @param {string} dispatchMarker Marker identifying the event target.
39 * @param {object} nativeEvent Native browser event.
40 * @extends {SyntheticMouseEvent}
41 */
42function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
43 return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
44}
45
46SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
47
48module.exports = SyntheticWheelEvent;
\No newline at end of file