fix(1783): controls visibility in fullscreen (#537)
parent
d1e44f01f5
commit
3b1393de13
@ -0,0 +1,40 @@ |
||||
import { |
||||
useMemo, |
||||
useState, |
||||
useCallback, |
||||
} from 'react' |
||||
|
||||
import debounce from 'lodash/debounce' |
||||
|
||||
export const useControlsVisibility = (isFullscreen: boolean) => { |
||||
const [controlsVisible, setControlsVisibility] = useState(true) |
||||
|
||||
const show = useCallback(() => { |
||||
setControlsVisibility(true) |
||||
}, []) |
||||
|
||||
const hide = useCallback(() => { |
||||
setControlsVisibility(false) |
||||
}, []) |
||||
|
||||
const hideDebounced = useMemo( |
||||
() => debounce(hide, 3000), |
||||
[hide], |
||||
) |
||||
|
||||
const onMouseMove = () => { |
||||
show() |
||||
if (isFullscreen) { |
||||
hideDebounced() |
||||
} |
||||
} |
||||
|
||||
return { |
||||
controlsVisible, |
||||
onMouseEnter: show, |
||||
onMouseLeave: hide, |
||||
onMouseMove, |
||||
onTouchEnd: hideDebounced, |
||||
onTouchStart: show, |
||||
} |
||||
} |
||||
Loading…
Reference in new issue