@@ -6,7 +6,7 @@ import InformationOutlineIcon from 'mdi-react/InformationOutlineIcon'
66import * as React from 'react'
77import { MarkedString , MarkupContent , MarkupKind } from 'vscode-languageserver-types'
88import { asError , ErrorLike , isErrorLike } from './errors'
9- import { highlightCodeSafe , renderMarkdown } from './helpers'
9+ import { highlightCodeSafe , renderMarkdown , toNativeEvent } from './helpers'
1010import { HoveredTokenContext } from './hoverifier'
1111import { HoveredToken } from './token_position'
1212import { HoverMerged , LOADING } from './types'
@@ -59,10 +59,10 @@ export interface HoverOverlayProps {
5959 linkComponent : React . ComponentType < { to : string } >
6060
6161 /** Called when the Go-to-definition button was clicked */
62- onGoToDefinitionClick ?: ( event : React . MouseEvent < HTMLElement > ) => void
62+ onGoToDefinitionClick ?: ( event : MouseEvent ) => void
6363
6464 /** Called when the close button is clicked */
65- onCloseButtonClick ?: ( event : React . MouseEvent < HTMLElement > ) => void
65+ onCloseButtonClick ?: ( event : MouseEvent ) => void
6666
6767 logTelemetryEvent : ( event : string , data ?: any ) => void
6868}
@@ -71,6 +71,9 @@ export interface HoverOverlayProps {
7171export const isJumpURL = ( val : any ) : val is { jumpURL : string } =>
7272 val !== null && typeof val === 'object' && typeof val . jumpURL === 'string'
7373
74+ const transformMouseEvent = ( handler : ( event : MouseEvent ) => void ) => ( event : React . MouseEvent < HTMLElement > ) =>
75+ handler ( toNativeEvent ( event ) )
76+
7477export const HoverOverlay : React . StatelessComponent < HoverOverlayProps > = props => (
7578 < div
7679 className = "hover-overlay card"
@@ -91,10 +94,14 @@ export const HoverOverlay: React.StatelessComponent<HoverOverlayProps> = props =
9194 }
9295 >
9396 { props . showCloseButton && (
94- < button className = "hover-overlay__close-button btn btn-icon" onClick = { props . onCloseButtonClick } >
97+ < button
98+ className = "hover-overlay__close-button btn btn-icon"
99+ onClick = { props . onCloseButtonClick ? transformMouseEvent ( props . onCloseButtonClick ) : undefined }
100+ >
95101 < CloseIcon className = "icon-inline" />
96102 </ button >
97103 ) }
104+
98105 { props . hoverOrError && (
99106 < div className = "hover-overlay__contents" >
100107 { props . hoverOrError === LOADING ? (
@@ -157,7 +164,7 @@ export const HoverOverlay: React.StatelessComponent<HoverOverlayProps> = props =
157164 linkComponent = { props . linkComponent }
158165 to = { isJumpURL ( props . definitionURLOrError ) ? props . definitionURLOrError . jumpURL : undefined }
159166 className = "btn btn-secondary hover-overlay__action e2e-tooltip-j2d"
160- onClick = { props . onGoToDefinitionClick }
167+ onClick = { props . onGoToDefinitionClick ? transformMouseEvent ( props . onGoToDefinitionClick ) : undefined }
161168 >
162169 Go to definition { props . definitionURLOrError === LOADING && < Loader className = "icon-inline" /> }
163170 </ ButtonOrLink >
0 commit comments