From a25a793fe9d38436be7a3e87ce36ebd5d9d84921 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 22 May 2019 19:59:00 +0100 Subject: [PATCH] [Flare] update getEventCurrentTarget to use fiber tree (#15708) --- .../src/events/DOMEventResponderSystem.js | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/react-dom/src/events/DOMEventResponderSystem.js b/packages/react-dom/src/events/DOMEventResponderSystem.js index c1bc1d780c..93a493b559 100644 --- a/packages/react-dom/src/events/DOMEventResponderSystem.js +++ b/packages/react-dom/src/events/DOMEventResponderSystem.js @@ -402,16 +402,20 @@ const eventResponderContext: ReactResponderContext = { }, getEventCurrentTarget(event: ReactResponderEvent): Element { validateResponderContext(); - const target: any = event.target; - let currentTarget = target; - while ( - currentTarget.parentNode && - currentTarget.parentNode.nodeType === Node.ELEMENT_NODE && - isTargetWithinEventComponent(currentTarget.parentNode) - ) { - currentTarget = currentTarget.parentNode; + const target = event.target; + let fiber = getClosestInstanceFromNode(target); + let hostComponent = target; + + while (fiber !== null) { + if (fiber.stateNode === currentInstance) { + break; + } + if (fiber.tag === HostComponent) { + hostComponent = fiber.stateNode; + } + fiber = fiber.return; } - return currentTarget; + return ((hostComponent: any): Element); }, getTimeStamp(): number { validateResponderContext();