@@ -212,6 +212,12 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
212
212
gesture . imageEl . style . transform = `translate3d(0,0,0) scale(${ zoom . scale } )` ;
213
213
currentScale = zoom . scale ;
214
214
isScaling = false ;
215
+ if ( zoom . scale > 1 && gesture . slideEl ) {
216
+ gesture . slideEl . classList . add ( `${ params . zoomedSlideClass } ` ) ;
217
+ } else if ( zoom . scale <= 1 && gesture . slideEl ) {
218
+ gesture . slideEl . classList . remove ( `${ params . zoomedSlideClass } ` ) ;
219
+ gesture . imageEl . style . transformOrigin = `` ;
220
+ }
215
221
if ( zoom . scale === 1 ) gesture . slideEl = undefined ;
216
222
}
217
223
function onTouchStart ( e ) {
@@ -346,7 +352,6 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
346
352
347
353
image . currentX = newPositionX ;
348
354
image . currentY = newPositionY ;
349
-
350
355
// Define if we need image drag
351
356
const scaledWidth = image . width * zoom . scale ;
352
357
const scaledHeight = image . height * zoom . scale ;
@@ -362,13 +367,14 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
362
367
}
363
368
function onTransitionEnd ( ) {
364
369
const zoom = swiper . zoom ;
365
- if ( gesture . slideEl && swiper . previousIndex !== swiper . activeIndex ) {
370
+ if ( gesture . slideEl && swiper . activeIndex !== swiper . slides . indexOf ( gesture . slideEl ) ) {
366
371
if ( gesture . imageEl ) {
367
372
gesture . imageEl . style . transform = 'translate3d(0,0,0) scale(1)' ;
368
373
}
369
374
if ( gesture . imageWrapEl ) {
370
375
gesture . imageWrapEl . style . transform = 'translate3d(0,0,0)' ;
371
376
}
377
+ gesture . slideEl . classList . remove ( `${ swiper . params . zoom . zoomedSlideClass } ` ) ;
372
378
373
379
zoom . scale = 1 ;
374
380
currentScale = 1 ;
@@ -452,6 +458,7 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
452
458
forceZoomRatio || gesture . imageWrapEl . getAttribute ( 'data-swiper-zoom' ) || params . maxRatio ;
453
459
currentScale =
454
460
forceZoomRatio || gesture . imageWrapEl . getAttribute ( 'data-swiper-zoom' ) || params . maxRatio ;
461
+
455
462
if ( e && ! ( currentScale === 1 && forceZoomRatio ) ) {
456
463
slideWidth = gesture . slideEl . offsetWidth ;
457
464
slideHeight = gesture . slideEl . offsetHeight ;
@@ -490,6 +497,9 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
490
497
translateX = 0 ;
491
498
translateY = 0 ;
492
499
}
500
+ if ( forceZoomRatio && zoom . scale === 1 ) {
501
+ gesture . imageEl . style . transformOrigin = `` ;
502
+ }
493
503
gesture . imageWrapEl . style . transitionDuration = '300ms' ;
494
504
gesture . imageWrapEl . style . transform = `translate3d(${ translateX } px, ${ translateY } px,0)` ;
495
505
gesture . imageEl . style . transitionDuration = '300ms' ;
@@ -527,6 +537,7 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
527
537
gesture . imageWrapEl . style . transform = 'translate3d(0,0,0)' ;
528
538
gesture . imageEl . style . transitionDuration = '300ms' ;
529
539
gesture . imageEl . style . transform = 'translate3d(0,0,0) scale(1)' ;
540
+ gesture . imageEl . style . transformOrigin = `` ;
530
541
531
542
gesture . slideEl . classList . remove ( `${ params . zoomedSlideClass } ` ) ;
532
543
gesture . slideEl = undefined ;
@@ -563,7 +574,6 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
563
574
const { passiveListener, activeListenerWithCapture } = getListeners ( ) ;
564
575
565
576
// Scale image
566
-
567
577
swiper . wrapperEl . addEventListener ( 'pointerdown' , onGestureStart , passiveListener ) ;
568
578
swiper . wrapperEl . addEventListener ( 'pointermove' , onGestureChange , activeListenerWithCapture ) ;
569
579
[ 'pointerup' , 'pointercancel' , 'pointerout' ] . forEach ( ( eventName ) => {
0 commit comments