UNPKG

tav-ui

Version:
53 lines (48 loc) 1.43 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var core = require('@vueuse/core'); var is = require('../../utils/is2.js'); function useScroll(refEl, options) { const refX = vue.ref(0); const refY = vue.ref(0); let handler = () => { if (is.isWindow(refEl.value)) { refX.value = refEl.value.scrollX; refY.value = refEl.value.scrollY; } else if (refEl.value) { refX.value = refEl.value.scrollLeft; refY.value = refEl.value.scrollTop; } }; if (is.isObject(options)) { let wait = 0; if (options.wait && options.wait > 0) { wait = options.wait; Reflect.deleteProperty(options, "wait"); } handler = core.useThrottleFn(handler, wait); } let stopWatch; vue.onMounted(() => { stopWatch = vue.watch(refEl, (el, prevEl, onCleanup) => { if (el) el.addEventListener("scroll", handler); else if (prevEl) prevEl.removeEventListener("scroll", handler); onCleanup(() => { refX.value = refY.value = 0; el && el.removeEventListener("scroll", handler); }); }, { immediate: true }); }); vue.onUnmounted(() => { refEl.value && refEl.value.removeEventListener("scroll", handler); }); function stop() { stopWatch && stopWatch(); } return { refX, refY, stop }; } exports.useScroll = useScroll; //# sourceMappingURL=useScroll2.js.map