@@ -7,8 +7,6 @@ import { computeTooltipPosition } from '../../utils/compute-positions'
7
7
import styles from './styles.module.css'
8
8
import type { IPosition , ITooltip } from './TooltipTypes'
9
9
10
- let lastFloatPosition : IPosition | null = null
11
-
12
10
const Tooltip = ( {
13
11
// props
14
12
id,
@@ -42,6 +40,7 @@ const Tooltip = ({
42
40
const [ inlineArrowStyles , setInlineArrowStyles ] = useState ( { } )
43
41
const [ show , setShow ] = useState < boolean > ( false )
44
42
const [ calculatingPosition , setCalculatingPosition ] = useState ( false )
43
+ const lastFloatPosition = useRef < IPosition | null > ( null )
45
44
const { anchorRefs, setActiveAnchor : setProviderActiveAnchor } = useTooltip ( ) ( id )
46
45
const [ activeAnchor , setActiveAnchor ] = useState < React . RefObject < HTMLElement > > ( { current : null } )
47
46
@@ -148,7 +147,7 @@ const Tooltip = ({
148
147
y : mouseEvent . clientY ,
149
148
}
150
149
handleTooltipPosition ( mousePosition )
151
- lastFloatPosition = mousePosition
150
+ lastFloatPosition . current = mousePosition
152
151
}
153
152
154
153
const handleClickTooltipAnchor = ( ) => {
@@ -235,15 +234,15 @@ const Tooltip = ({
235
234
}
236
235
237
236
if ( float ) {
238
- if ( lastFloatPosition ) {
237
+ if ( lastFloatPosition . current ) {
239
238
/*
240
239
Without this, changes to `content`, `place`, `offset`, ..., will only
241
240
trigger a position calculation after a `mousemove` event.
242
241
243
242
To see why this matters, comment this line, run `yarn dev` and click the
244
243
"Hover me!" anchor.
245
244
*/
246
- handleTooltipPosition ( lastFloatPosition )
245
+ handleTooltipPosition ( lastFloatPosition . current )
247
246
}
248
247
// if `float` is set, override regular positioning
249
248
return ( ) => null
0 commit comments