@@ -60,9 +60,9 @@ export function ImageGallery({
60
60
dialogRef . current ?. showModal ( ) ;
61
61
}
62
62
63
- function changeSlide ( directionNumber : number ) {
63
+ function changeSlide ( direction : number ) {
64
64
const totalImages = imagesInfoArray . length ;
65
- let newSlideNumber = slideNumber + directionNumber ;
65
+ let newSlideNumber = slideNumber + direction ;
66
66
67
67
newSlideNumber < 1 && ( newSlideNumber = totalImages ) ;
68
68
newSlideNumber > totalImages && ( newSlideNumber = 1 ) ;
@@ -73,14 +73,6 @@ export function ImageGallery({
73
73
}
74
74
}
75
75
76
- function scrollActiveThumbImgIntoView ( ) {
77
- activeThumbImgRef . current ?. scrollIntoView ( {
78
- behavior : "smooth" ,
79
- block : "nearest" ,
80
- inline : "center" ,
81
- } ) ;
82
- }
83
-
84
76
function switchFullScreen ( on : boolean ) {
85
77
if ( on ) {
86
78
lightboxRef . current ?. requestFullscreen ( ) . catch ( ( error ) => {
@@ -94,9 +86,18 @@ export function ImageGallery({
94
86
}
95
87
}
96
88
89
+ function scrollImage ( direction : number ) {
90
+ flushSync ( ( ) => changeSlide ( direction ) ) ;
91
+ activeThumbImgRef . current ?. scrollIntoView ( {
92
+ behavior : "smooth" ,
93
+ block : "nearest" ,
94
+ inline : "center" ,
95
+ } ) ;
96
+ }
97
+
97
98
function handleKeyDownOnModal ( e : React . KeyboardEvent < HTMLElement > ) {
98
- e . key === "ArrowLeft" && changeSlide ( - 1 ) ;
99
- e . key === "ArrowRight" && changeSlide ( 1 ) ;
99
+ e . key === "ArrowLeft" && scrollImage ( - 1 ) ;
100
+ e . key === "ArrowRight" && scrollImage ( 1 ) ;
100
101
e . key === "f" && fullscreen && switchFullScreen ( false ) ;
101
102
e . key === "f" && ! fullscreen && switchFullScreen ( true ) ;
102
103
}
@@ -245,10 +246,7 @@ export function ImageGallery({
245
246
...modalSlideBtnStyle ,
246
247
} }
247
248
title = "Previous image"
248
- onClick = { ( ) => {
249
- flushSync ( ( ) => changeSlide ( - 1 ) ) ;
250
- scrollActiveThumbImgIntoView ( ) ;
251
- } }
249
+ onClick = { ( ) => scrollImage ( - 1 ) }
252
250
>
253
251
{ SvgElement (
254
252
< path
@@ -271,10 +269,7 @@ export function ImageGallery({
271
269
...modalSlideBtnStyle ,
272
270
} }
273
271
title = "Next image"
274
- onClick = { ( ) => {
275
- flushSync ( ( ) => changeSlide ( 1 ) ) ;
276
- scrollActiveThumbImgIntoView ( ) ;
277
- } }
272
+ onClick = { ( ) => scrollImage ( 1 ) }
278
273
>
279
274
{ SvgElement (
280
275
< path
0 commit comments