2017-05-03 15:35:00 +02:00
|
|
|
/**
|
|
|
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|
|
|
*
|
2017-10-14 18:40:54 +02:00
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
2017-05-03 15:35:00 +02:00
|
|
|
*
|
|
|
|
* @providesModule TouchEventUtils
|
|
|
|
*/
|
|
|
|
|
|
|
|
const TouchEventUtils = {
|
|
|
|
/**
|
|
|
|
* Utility function for common case of extracting out the primary touch from a
|
|
|
|
* touch event.
|
|
|
|
* - `touchEnd` events usually do not have the `touches` property.
|
|
|
|
* http://stackoverflow.com/questions/3666929/
|
|
|
|
* mobile-sarai-touchend-event-not-firing-when-last-touch-is-removed
|
|
|
|
*
|
|
|
|
* @param {Event} nativeEvent Native event that may or may not be a touch.
|
|
|
|
* @return {TouchesObject?} an object with pageX and pageY or null.
|
|
|
|
*/
|
|
|
|
extractSingleTouch: function (nativeEvent) {
|
|
|
|
const touches = nativeEvent.touches;
|
|
|
|
const changedTouches = nativeEvent.changedTouches;
|
|
|
|
const hasTouches = touches && touches.length > 0;
|
|
|
|
const hasChangedTouches = changedTouches && changedTouches.length > 0;
|
|
|
|
|
|
|
|
return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = TouchEventUtils;
|