1 | import { animateCSSModeScroll } from '../../shared/utils.js';
|
2 | export 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;
|
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 |