UNPKG

@ionic/core

Version:
52 lines (51 loc) 1.39 kB
/*! * (C) Ionic http://ionicframework.com - MIT License */ export const createPanRecognizer = (direction, thresh, maxAngle) => { const radians = maxAngle * (Math.PI / 180); const isDirX = direction === 'x'; const maxCosine = Math.cos(radians); const threshold = thresh * thresh; let startX = 0; let startY = 0; let dirty = false; let isPan = 0; return { start(x, y) { startX = x; startY = y; isPan = 0; dirty = true; }, detect(x, y) { if (!dirty) { return false; } const deltaX = x - startX; const deltaY = y - startY; const distance = deltaX * deltaX + deltaY * deltaY; if (distance < threshold) { return false; } const hypotenuse = Math.sqrt(distance); const cosine = (isDirX ? deltaX : deltaY) / hypotenuse; if (cosine > maxCosine) { isPan = 1; } else if (cosine < -maxCosine) { isPan = -1; } else { isPan = 0; } dirty = false; return true; }, isGesture() { return isPan !== 0; }, getDirection() { return isPan; }, }; };