useMouseTooltip.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. let t = null
  2. let r = null
  3. let l = null
  4. export function useMouseTooltip() {
  5. const u = (e) => {
  6. document.documentElement.style.setProperty('--mouse-x', e.clientX + 'px')
  7. document.documentElement.style.setProperty('--mouse-y', e.clientY + 'px')
  8. clearTimeout(t)
  9. t = setTimeout(() => {
  10. document.documentElement.style.setProperty('--mouse-x', e.clientX + 'px')
  11. document.documentElement.style.setProperty('--mouse-y', e.clientY + 'px')
  12. }, 200)
  13. }
  14. const clearMousePosition = () => {
  15. clearTimeout(t)
  16. document.documentElement.style.removeProperty('--mouse-x')
  17. document.documentElement.style.removeProperty('--mouse-y')
  18. }
  19. const i = () => {
  20. r = (e) => {
  21. if (e.target.closest('.cursor-pointer')) {
  22. u(e)
  23. }
  24. }
  25. l = (e) => {
  26. if (e.target.closest('.cursor-pointer')) {
  27. clearMousePosition()
  28. }
  29. }
  30. document.addEventListener('mouseenter', r, true)
  31. document.addEventListener('mouseleave', l, true)
  32. }
  33. const d = () => {
  34. clearTimeout(t)
  35. if (r) document.removeEventListener('mouseenter', r, true)
  36. if (l) document.removeEventListener('mouseleave', l, true)
  37. r = null
  38. l = null
  39. }
  40. i()
  41. return d
  42. }