UNPKG

2.65 kBJavaScriptView Raw
1import { animateCSSModeScroll } from '../../shared/utils.js';
2export default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
3 const swiper = this;
4 const {
5 params,
6 wrapperEl
7 } = swiper;
8
9 if (swiper.animating && params.preventInteractionOnTransition) {
10 return false;
11 }
12
13 const minTranslate = swiper.minTranslate();
14 const maxTranslate = swiper.maxTranslate();
15 let newTranslate;
16 if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
17
18 swiper.updateProgress(newTranslate);
19
20 if (params.cssMode) {
21 const isH = swiper.isHorizontal();
22
23 if (speed === 0) {
24 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
25 } else {
26 if (!swiper.support.smoothScroll) {
27 animateCSSModeScroll({
28 swiper,
29 targetPosition: -newTranslate,
30 side: isH ? 'left' : 'top'
31 });
32 return true;
33 }
34
35 wrapperEl.scrollTo({
36 [isH ? 'left' : 'top']: -newTranslate,
37 behavior: 'smooth'
38 });
39 }
40
41 return true;
42 }
43
44 if (speed === 0) {
45 swiper.setTransition(0);
46 swiper.setTranslate(newTranslate);
47
48 if (runCallbacks) {
49 swiper.emit('beforeTransitionStart', speed, internal);
50 swiper.emit('transitionEnd');
51 }
52 } else {
53 swiper.setTransition(speed);
54 swiper.setTranslate(newTranslate);
55
56 if (runCallbacks) {
57 swiper.emit('beforeTransitionStart', speed, internal);
58 swiper.emit('transitionStart');
59 }
60
61 if (!swiper.animating) {
62 swiper.animating = true;
63
64 if (!swiper.onTranslateToWrapperTransitionEnd) {
65 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
66 if (!swiper || swiper.destroyed) return;
67 if (e.target !== this) return;
68 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
69 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
70 swiper.onTranslateToWrapperTransitionEnd = null;
71 delete swiper.onTranslateToWrapperTransitionEnd;
72
73 if (runCallbacks) {
74 swiper.emit('transitionEnd');
75 }
76 };
77 }
78
79 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
80 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
81 }
82 }
83
84 return true;
85}
\No newline at end of file