| const MIN_DISTANCE = 10 | 
|   | 
| function getDirection(x, y) { | 
|   if (x > y && x > MIN_DISTANCE) { | 
|     return 'horizontal' | 
|   } | 
|   if (y > x && y > MIN_DISTANCE) { | 
|     return 'vertical' | 
|   } | 
|   return '' | 
| } | 
|   | 
| export default { | 
|   methods: { | 
|     touchStart(e) { | 
|       this.resetTouchStatus() | 
|       const touch = this.getTouchPoint(e) | 
|       this.startX = touch.x | 
|       this.startY = touch.y | 
|     }, | 
|     touchMove(e) { | 
|       const touch = this.getTouchPoint(e) | 
|       this.deltaX = touch.x - this.startX | 
|       this.deltaY = touch.y - this.startY | 
|       this.offsetX = Math.abs(this.deltaX) | 
|       this.offsetY = Math.abs(this.deltaY) | 
|       this.direction = this.direction || getDirection(this.offsetX, this.offsetY) | 
|     }, | 
|     getTouchPoint(e) { | 
|       if (!e) { | 
|         return { | 
|           x: 0, | 
|           y: 0 | 
|         } | 
|       } | 
|       if (e.touches && e.touches[0]) { | 
|         return { | 
|           x: e.touches[0].pageX, | 
|           y: e.touches[0].pageY | 
|         } | 
|       } | 
|       if (e.changedTouches && e.changedTouches[0]) { | 
|         return { | 
|           x: e.changedTouches[0].pageX, | 
|           y: e.changedTouches[0].pageY | 
|         } | 
|       } | 
|       return { | 
|         x: e.clientX || 0, | 
|         y: e.clientY || 0 | 
|       } | 
|     }, | 
|     resetTouchStatus() { | 
|       this.direction = '' | 
|       this.deltaX = 0 | 
|       this.deltaY = 0 | 
|       this.offsetX = 0 | 
|       this.offsetY = 0 | 
|     } | 
|   } | 
| } |