mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-23 07:10:41 +00:00
22 lines
602 B
TypeScript
22 lines
602 B
TypeScript
import { useEffect } from 'preact/hooks'
|
|
|
|
export function useOnHover(element: HTMLElement, hover: (x: number | undefined, y: number | undefined) => unknown) {
|
|
if (!element) return
|
|
|
|
const onMouseMove = (e: MouseEvent) => {
|
|
hover(e.offsetX, e.offsetY)
|
|
}
|
|
const onMouseLeave = () => {
|
|
hover(undefined, undefined)
|
|
}
|
|
|
|
useEffect(() => {
|
|
element.addEventListener('mousemove', onMouseMove)
|
|
element.addEventListener('mouseleave', onMouseLeave)
|
|
return () => {
|
|
element.removeEventListener('mousemove', onMouseMove)
|
|
element.removeEventListener('mouseleave', onMouseLeave)
|
|
}
|
|
}, [element])
|
|
}
|