ResponderEventPlugin.extractEvents() — react Function Reference
Architecture documentation for the ResponderEventPlugin.extractEvents() function in ResponderEventPlugin.js from the react codebase.
Entity Profile
Dependency Diagram
graph TD 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533["ResponderEventPlugin.extractEvents()"] 674c6180_b91e_e17d_fb2d_40a6a3631bb3["ResponderEventPlugin.js"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|defined in| 674c6180_b91e_e17d_fb2d_40a6a3631bb3 60f92383_40f2_196e_b450_7c99b0331648["isStartish()"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|calls| 60f92383_40f2_196e_b450_7c99b0331648 618ba80e_464a_e399_d48b_22dc1da5acb0["isEndish()"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|calls| 618ba80e_464a_e399_d48b_22dc1da5acb0 88c5bf88_f523_ad22_659b_44e9b1fdb2cb["canTriggerTransfer()"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|calls| 88c5bf88_f523_ad22_659b_44e9b1fdb2cb 732fb477_d858_94a9_efff_34067b22778c["setResponderAndExtractTransfer()"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|calls| 732fb477_d858_94a9_efff_34067b22778c d2f15c72_7981_85cf_294a_267ee76fc3ed["isMoveish()"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|calls| d2f15c72_7981_85cf_294a_267ee76fc3ed 6a3c9a58_5bc7_e210_0093_952da985582c["accumulateDirectDispatches()"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|calls| 6a3c9a58_5bc7_e210_0093_952da985582c 245511e8_def9_c356_241b_db9e7eaf90f5["noResponderTouches()"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|calls| 245511e8_def9_c356_241b_db9e7eaf90f5 fa39eed9_fdc7_2de9_92c9_3e38cd92076b["changeResponder()"] 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 -->|calls| fa39eed9_fdc7_2de9_92c9_3e38cd92076b style 8f2d8ef0_4fcf_28f9_e399_4b0f1d11c533 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/react-native-renderer/src/legacy-events/ResponderEventPlugin.js lines 697–788
extractEvents: function (
topLevelType,
targetInst,
nativeEvent,
nativeEventTarget,
eventSystemFlags,
) {
if (isStartish(topLevelType)) {
trackedTouchCount += 1;
} else if (isEndish(topLevelType)) {
if (trackedTouchCount >= 0) {
trackedTouchCount -= 1;
} else {
if (__DEV__) {
console.warn(
'Ended a touch event which was not counted in `trackedTouchCount`.',
);
}
return null;
}
}
ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);
let extracted = canTriggerTransfer(topLevelType, targetInst, nativeEvent)
? setResponderAndExtractTransfer(
topLevelType,
targetInst,
nativeEvent,
nativeEventTarget,
)
: null;
// Responder may or may not have transferred on a new touch start/move.
// Regardless, whoever is the responder after any potential transfer, we
// direct all touch start/move/ends to them in the form of
// `onResponderMove/Start/End`. These will be called for *every* additional
// finger that move/start/end, dispatched directly to whoever is the
// current responder at that moment, until the responder is "released".
//
// These multiple individual change touch events are are always bookended
// by `onResponderGrant`, and one of
// (`onResponderRelease/onResponderTerminate`).
const isResponderTouchStart = responderInst && isStartish(topLevelType);
const isResponderTouchMove = responderInst && isMoveish(topLevelType);
const isResponderTouchEnd = responderInst && isEndish(topLevelType);
const incrementalTouch = isResponderTouchStart
? eventTypes.responderStart
: isResponderTouchMove
? eventTypes.responderMove
: isResponderTouchEnd
? eventTypes.responderEnd
: null;
if (incrementalTouch) {
const gesture = ResponderSyntheticEvent.getPooled(
incrementalTouch,
responderInst,
nativeEvent,
nativeEventTarget,
);
gesture.touchHistory = ResponderTouchHistoryStore.touchHistory;
accumulateDirectDispatches(gesture);
extracted = accumulate(extracted, gesture);
}
const isResponderTerminate =
responderInst && topLevelType === TOP_TOUCH_CANCEL;
const isResponderRelease =
responderInst &&
!isResponderTerminate &&
isEndish(topLevelType) &&
noResponderTouches(nativeEvent);
const finalTouch = isResponderTerminate
? eventTypes.responderTerminate
: isResponderRelease
? eventTypes.responderRelease
: null;
if (finalTouch) {
const finalEvent = ResponderSyntheticEvent.getPooled(
finalTouch,
responderInst,
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does ResponderEventPlugin.extractEvents() do?
ResponderEventPlugin.extractEvents() is a function in the react codebase, defined in packages/react-native-renderer/src/legacy-events/ResponderEventPlugin.js.
Where is ResponderEventPlugin.extractEvents() defined?
ResponderEventPlugin.extractEvents() is defined in packages/react-native-renderer/src/legacy-events/ResponderEventPlugin.js at line 697.
What does ResponderEventPlugin.extractEvents() call?
ResponderEventPlugin.extractEvents() calls 8 function(s): accumulateDirectDispatches, canTriggerTransfer, changeResponder, isEndish, isMoveish, isStartish, noResponderTouches, setResponderAndExtractTransfer.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free