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