123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import {
- animateCSSModeScroll
- } from '../../shared/utils.js';
- export default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds =
- true, internal) {
- const swiper = this;
- let timer;
- const {
- params,
- wrapperEl
- } = swiper;
- if (swiper.animating && params.preventInteractionOnTransition) {
- return false;
- }
- const minTranslate = swiper.minTranslate();
- const maxTranslate = swiper.maxTranslate();
- let newTranslate;
- if (translateBounds && translate > minTranslate) newTranslate = minTranslate;
- else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;
- else newTranslate = translate; // Update progress
- swiper.updateProgress(newTranslate);
- if (params.cssMode) {
- const isH = swiper.isHorizontal();
- if (speed === 0) {
- wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
- } else {
- if (!swiper.support.smoothScroll) {
- animateCSSModeScroll({
- swiper,
- targetPosition: -newTranslate,
- side: isH ? 'left' : 'top'
- });
- return true;
- }
- wrapperEl.scrollTo({
- [isH ? 'left' : 'top']: -newTranslate,
- behavior: 'smooth'
- });
- }
- return true;
- }
- if (speed === 0) {
- swiper.setTransition(0);
- swiper.setTranslate(newTranslate);
- if (runCallbacks) {
- swiper.emit('beforeTransitionStart', speed, internal);
- swiper.emit('transitionEnd');
- }
- } else {
- swiper.setTransition(speed);
- swiper.setTranslate(newTranslate);
- if (runCallbacks) {
- swiper.emit('beforeTransitionStart', speed, internal);
- swiper.emit('transitionStart');
- }
- if (!swiper.animating) {
- swiper.animating = true;
- if (!swiper.onTranslateToWrapperTransitionEnd) {
- swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
- if (!swiper || swiper.destroyed) return;
- if (e.target !== this) return;
- clearTimeout(timer)
- swiper.onTranslateToWrapperTransitionEnd = null;
- delete swiper.onTranslateToWrapperTransitionEnd;
- if (runCallbacks) {
- swiper.emit('transitionEnd');
- }
- };
- }
- timer = setTimeout(() => {
- swiper.onTranslateToWrapperTransitionEnd();
- }, speed)
- }
- }
- return true;
- }
|