UNPKG

@thibault.sh/hooks

Version:

A comprehensive collection of React hooks for browser storage, UI interactions, and more

1 lines 1.68 kB
{"version":3,"sources":["../src/hooks/useScrollPosition.ts"],"names":["useScrollPosition","scrollPosition","setScrollPosition","useState","useEffect","handleScroll"],"mappings":"uCAWO,SAASA,CAAAA,EAAoC,CAClD,GAAM,CAACC,CAAgBC,CAAAA,CAAiB,CAAIC,CAAAA,QAAAA,CAAyB,CACnE,CAAG,CAAA,OAAO,MAAW,EAAA,WAAA,CAAc,MAAO,CAAA,OAAA,CAAU,CACpD,CAAA,CAAA,CAAG,OAAO,MAAW,EAAA,WAAA,CAAc,MAAO,CAAA,OAAA,CAAU,CACtD,CAAC,CAAA,CAED,OAAAC,SAAAA,CAAU,IAAM,CACd,GAAI,OAAO,MAAA,EAAW,WAAa,CAAA,OAEnC,IAAMC,CAAAA,CAAe,IAAM,CACzBH,CAAAA,CAAkB,CAChB,CAAA,CAAG,OAAO,OACV,CAAA,CAAA,CAAG,MAAO,CAAA,OACZ,CAAC,EACH,CAAA,CAEA,OAAO,MAAA,CAAA,gBAAA,CAAiB,QAAUG,CAAAA,CAAY,CAC9CA,CAAAA,CAAAA,GAEO,IAAM,MAAA,CAAO,mBAAoB,CAAA,QAAA,CAAUA,CAAY,CAChE,CAAA,CAAG,EAAE,EAEEJ,CACT","file":"useScrollPosition.mjs","sourcesContent":["import { useState, useEffect } from \"react\";\n\ninterface ScrollPosition {\n x: number;\n y: number;\n}\n\n/**\n * Hook that tracks window scroll position\n * @returns Object containing current scroll x and y coordinates\n */\nexport function useScrollPosition(): ScrollPosition {\n const [scrollPosition, setScrollPosition] = useState<ScrollPosition>({\n x: typeof window !== \"undefined\" ? window.scrollX : 0,\n y: typeof window !== \"undefined\" ? window.scrollY : 0,\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const handleScroll = () => {\n setScrollPosition({\n x: window.scrollX,\n y: window.scrollY,\n });\n };\n\n window.addEventListener(\"scroll\", handleScroll);\n handleScroll();\n\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, []);\n\n return scrollPosition;\n} "]}