@mantine/hooks
Version:
A collection of 50+ hooks for state and UI management
37 lines (36 loc) • 1.11 kB
JavaScript
"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