UNPKG

tav-ui

Version:
31 lines (28 loc) 934 B
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