Path: blob/master/src/packages/next/lib/use-scroll-y.tsx
1447 views
/*1* This file is part of CoCalc: Copyright © 2022 Sagemath, Inc.2* License: MS-RSL – see LICENSE.md for details3*/45import { throttle } from "lodash";6import { useCallback, useEffect, useState } from "react";78// dynamically get the Y position of the window scroll9export function useScrollY() {10const [scrollY, setScrollY] = useState(0);1112// callback is important, since we want to reain the same reference13const onScroll = useCallback(14throttle(15(_event) => {16setScrollY(window.pageYOffset);17},18100,19{ trailing: true }20),21[]22);2324useEffect(() => {25// passive: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#improving_scrolling_performance_with_passive_listeners26window.addEventListener("scroll", onScroll, { passive: true });27return () => window.removeEventListener("scroll", onScroll);28}, []);2930return scrollY;31}323334