Home / Function/ ResponderEventPlugin.extractEvents() — react Function Reference

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

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