@launchmenu/core
Version:
An environment for visual keyboard controlled applets
34 lines • 2.6 kB
JavaScript
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==
;