UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines 1.76 kB
{"version":3,"file":"useMouseOffset.mjs","names":[],"sources":["../../../src/awesome/Spotlight/useMouseOffset.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nexport const useMouseOffset = (): any => {\n const [offset, setOffset] = useState<{ x: number; y: number }>();\n const [outside, setOutside] = useState(true);\n const reference = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (reference.current && reference.current.parentElement) {\n const element = reference.current.parentElement;\n\n // debounce?\n const onMouseMove = (e: MouseEvent) => {\n const bound = element.getBoundingClientRect();\n setOffset({ x: e.clientX - bound.x, y: e.clientY - bound.y });\n setOutside(false);\n };\n\n const onMouseLeave = () => {\n setOutside(true);\n };\n element.addEventListener('mousemove', onMouseMove);\n element.addEventListener('mouseleave', onMouseLeave);\n return () => {\n element.removeEventListener('mousemove', onMouseMove);\n element.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n }, []);\n\n return [offset, outside, reference] as const;\n};\n"],"mappings":";;;AAEA,MAAa,uBAA4B;CACvC,MAAM,CAAC,QAAQ,aAAa,UAAoC;CAChE,MAAM,CAAC,SAAS,cAAc,SAAS,KAAK;CAC5C,MAAM,YAAY,OAAuB,KAAK;AAE9C,iBAAgB;AACd,MAAI,UAAU,WAAW,UAAU,QAAQ,eAAe;GACxD,MAAM,UAAU,UAAU,QAAQ;GAGlC,MAAM,eAAe,MAAkB;IACrC,MAAM,QAAQ,QAAQ,uBAAuB;AAC7C,cAAU;KAAE,GAAG,EAAE,UAAU,MAAM;KAAG,GAAG,EAAE,UAAU,MAAM;KAAG,CAAC;AAC7D,eAAW,MAAM;;GAGnB,MAAM,qBAAqB;AACzB,eAAW,KAAK;;AAElB,WAAQ,iBAAiB,aAAa,YAAY;AAClD,WAAQ,iBAAiB,cAAc,aAAa;AACpD,gBAAa;AACX,YAAQ,oBAAoB,aAAa,YAAY;AACrD,YAAQ,oBAAoB,cAAc,aAAa;;;IAG1D,EAAE,CAAC;AAEN,QAAO;EAAC;EAAQ;EAAS;EAAU"}