Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5196 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5293 stevensc 1
import { useState, useRef, useEffect } from 'react'
5188 stevensc 2
 
5293 stevensc 3
export const useNear = ({ rootMargin = '0px' }) => {
4
  const [isNear, setIsNear] = useState(false)
5
  const el = useRef(null)
5188 stevensc 6
 
5293 stevensc 7
  useEffect(
8
    function () {
9
      if (typeof el.current === 'undefined') return
5188 stevensc 10
 
5293 stevensc 11
      let observer
12
      Promise.resolve(
13
        typeof window.IntersectionObserver !== 'undefined'
14
          ? window.IntersectionObserver
15
          : import('intersection-observer')
16
      ).then(() => {
17
        const onIntersect = (entries, observer) => {
18
          const { isIntersecting } = entries[0]
5188 stevensc 19
 
5293 stevensc 20
          if (isIntersecting) {
21
            setIsNear(true)
22
            observer.disconnect()
23
          }
24
        }
25
 
26
        observer = new window.IntersectionObserver(onIntersect, { rootMargin })
27
        observer.observe(el.current)
28
      })
29
 
30
      return () => observer && observer.disconnect()
31
    },
32
    [el, rootMargin]
33
  )
34
 
35
  return [isNear, el]
5188 stevensc 36
}