UNPKG

@larva.io/webcomponents

Version:

Fentrica SmartUnits WebComponents package

53 lines (52 loc) 1.43 kB
/*! * (C) Fentrica http://fentrica.com - Seee LICENSE.md */ 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; } }; }; //# sourceMappingURL=recognizers.js.map