@@ -539,6 +539,11 @@ function Parvus(userOptions) {
539
539
}
540
540
lightbox . classList . add ( 'parvus--is-closing' ) ;
541
541
const transitionendHandler = ( ) => {
542
+ // Reset the image zoom (if ESC was pressed or went back in the browser history)
543
+ // after the ViewTransition (otherwise it looks bad)
544
+ if ( isPinching ) {
545
+ resetZoom ( IMAGE ) ;
546
+ }
542
547
leaveSlide ( currentIndex ) ;
543
548
lightbox . close ( ) ;
544
549
lightbox . classList . remove ( 'parvus--is-closing' ) ;
@@ -1036,6 +1041,25 @@ function Parvus(userOptions) {
1036
1041
contentEl . style . height = USE_ORIGINAL_SIZE ? '' : `${ NEW_HEIGHT } px` ;
1037
1042
} ;
1038
1043
1044
+ /**
1045
+ * Reset image zoom
1046
+ *
1047
+ * @param {HTMLImageElement } currentImg - The image
1048
+ */
1049
+ const resetZoom = currentImg => {
1050
+ currentImg . style . transition = 'transform 0.3s ease' ;
1051
+ currentImg . style . transform = '' ;
1052
+ setTimeout ( ( ) => {
1053
+ currentImg . style . transition = '' ;
1054
+ currentImg . style . transformOrigin = '' ;
1055
+ } , 300 ) ;
1056
+ isPinching = false ;
1057
+ currentScale = 1 ;
1058
+ pinchStartDistance = 0 ;
1059
+ lastPointersId = '' ;
1060
+ lightbox . classList . remove ( 'parvus--is-zooming' ) ;
1061
+ } ;
1062
+
1039
1063
/**
1040
1064
* Pinch zoom gesture
1041
1065
*
@@ -1258,17 +1282,7 @@ function Parvus(userOptions) {
1258
1282
}
1259
1283
} else {
1260
1284
if ( isPinching ) {
1261
- CURRENT_IMAGE . style . transition = 'transform 0.3s ease' ;
1262
- CURRENT_IMAGE . style . transform = '' ;
1263
- setTimeout ( ( ) => {
1264
- CURRENT_IMAGE . style . transition = '' ;
1265
- CURRENT_IMAGE . style . transformOrigin = '' ;
1266
- } , 300 ) ;
1267
- isPinching = false ;
1268
- currentScale = 1 ;
1269
- pinchStartDistance = 0 ;
1270
- lastPointersId = '' ;
1271
- lightbox . classList . remove ( 'parvus--is-zooming' ) ;
1285
+ resetZoom ( CURRENT_IMAGE ) ;
1272
1286
}
1273
1287
if ( drag . endX || drag . endY ) {
1274
1288
updateAfterDrag ( ) ;
0 commit comments