@stackoverfloweth/vue-compositions
Version:
A collection of reusable vue compositions.
22 lines • 880 B
JavaScript
import { computed, onMounted, ref } from 'vue';
import { useIntersectionObserver } from '../useIntersectionObserver';
export function useVisibilityObserver(element, options = {}) {
const visible = ref(false);
const optionsRef = ref(options);
const elementRef = ref(element);
const disconnectWhenVisible = computed(() => optionsRef.value.disconnectWhenVisible ?? false);
function intersect(entries) {
entries.forEach(entry => {
visible.value = entry.isIntersecting;
if (disconnectWhenVisible.value && entry.isIntersecting) {
disconnect();
}
});
}
const { observe, disconnect } = useIntersectionObserver(intersect, optionsRef);
onMounted(() => {
observe(elementRef);
});
return { elementRef, visible, disconnect };
}
//# sourceMappingURL=useVisibilityObserver.js.map