mirror of
https://github.com/zoriya/react-native-web.git
synced 2026-06-09 20:58:59 +00:00
55 lines
2.4 KiB
JavaScript
55 lines
2.4 KiB
JavaScript
// based on https://github.com/facebook/react/pull/4303/files
|
|
|
|
import EventPluginHub from 'react-dom/lib/EventPluginHub';
|
|
import normalizeNativeEvent from './normalizeNativeEvent';
|
|
import ResponderEventPlugin from 'react-dom/lib/ResponderEventPlugin';
|
|
import ResponderTouchHistoryStore from 'react-dom/lib/ResponderTouchHistoryStore';
|
|
|
|
const topMouseDown = 'topMouseDown';
|
|
const topMouseMove = 'topMouseMove';
|
|
const topMouseUp = 'topMouseUp';
|
|
const topScroll = 'topScroll';
|
|
const topSelectionChange = 'topSelectionChange';
|
|
const topTouchCancel = 'topTouchCancel';
|
|
const topTouchEnd = 'topTouchEnd';
|
|
const topTouchMove = 'topTouchMove';
|
|
const topTouchStart = 'topTouchStart';
|
|
|
|
const endDependencies = [topTouchCancel, topTouchEnd, topMouseUp];
|
|
const moveDependencies = [topTouchMove, topMouseMove];
|
|
const startDependencies = [topTouchStart, topMouseDown];
|
|
|
|
/**
|
|
* Setup ResponderEventPlugin dependencies
|
|
*/
|
|
ResponderEventPlugin.eventTypes.responderMove.dependencies = moveDependencies;
|
|
ResponderEventPlugin.eventTypes.responderEnd.dependencies = endDependencies;
|
|
ResponderEventPlugin.eventTypes.responderStart.dependencies = startDependencies;
|
|
ResponderEventPlugin.eventTypes.responderRelease.dependencies = endDependencies;
|
|
ResponderEventPlugin.eventTypes.responderTerminationRequest.dependencies = [];
|
|
ResponderEventPlugin.eventTypes.responderGrant.dependencies = [];
|
|
ResponderEventPlugin.eventTypes.responderReject.dependencies = [];
|
|
ResponderEventPlugin.eventTypes.responderTerminate.dependencies = [];
|
|
ResponderEventPlugin.eventTypes.moveShouldSetResponder.dependencies = moveDependencies;
|
|
ResponderEventPlugin.eventTypes.selectionChangeShouldSetResponder.dependencies = [
|
|
topSelectionChange
|
|
];
|
|
ResponderEventPlugin.eventTypes.scrollShouldSetResponder.dependencies = [topScroll];
|
|
ResponderEventPlugin.eventTypes.startShouldSetResponder.dependencies = startDependencies;
|
|
|
|
const originalRecordTouchTrack = ResponderTouchHistoryStore.recordTouchTrack;
|
|
|
|
ResponderTouchHistoryStore.recordTouchTrack = (topLevelType, nativeEvent) => {
|
|
// Filter out mouse-move events when the mouse button is not down
|
|
if (topLevelType === topMouseMove && !ResponderTouchHistoryStore.touchHistory.touchBank.length) {
|
|
return;
|
|
}
|
|
|
|
const normalizedEvent = normalizeNativeEvent(nativeEvent);
|
|
originalRecordTouchTrack.call(ResponderTouchHistoryStore, topLevelType, normalizedEvent);
|
|
};
|
|
|
|
EventPluginHub.injection.injectEventPluginsByName({
|
|
ResponderEventPlugin
|
|
});
|