Files
misode.github.io/src/app/hooks/useFocus.ts
2021-09-10 00:46:34 +02:00

23 lines
534 B
TypeScript

import { useEffect, useState } from 'preact/hooks'
export function useFocus(): [boolean, () => unknown] {
const [active, setActive] = useState(false)
const hider = () => {
setActive(false)
}
useEffect(() => {
if (active) {
document.body.addEventListener('click', hider)
document.body.addEventListener('contextmenu', hider)
}
return () => {
document.body.removeEventListener('click', hider)
document.body.removeEventListener('contextmenu', hider)
}
}, [active])
return [active, () => setActive(true)]
}