tav-ui
Version:
53 lines (48 loc) • 1.43 kB
JavaScript
;
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