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 | ;
|
10 |
|
11 | var SyntheticMouseEvent = require('./SyntheticMouseEvent');
|
12 |
|
13 | /**
|
14 | * @interface WheelEvent
|
15 | * @see http://www.w3.org/TR/DOM-Level-3-Events/
|
16 | */
|
17 | var 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 | */
|
42 | function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
|
43 | return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
|
44 | }
|
45 |
|
46 | SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
|
47 |
|
48 | module.exports = SyntheticWheelEvent; |
\ | No newline at end of file |