* Copyright (c) 2022 - present TinyVue Authors.
* Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.
*
* Use of this source code is governed by an MIT-style license.
*
* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
*
*/
const MIN_DISTANCE = 10
export const getDirection = (x, y) => {
if (x > y && x > MIN_DISTANCE) {
return 'horizontal'
}
if (y > x && y > MIN_DISTANCE) {
return 'vertical'
}
return ''
}
export const touchStart = (state) => (event) => {
resetTouchStatus(state)
state.startX = event.touches[0].clientX
state.startY = event.touches[0].clientY
}
export const touchMove = (state) => (event) => {
const touch = event.touches[0]
state.deltaX = touch.clientX - state.startX
state.deltaY = touch.clientY - state.startY
state.offsetX = Math.abs(state.deltaX)
state.offsetY = Math.abs(state.deltaY)
state.direction = state.direction || getDirection(state.offsetX, state.offsetY)
}
export const resetTouchStatus = (state) => {
state.direction = ''
state.deltaX = 0
state.deltaY = 0
state.offsetX = 0
state.offsetY = 0
}