{"version":3,"file":"use-window-scroll.mjs","names":[],"sources":["../../src/use-window-scroll/use-window-scroll.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\nexport interface UseWindowScrollPosition {\n  x: number;\n  y: number;\n}\n\nexport type UseWindowScrollTo = (position: Partial<UseWindowScrollPosition>) => void;\nexport type UseWindowScrollReturnValue = [UseWindowScrollPosition, UseWindowScrollTo];\n\nfunction getScrollPosition(): UseWindowScrollPosition {\n  return typeof window !== 'undefined' ? { x: window.scrollX, y: window.scrollY } : { x: 0, y: 0 };\n}\n\nfunction scrollTo({ x, y }: Partial<UseWindowScrollPosition>) {\n  if (typeof window !== 'undefined') {\n    const scrollOptions: ScrollToOptions = { behavior: 'smooth' };\n\n    if (typeof x === 'number') {\n      scrollOptions.left = x;\n    }\n\n    if (typeof y === 'number') {\n      scrollOptions.top = y;\n    }\n\n    window.scrollTo(scrollOptions);\n  }\n}\n\nexport function useWindowScroll(): UseWindowScrollReturnValue {\n  const [position, setPosition] = useState<UseWindowScrollPosition>({ x: 0, y: 0 });\n\n  useWindowEvent('scroll', () => setPosition(getScrollPosition()));\n  useWindowEvent('resize', () => setPosition(getScrollPosition()));\n\n  useEffect(() => {\n    setPosition(getScrollPosition());\n  }, []);\n\n  return [position, scrollTo] as const;\n}\n\nexport namespace useWindowScroll {\n  export type Position = UseWindowScrollPosition;\n  export type ScrollTo = UseWindowScrollTo;\n  export type ReturnValue = UseWindowScrollReturnValue;\n}\n"],"mappings":";;;;AAWA,SAAS,oBAA6C;AACpD,QAAO,OAAO,WAAW,cAAc;EAAE,GAAG,OAAO;EAAS,GAAG,OAAO;EAAS,GAAG;EAAE,GAAG;EAAG,GAAG;EAAG;;AAGlG,SAAS,SAAS,EAAE,GAAG,KAAuC;AAC5D,KAAI,OAAO,WAAW,aAAa;EACjC,MAAM,gBAAiC,EAAE,UAAU,UAAU;AAE7D,MAAI,OAAO,MAAM,SACf,eAAc,OAAO;AAGvB,MAAI,OAAO,MAAM,SACf,eAAc,MAAM;AAGtB,SAAO,SAAS,cAAc;;;AAIlC,SAAgB,kBAA8C;CAC5D,MAAM,CAAC,UAAU,eAAe,SAAkC;EAAE,GAAG;EAAG,GAAG;EAAG,CAAC;AAEjF,gBAAe,gBAAgB,YAAY,mBAAmB,CAAC,CAAC;AAChE,gBAAe,gBAAgB,YAAY,mBAAmB,CAAC,CAAC;AAEhE,iBAAgB;AACd,cAAY,mBAAmB,CAAC;IAC/B,EAAE,CAAC;AAEN,QAAO,CAAC,UAAU,SAAS"}