@@ -135,6 +135,14 @@ function Panzoom(
135
135
let y = 0
136
136
let scale = 1
137
137
let isPanning = false
138
+ let origX : number
139
+ let origY : number
140
+ let startClientX : number
141
+ let startClientY : number
142
+ let startScale : number
143
+ let startDistance : number
144
+ const pointers : PointerEvent [ ] = [ ]
145
+
138
146
zoom ( options . startScale , { animate : false , force : true } )
139
147
// Wait for scale to update
140
148
// for accurate dimensions
@@ -318,6 +326,12 @@ function Panzoom(
318
326
let toX = x
319
327
let toY = y
320
328
329
+ // Adjust the pointer starting point to ensure that the current pointer panning is accurate.
330
+ if ( isPanning ) {
331
+ startClientX = ( startClientX / scale ) * toScale ;
332
+ startClientY = ( startClientY / scale ) * toScale ;
333
+ }
334
+
321
335
if ( opts . focal ) {
322
336
// The difference between the point after the scale and the point before the scale
323
337
// plus the current translation after the scale
@@ -430,14 +444,6 @@ function Panzoom(
430
444
return setTransformWithEvent ( 'panzoomreset' , opts )
431
445
}
432
446
433
- let origX : number
434
- let origY : number
435
- let startClientX : number
436
- let startClientY : number
437
- let startScale : number
438
- let startDistance : number
439
- const pointers : PointerEvent [ ] = [ ]
440
-
441
447
function handleDown ( event : PointerEvent ) {
442
448
// Don't handle this event if the target is excluded
443
449
if ( isExcluded ( event . target as Element , options ) ) {
0 commit comments