tav-ui
Version:
31 lines (28 loc) • 934 B
JavaScript
import { onBeforeUnmount } from 'vue';
function useKeepScroll(keepScrollOpt) {
if (!keepScrollOpt.scrollEl && (!keepScrollOpt.getScrollTop || !keepScrollOpt.setScrollTop))
throw new Error("invalid params!");
let scrollTop = 0;
const getScrollTop = keepScrollOpt.getScrollTop ?? function() {
return keepScrollOpt.scrollEl.scrollTop;
};
const setScrollTop = keepScrollOpt.setScrollTop ?? function(value) {
keepScrollOpt.scrollEl.scrollTop = value;
};
function onScroll() {
scrollTop = getScrollTop();
}
const scrollFn = () => {
setScrollTop(scrollTop);
};
scrollFn();
if (keepScrollOpt.scrollEl) {
keepScrollOpt.scrollEl.addEventListener("scroll", onScroll);
onBeforeUnmount(() => {
keepScrollOpt.scrollEl?.removeEventListener("scroll", onScroll);
});
}
return { onScroll, scrollFn, scrollTop };
}
export { useKeepScroll };
//# sourceMappingURL=useKeepScroll2.mjs.map