|
|
@ -84,20 +84,30 @@ function handleDrag(event) { |
|
|
|
if (!isDragging.value) return |
|
|
|
|
|
|
|
const touchEvent = event.touches ? event.touches[0] : event |
|
|
|
const deltaX = touchEvent.clientX - startX.value |
|
|
|
const deltaY = touchEvent.clientY - startY.value |
|
|
|
const rect = sliderTrack.value.getBoundingClientRect() |
|
|
|
let percentX = (deltaX + startXValue.value) / rect.width |
|
|
|
let percentY = (deltaY + startYValue.value) / rect.height |
|
|
|
|
|
|
|
hValue.value = Math.min(1, Math.max(0, percentX)) * hTotalVal.value |
|
|
|
vValue.value = Math.min(1, Math.max(0, percentY)) * vTotalVal.value |
|
|
|
|
|
|
|
emit('update:sliderValue', +hValue.value.toFixed(), +vValue.value.toFixed()) |
|
|
|
const clientX = touchEvent.clientX |
|
|
|
const clientY = touchEvent.clientY |
|
|
|
const relativeX = clientX - rect.left |
|
|
|
const relativeY = clientY - rect.top |
|
|
|
|
|
|
|
const row = Math.ceil(relativeY / (rect.height / vTotalVal.value) ) |
|
|
|
const col = Math.ceil(relativeX / (rect.width /hTotalVal.value) ) |
|
|
|
|
|
|
|
const empty = (row - 1)* hTotalVal.value + col |
|
|
|
emit('update:sliderValue', empty) |
|
|
|
|
|
|
|
// |
|
|
|
// let percentX = (deltaX + startXValue.value) / rect.width |
|
|
|
// let percentY = (deltaY + startYValue.value) / rect.height |
|
|
|
// |
|
|
|
// hValue.value = Math.min(1, Math.max(0, percentX)) * hTotalVal.value |
|
|
|
// vValue.value = Math.min(1, Math.max(0, percentY)) * vTotalVal.value |
|
|
|
// |
|
|
|
// emit('update:sliderValue', +hValue.value.toFixed(), +vValue.value.toFixed()) |
|
|
|
} |
|
|
|
|
|
|
|
function handleEnd() { |
|
|
|
emit('update:sliderEndValue', +hValue.value.toFixed(), +vValue.value.toFixed()) |
|
|
|
// emit('update:sliderEndValue', +hValue.value.toFixed(), +vValue.value.toFixed()) |
|
|
|
isDragging.value = false |
|
|
|
document.removeEventListener('mousemove', handleDrag) |
|
|
|
document.removeEventListener('touchmove', handleDrag) |
|
|
|