mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-24 15:47:08 +00:00
23 lines
534 B
TypeScript
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)]
|
|
}
|