diff --git a/src/renderers/dom/client/syntheticEvents/SyntheticMouseEvent.js b/src/renderers/dom/client/syntheticEvents/SyntheticMouseEvent.js index e8962b9adecbae..c85bb49827867d 100644 --- a/src/renderers/dom/client/syntheticEvents/SyntheticMouseEvent.js +++ b/src/renderers/dom/client/syntheticEvents/SyntheticMouseEvent.js @@ -13,6 +13,7 @@ var SyntheticUIEvent = require('SyntheticUIEvent'); var ViewportMetrics = require('ViewportMetrics'); +var MouseMetrics = require('MouseMetrics'); var getEventModifierState = require('getEventModifierState'); @@ -63,6 +64,20 @@ var MouseEventInterface = { event.pageY : event.clientY + ViewportMetrics.currentScrollTop; }, + movementX: function(event) { + const movementX = 'movementX' in event ? + event.movementX : + event.screenX - MouseMetrics.previousScreenX; + MouseMetrics.setPreviousScreenX(event.screenX); + return movementX; + }, + movementY: function(event) { + const movementY = 'movementY' in event ? + event.movementY : + event.screenY - MouseMetrics.previousScreenY; + MouseMetrics.setPreviousScreenY(event.screenY); + return movementY; + }, }; /** diff --git a/src/renderers/dom/client/utils/MouseMetrics.js b/src/renderers/dom/client/utils/MouseMetrics.js new file mode 100644 index 00000000000000..7b01103715a195 --- /dev/null +++ b/src/renderers/dom/client/utils/MouseMetrics.js @@ -0,0 +1,30 @@ +/** + * Copyright 2013-present, 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 MouseMetrics + */ + +'use strict'; + +var MouseMetrics = { + + previousScreenX: 0, + + previousScreenY: 0, + + setPreviousScreenX: function(value) { + MouseMetrics.previousScreenX = value; + }, + + setPreviousScreenY: function(value) { + MouseMetrics.previousScreenY = value; + }, + +}; + +module.exports = MouseMetrics;