From 424faf787a3097f912eba18585e97811b3c79215 Mon Sep 17 00:00:00 2001 From: Theodore Brown Date: Tue, 21 Nov 2023 10:27:02 -0600 Subject: [PATCH] Updates --- build/cropt.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/build/cropt.js b/build/cropt.js index c21ceb1..342d106 100644 --- a/build/cropt.js +++ b/build/cropt.js @@ -327,16 +327,21 @@ export class Cropt { #initDraggable() { let originalX = 0; let originalY = 0; - let pEventCache = new Map(); + let pEventCache = []; let origPinchDistance = 0; let pointerMove = (ev) => { ev.preventDefault(); // update cached event - pEventCache.set(ev.pointerId, ev); - if (pEventCache.size === 2) { - const events = pEventCache.entries(); - let touch1 = events.next().value; - let touch2 = events.next().value; + const cacheIndex = pEventCache.findIndex((cEv) => cEv.pointerId === ev.pointerId); + if (cacheIndex === -1) { + return; + } + else { + pEventCache[cacheIndex] = ev; + } + if (pEventCache.length === 2) { + let touch1 = pEventCache[0]; + let touch2 = pEventCache[1]; let dist = Math.sqrt((touch1.pageX - touch2.pageX) * (touch1.pageX - touch2.pageX) + (touch1.pageY - touch2.pageY) * (touch1.pageY - touch2.pageY)); if (origPinchDistance === 0) { origPinchDistance = dist / this.#scale; @@ -353,8 +358,11 @@ export class Cropt { }; let pointerUp = (ev) => { //this.elements.overlay.releasePointerCapture(ev.pointerId); - pEventCache.delete(ev.pointerId); - if (pEventCache.size === 0) { + const cacheIndex = pEventCache.findIndex((cEv) => cEv.pointerId === ev.pointerId); + if (cacheIndex !== -1) { + pEventCache.splice(cacheIndex, 1); + } + if (pEventCache.length === 0) { //this.elements.overlay.removeEventListener('pointerenter', pointerDown); this.elements.overlay.removeEventListener('pointermove', pointerMove); this.elements.overlay.removeEventListener('pointerup', pointerUp); @@ -368,9 +376,9 @@ export class Cropt { return; // non-left mouse button press } ev.preventDefault(); - pEventCache.set(ev.pointerId, ev); + pEventCache.push(ev); this.elements.overlay.setPointerCapture(ev.pointerId); - if (pEventCache.size > 1) { + if (pEventCache.length > 1) { return; // ignore additional pointers } originalX = ev.pageX;