32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
/**
|
||
|
* Copyright (c) 2013-present, Facebook, Inc.
|
||
|
*
|
||
|
* This source code is licensed under the MIT license found in the
|
||
|
* LICENSE file in the root directory of this source tree.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
var 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 extractSingleTouch(nativeEvent) {
|
||
|
var touches = nativeEvent.touches;
|
||
|
var changedTouches = nativeEvent.changedTouches;
|
||
|
var hasTouches = touches && touches.length > 0;
|
||
|
var hasChangedTouches = changedTouches && changedTouches.length > 0;
|
||
|
|
||
|
return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
module.exports = TouchEventUtils;
|