All files / repo/src/hooks useResizeObserver.ts

76.19% Statements 16/21
100% Branches 4/4
100% Functions 2/2
76.19% Lines 16/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 261x   1x 2x   2x 2x 2x 3x   2x   2x 2x 3x 2x 2x   2x         2x 2x  
import { onUnmounted, watch, type Ref } from 'vue';
 
export function useResizeObserver(targetRef: Ref<HTMLElement | null>, callback: () => void) {
  let observer: ResizeObserver | null = null;
 
  watch(
    targetRef,
    (element) => {
      if (!element) return;
 
      observer = new ResizeObserver(() => {
        callback();
      });
      observer.observe(element);
    },
    { immediate: true }
  );
 
  onUnmounted(() => {
    if (observer && targetRef.value) {
      observer.unobserve(targetRef.value);
    }
    observer = null;
  });
}