mirror of
https://github.com/zoriya/react-native-web.git
synced 2026-06-01 01:59:10 +00:00
Use React's 'TouchHistoryMath' module
This commit is contained in:
@@ -1,124 +0,0 @@
|
|||||||
/* eslint-disable */
|
|
||||||
/**
|
|
||||||
* Copyright (c) 2015-present, Facebook, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var TouchHistoryMath = {
|
|
||||||
/**
|
|
||||||
* This code is optimized and not intended to look beautiful. This allows
|
|
||||||
* computing of touch centroids that have moved after `touchesChangedAfter`
|
|
||||||
* timeStamp. You can compute the current centroid involving all touches
|
|
||||||
* moves after `touchesChangedAfter`, or you can compute the previous
|
|
||||||
* centroid of all touches that were moved after `touchesChangedAfter`.
|
|
||||||
*
|
|
||||||
* @param {TouchHistoryMath} touchHistory Standard Responder touch track
|
|
||||||
* data.
|
|
||||||
* @param {number} touchesChangedAfter timeStamp after which moved touches
|
|
||||||
* are considered "actively moving" - not just "active".
|
|
||||||
* @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension.
|
|
||||||
* @param {boolean} ofCurrent Compute current centroid for actively moving
|
|
||||||
* touches vs. previous centroid of now actively moving touches.
|
|
||||||
* @return {number} value of centroid in specified dimension.
|
|
||||||
*/
|
|
||||||
centroidDimension: function(touchHistory, touchesChangedAfter, isXAxis, ofCurrent) {
|
|
||||||
var touchBank = touchHistory.touchBank;
|
|
||||||
var total = 0;
|
|
||||||
var count = 0;
|
|
||||||
|
|
||||||
var oneTouchData = touchHistory.numberActiveTouches === 1 ?
|
|
||||||
touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch] : null;
|
|
||||||
|
|
||||||
if (oneTouchData !== null) {
|
|
||||||
if (oneTouchData.touchActive && oneTouchData.currentTimeStamp > touchesChangedAfter) {
|
|
||||||
total += ofCurrent && isXAxis ? oneTouchData.currentPageX :
|
|
||||||
ofCurrent && !isXAxis ? oneTouchData.currentPageY :
|
|
||||||
!ofCurrent && isXAxis ? oneTouchData.previousPageX :
|
|
||||||
oneTouchData.previousPageY;
|
|
||||||
count = 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (var i = 0; i < touchBank.length; i++) {
|
|
||||||
var touchTrack = touchBank[i];
|
|
||||||
if (touchTrack !== null &&
|
|
||||||
touchTrack !== undefined &&
|
|
||||||
touchTrack.touchActive &&
|
|
||||||
touchTrack.currentTimeStamp >= touchesChangedAfter) {
|
|
||||||
var toAdd; // Yuck, program temporarily in invalid state.
|
|
||||||
if (ofCurrent && isXAxis) {
|
|
||||||
toAdd = touchTrack.currentPageX;
|
|
||||||
} else if (ofCurrent && !isXAxis) {
|
|
||||||
toAdd = touchTrack.currentPageY;
|
|
||||||
} else if (!ofCurrent && isXAxis) {
|
|
||||||
toAdd = touchTrack.previousPageX;
|
|
||||||
} else {
|
|
||||||
toAdd = touchTrack.previousPageY;
|
|
||||||
}
|
|
||||||
total += toAdd;
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return count > 0 ? total / count : TouchHistoryMath.noCentroid;
|
|
||||||
},
|
|
||||||
|
|
||||||
currentCentroidXOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {
|
|
||||||
return TouchHistoryMath.centroidDimension(
|
|
||||||
touchHistory,
|
|
||||||
touchesChangedAfter,
|
|
||||||
true, // isXAxis
|
|
||||||
true // ofCurrent
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
currentCentroidYOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {
|
|
||||||
return TouchHistoryMath.centroidDimension(
|
|
||||||
touchHistory,
|
|
||||||
touchesChangedAfter,
|
|
||||||
false, // isXAxis
|
|
||||||
true // ofCurrent
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
previousCentroidXOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {
|
|
||||||
return TouchHistoryMath.centroidDimension(
|
|
||||||
touchHistory,
|
|
||||||
touchesChangedAfter,
|
|
||||||
true, // isXAxis
|
|
||||||
false // ofCurrent
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
previousCentroidYOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {
|
|
||||||
return TouchHistoryMath.centroidDimension(
|
|
||||||
touchHistory,
|
|
||||||
touchesChangedAfter,
|
|
||||||
false, // isXAxis
|
|
||||||
false // ofCurrent
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
currentCentroidX: function(touchHistory) {
|
|
||||||
return TouchHistoryMath.centroidDimension(
|
|
||||||
touchHistory,
|
|
||||||
0, // touchesChangedAfter
|
|
||||||
true, // isXAxis
|
|
||||||
true // ofCurrent
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
currentCentroidY: function(touchHistory) {
|
|
||||||
return TouchHistoryMath.centroidDimension(
|
|
||||||
touchHistory,
|
|
||||||
0, // touchesChangedAfter
|
|
||||||
false, // isXAxis
|
|
||||||
true // ofCurrent
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
noCentroid: -1,
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = TouchHistoryMath;
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import normalizeNativeEvent from '../../modules/normalizeNativeEvent';
|
import normalizeNativeEvent from '../../modules/normalizeNativeEvent';
|
||||||
var TouchHistoryMath = require('./TouchHistoryMath');
|
var TouchHistoryMath = require('react/lib/TouchHistoryMath');
|
||||||
|
|
||||||
var currentCentroidXOfTouchesChangedAfter =
|
var currentCentroidXOfTouchesChangedAfter =
|
||||||
TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;
|
TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;
|
||||||
|
|||||||
Reference in New Issue
Block a user