@netdata/netdata-ui
Version:
netdata UI kit
34 lines • 1.14 kB
JavaScript
import { useEffect } from "react";
import getAncestors from "../mixins/getAncestors";
export default (function (target, callback) {
return useEffect(function () {
var removeScrollListeners;
var addScrollListeners = function addScrollListeners() {
var scrollAncestors = getAncestors(target).filter(function (node) {
return node.scrollHeight > node.clientHeight;
});
scrollAncestors.forEach(function (node) {
return node.addEventListener("scroll", callback, {
capture: false,
passive: true
});
});
return function () {
return scrollAncestors.forEach(function (node) {
return node.removeEventListener("scroll", callback);
});
};
};
removeScrollListeners = addScrollListeners();
var onResize = function onResize() {
removeScrollListeners();
removeScrollListeners = addScrollListeners();
callback();
};
window.addEventListener("resize", onResize);
return function () {
removeScrollListeners();
window.removeEventListener("resize", onResize);
};
}, [target, callback]);
});