All files / repo/src/hooks useMouseCanvasPosition.ts

100% Statements 15/15
100% Branches 8/8
100% Functions 2/2
100% Lines 15/15

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    1x 3x 3x 3x   2x   2x 3x 3x   3x 3x 3x 3x 3x   3x 3x  
import type { Ref } from 'vue';
 
export function useMouseCanvasPosition(canvasRef: Ref<HTMLCanvasElement | null>) {
  const getMousePosition = (event: MouseEvent | TouchEvent | any) => {
    const canvas = canvasRef.value;
    if (!canvas) return { x: 0, y: 0 };
 
    const rect = canvas.getBoundingClientRect();
 
    const isTouchEvent = 'touches' in event;
    const clientX = isTouchEvent ? event.touches[0]?.clientX : event.clientX;
    const clientY = isTouchEvent ? event.touches[0]?.clientY : event.clientY;
 
    return {
      x: clientX - rect.left,
      y: clientY - rect.top,
    };
  };
 
  return { getMousePosition };
}