UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

37 lines (36 loc) 1.11 kB
"use client"; const require_use_window_event = require("../use-window-event/use-window-event.cjs"); let react = require("react"); //#region packages/@mantine/hooks/src/use-window-scroll/use-window-scroll.ts function getScrollPosition() { return typeof window !== "undefined" ? { x: window.scrollX, y: window.scrollY } : { x: 0, y: 0 }; } function scrollTo({ x, y }) { if (typeof window !== "undefined") { const scrollOptions = { behavior: "smooth" }; if (typeof x === "number") scrollOptions.left = x; if (typeof y === "number") scrollOptions.top = y; window.scrollTo(scrollOptions); } } function useWindowScroll() { const [position, setPosition] = (0, react.useState)({ x: 0, y: 0 }); require_use_window_event.useWindowEvent("scroll", () => setPosition(getScrollPosition())); require_use_window_event.useWindowEvent("resize", () => setPosition(getScrollPosition())); (0, react.useEffect)(() => { setPosition(getScrollPosition()); }, []); return [position, scrollTo]; } //#endregion exports.useWindowScroll = useWindowScroll; //# sourceMappingURL=use-window-scroll.cjs.map