@frontify/fondue
Version:
Design system of Frontify
31 lines (30 loc) • 1.04 kB
JavaScript
import { useEffect as h } from "react";
const S = (n, { isDisabled: e = !1 }) => {
h(() => {
const t = n.current, c = (l) => {
const r = ["auto", "scroll"];
if (!l || l === t)
return null;
const o = r.includes(window.getComputedStyle(l).overflowY);
return l.scrollHeight > l.clientHeight && o ? l : c(l.parentElement);
}, a = (l) => {
const r = () => {
l.stopPropagation(), l.preventDefault();
};
if (t !== null) {
const o = l.deltaY, u = o < 0, s = c(l.target) ?? t, { scrollTop: f, scrollHeight: p, clientHeight: g } = s;
if (!u && o > p - g - f)
return s.scrollTop = p, r(), !1;
if (u && -o > f)
return s.scrollTop = 0, r(), !1;
}
}, i = { passive: !1, capture: !1 };
return !e && t !== null && t.addEventListener("wheel", a, i), () => {
!e && t !== null && t.removeEventListener("wheel", a, i);
};
}, [e, n]);
};
export {
S as useContainScroll
};
//# sourceMappingURL=useContainScroll.es.js.map