123456789101112131415161718192021222324252627282930 |
- // Utilities
- import { onBeforeUnmount, ref, shallowRef, watch } from 'vue';
- import { SUPPORTS_INTERSECTION } from "../util/index.mjs";
- export function useIntersectionObserver(callback, options) {
- const intersectionRef = ref();
- const isIntersecting = shallowRef(false);
- if (SUPPORTS_INTERSECTION) {
- const observer = new IntersectionObserver(entries => {
- callback?.(entries, observer);
- isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
- }, options);
- onBeforeUnmount(() => {
- observer.disconnect();
- });
- watch(intersectionRef, (newValue, oldValue) => {
- if (oldValue) {
- observer.unobserve(oldValue);
- isIntersecting.value = false;
- }
- if (newValue) observer.observe(newValue);
- }, {
- flush: 'post'
- });
- }
- return {
- intersectionRef,
- isIntersecting
- };
- }
- //# sourceMappingURL=intersectionObserver.mjs.map
|