@@ -17,6 +17,7 @@ tmpl.innerHTML = `
1717`
1818
1919const startPositions = new WeakMap ( )
20+ const dragStartPositions = new WeakMap ( )
2021
2122function moveCropArea ( event : MouseEvent | KeyboardEvent ) {
2223 const el = event . currentTarget
@@ -34,9 +35,11 @@ function moveCropArea(event: MouseEvent | KeyboardEvent) {
3435 } else if ( event . key === 'ArrowRight' ) {
3536 deltaX = 1
3637 }
37- } else if ( el . dragStartX && el . dragStartY && event instanceof MouseEvent ) {
38- deltaX = event . pageX - el . dragStartX
39- deltaY = event . pageY - el . dragStartY
38+ } else if ( dragStartPositions . has ( el ) && event instanceof MouseEvent ) {
39+ const pos = dragStartPositions . get ( el )
40+ if ( ! pos ) return
41+ deltaX = event . pageX - pos . dragStartX
42+ deltaY = event . pageY - pos . dragStartY
4043 }
4144
4245 if ( deltaX !== 0 || deltaY !== 0 ) {
@@ -49,8 +52,10 @@ function moveCropArea(event: MouseEvent | KeyboardEvent) {
4952 }
5053
5154 if ( event instanceof MouseEvent ) {
52- el . dragStartX = event . pageX
53- el . dragStartY = event . pageY
55+ dragStartPositions . set ( el , {
56+ dragStartX : event . pageX ,
57+ dragStartY : event . pageY
58+ } )
5459 }
5560}
5661
@@ -154,7 +159,7 @@ function stopUpdate(event: MouseEvent) {
154159 const el = event . currentTarget
155160 if ( ! ( el instanceof ImageCropElement ) ) return
156161
157- el . dragStartX = el . dragStartY = null
162+ dragStartPositions . delete ( el )
158163 el . classList . remove ( 'nwse' , 'nesw' )
159164 el . removeEventListener ( 'mousemove' , updateCropArea )
160165 el . removeEventListener ( 'mousemove' , moveCropArea )
@@ -175,8 +180,6 @@ function fireChangeEvent(target: ImageCropElement, result: {x: number, y: number
175180class ImageCropElement extends HTMLElement {
176181 image : HTMLImageElement
177182 box : HTMLElement
178- dragStartX : ?number
179- dragStartY : ?number
180183
181184 connectedCallback ( ) {
182185 this . appendChild ( document . importNode ( tmpl . content , true ) )
0 commit comments