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