{"version":3,"file":"use-window-scroll.cjs","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()), { passive: true });\n  useWindowEvent('resize', () => setPosition(getScrollPosition()), { passive: true });\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;CACpD,OAAO,OAAO,WAAW,cAAc;EAAE,GAAG,OAAO;EAAS,GAAG,OAAO;CAAQ,IAAI;EAAE,GAAG;EAAG,GAAG;CAAE;AACjG;AAEA,SAAS,SAAS,EAAE,GAAG,KAAuC;CAC5D,IAAI,OAAO,WAAW,aAAa;EACjC,MAAM,gBAAiC,EAAE,UAAU,SAAS;EAE5D,IAAI,OAAO,MAAM,UACf,cAAc,OAAO;EAGvB,IAAI,OAAO,MAAM,UACf,cAAc,MAAM;EAGtB,OAAO,SAAS,aAAa;CAC/B;AACF;AAEA,SAAgB,kBAA8C;CAC5D,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAiD;EAAE,GAAG;EAAG,GAAG;CAAE,CAAC;CAEhF,yBAAA,eAAe,gBAAgB,YAAY,kBAAkB,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC;CAClF,yBAAA,eAAe,gBAAgB,YAAY,kBAAkB,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC;CAElF,CAAA,GAAA,MAAA,iBAAgB;EACd,YAAY,kBAAkB,CAAC;CACjC,GAAG,CAAC,CAAC;CAEL,OAAO,CAAC,UAAU,QAAQ;AAC5B"}