@@ -484,25 +484,18 @@ export const Carousel = defineComponent({
484
484
if ( ! skipTransition && isSliding . value ) {
485
485
return
486
486
}
487
-
488
- let targetIndex = slideIndex
489
- let mappedIndex = slideIndex
490
-
491
- prevSlideIndex . value = currentSlideIndex . value
492
-
493
- if ( ! config . wrapAround ) {
494
- targetIndex = getNumberInRange ( {
495
- val : targetIndex ,
496
- max : maxSlideIndex . value ,
497
- min : minSlideIndex . value ,
498
- } )
499
- } else {
500
- mappedIndex = mapNumberToRange ( {
501
- val : targetIndex ,
502
- max : maxSlideIndex . value ,
503
- min : minSlideIndex . value ,
504
- } )
487
+
488
+ const targetIndex = ( config . wrapAround ? mapNumberToRange : getNumberInRange ) ( {
489
+ val : slideIndex ,
490
+ max : maxSlideIndex . value ,
491
+ min : minSlideIndex . value ,
492
+ } )
493
+
494
+ if ( currentSlideIndex . value === targetIndex ) {
495
+ return ;
505
496
}
497
+
498
+ prevSlideIndex . value = currentSlideIndex . value
506
499
507
500
emit ( 'slide-start' , {
508
501
slidingToIndex : slideIndex ,
@@ -514,17 +507,17 @@ export const Carousel = defineComponent({
514
507
stopAutoplay ( )
515
508
isSliding . value = true
516
509
517
- currentSlideIndex . value = targetIndex
518
- if ( mappedIndex !== targetIndex ) {
510
+ currentSlideIndex . value = slideIndex
511
+ if ( targetIndex !== slideIndex ) {
519
512
modelWatcher . pause ( )
520
513
}
521
- emit ( 'update:modelValue' , mappedIndex )
514
+ emit ( 'update:modelValue' , targetIndex )
522
515
523
516
const transitionCallback = ( ) : void => {
524
- if ( config . wrapAround && mappedIndex !== targetIndex ) {
517
+ if ( config . wrapAround && targetIndex !== slideIndex ) {
525
518
modelWatcher . resume ( )
526
519
527
- currentSlideIndex . value = mappedIndex
520
+ currentSlideIndex . value = targetIndex
528
521
emit ( 'loop' , {
529
522
currentSlideIndex : currentSlideIndex . value ,
530
523
slidingToIndex : slideIndex ,
0 commit comments