UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

34 lines 2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useVerticalScroll = void 0; const react_1 = require("react"); const useSmoothScroll_1 = require("./useSmoothScroll"); /** * A hook that can be used to control vertical scroll position of an element using smooth scrolling * @param scrollDuration How long it takes to scroll to the next click (transition) * @returns A ref to pass to the container */ function useVerticalScroll(scrollDuration = 200) { const elRef = react_1.useRef(null); const [scrollRef, scrollTo] = useSmoothScroll_1.useSmoothScroll(); const setRef = react_1.useCallback((el) => { scrollRef(el); elRef.current = el; }, []); react_1.useEffect(() => { const el = elRef.current; if (el) { const onWheel = (e) => { if (e.deltaY == 0) return; e.preventDefault(); scrollTo({ addTop: e.deltaY }, scrollDuration); }; el.addEventListener("wheel", onWheel); return () => el.removeEventListener("wheel", onWheel); } }, []); return setRef; } exports.useVerticalScroll = useVerticalScroll; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVmVydGljYWxTY3JvbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaG9va3MvdXNlVmVydGljYWxTY3JvbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQXFEO0FBQ3JELHVEQUFrRDtBQUVsRDs7OztHQUlHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQzdCLGlCQUF5QixHQUFHO0lBRTVCLE1BQU0sS0FBSyxHQUFHLGNBQU0sQ0FBVyxJQUFJLENBQUMsQ0FBQztJQUNyQyxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLGlDQUFlLEVBQUUsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxtQkFBVyxDQUFDLENBQUMsRUFBWSxFQUFFLEVBQUU7UUFDeEMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsaUJBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDWCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3pCLElBQUksRUFBRSxFQUFFO1lBQ0osTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFhLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQUUsT0FBTztnQkFDMUIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixRQUFRLENBQUMsRUFBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQztZQUNGLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdEMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQXZCRCw4Q0F1QkMifQ==