{"version":3,"file":"use-scroll-direction.cjs","names":[],"sources":["../../src/use-scroll-direction/use-scroll-direction.ts"],"sourcesContent":["import { useEffect, useEffectEvent, useRef, useState } from 'react';\n\nexport type ScrollDirection = 'up' | 'down' | 'unknown';\n\nexport function useScrollDirection(): ScrollDirection {\n  const lastScrollTopRef = useRef(0);\n  const [scrollDirection, setScrollDirection] = useState<ScrollDirection>('unknown');\n  const isResizingRef = useRef(false);\n  const resizeTimerRef = useRef<number | undefined>(undefined);\n\n  const handleScroll = useEffectEvent(() => {\n    if (isResizingRef.current) {\n      return;\n    }\n\n    const currentScrollTop = window.scrollY || document.documentElement.scrollTop;\n    setScrollDirection(currentScrollTop < lastScrollTopRef.current ? 'up' : 'down');\n    lastScrollTopRef.current = currentScrollTop;\n  });\n\n  useEffect(() => {\n    const handleResize = () => {\n      isResizingRef.current = true;\n      window.clearTimeout(resizeTimerRef.current);\n      resizeTimerRef.current = window.setTimeout(() => {\n        isResizingRef.current = false;\n      }, 300);\n    };\n\n    window.addEventListener('scroll', handleScroll);\n    window.addEventListener('resize', handleResize);\n\n    return () => {\n      window.removeEventListener('scroll', handleScroll);\n      window.removeEventListener('resize', handleResize);\n      clearTimeout(resizeTimerRef.current);\n    };\n  }, []);\n\n  return scrollDirection;\n}\n"],"mappings":";;;AAIA,SAAgB,qBAAsC;CACpD,MAAM,oBAAA,GAAA,MAAA,QAA0B,CAAC;CACjC,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAAgD,SAAS;CACjF,MAAM,iBAAA,GAAA,MAAA,QAAuB,KAAK;CAClC,MAAM,kBAAA,GAAA,MAAA,QAA4C,KAAA,CAAS;CAE3D,MAAM,gBAAA,GAAA,MAAA,sBAAoC;EACxC,IAAI,cAAc,SAChB;EAGF,MAAM,mBAAmB,OAAO,WAAW,SAAS,gBAAgB;EACpE,mBAAmB,mBAAmB,iBAAiB,UAAU,OAAO,MAAM;EAC9E,iBAAiB,UAAU;CAC7B,CAAC;CAED,CAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,qBAAqB;GACzB,cAAc,UAAU;GACxB,OAAO,aAAa,eAAe,OAAO;GAC1C,eAAe,UAAU,OAAO,iBAAiB;IAC/C,cAAc,UAAU;GAC1B,GAAG,GAAG;EACR;EAEA,OAAO,iBAAiB,UAAU,YAAY;EAC9C,OAAO,iBAAiB,UAAU,YAAY;EAE9C,aAAa;GACX,OAAO,oBAAoB,UAAU,YAAY;GACjD,OAAO,oBAAoB,UAAU,YAAY;GACjD,aAAa,eAAe,OAAO;EACrC;CACF,GAAG,CAAC,CAAC;CAEL,OAAO;AACT"}