From cd0f963fa366ac6eaf154fd2b3e616a04feeef33 Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Fri, 18 Nov 2016 14:40:51 +0000 Subject: [PATCH] Fix up Flow annotations to be a bit more explicit where the unsoundness is --- src/renderers/dom/fiber/ReactDOMFiberComponent.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/renderers/dom/fiber/ReactDOMFiberComponent.js b/src/renderers/dom/fiber/ReactDOMFiberComponent.js index 37eb47a100..186d2f0b5f 100644 --- a/src/renderers/dom/fiber/ReactDOMFiberComponent.js +++ b/src/renderers/dom/fiber/ReactDOMFiberComponent.js @@ -159,7 +159,7 @@ var mediaEvents = { topWaiting: 'waiting', }; -function trapClickOnNonInteractiveElement(node : any) { +function trapClickOnNonInteractiveElement(node : HTMLElement) { // Mobile Safari does not fire properly bubble click events on // non-interactive elements, which means delegated click listeners do not // fire. The workaround for this bug involves attaching an empty click @@ -496,7 +496,7 @@ var ReactDOMFiberComponent = { var div = ownerDocument.createElement('div'); div.innerHTML = ''; // This is guaranteed to yield a script element. - var firstChild = ((div.firstChild : any) : Element); + var firstChild = ((div.firstChild : any) : HTMLScriptElement); domElement = div.removeChild(firstChild); } else if (props.is) { domElement = ownerDocument.createElement(tag, props.is); @@ -622,7 +622,8 @@ var ReactDOMFiberComponent = { break; default: if (typeof props.onClick === 'function') { - trapClickOnNonInteractiveElement(domElement); + // TODO: This cast may not be sound for SVG, MathML or custom elements. + trapClickOnNonInteractiveElement(((domElement : any) : HTMLElement)); } break; } @@ -655,7 +656,8 @@ var ReactDOMFiberComponent = { default: if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') { - trapClickOnNonInteractiveElement(domElement); + // TODO: This cast may not be sound for SVG, MathML or custom elements. + trapClickOnNonInteractiveElement(((domElement : any) : HTMLElement)); } break; }