Drag

import { ref } from 'vue'
import { useDrag } from '@vueuse/gesture'
import { useMotionProperties, useSpring } from '@vueuse/motion'

const demoElement = ref()

const { motionProperties } = useMotionProperties(demoElement, {
  cursor: 'grab',
  x: 0,
  y: 0,
})

const { set } = useSpring(motionProperties)

useDrag(
  ({ movement: [x, y], dragging }) => {
    if (!dragging) {
      set({ x: 0, y: 0, cursor: 'grab' })
      return
    }

    set({
      cursor: 'grabbing',
      x,
      y,
    })
  },
  {
    domTarget: demoElement,
  },
)