123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import { animateCSSModeScroll } from '../../shared/utils.js';
- export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
- if (translate === void 0) {
- translate = 0;
- }
- if (speed === void 0) {
- speed = this.params.speed;
- }
- if (runCallbacks === void 0) {
- runCallbacks = true;
- }
- if (translateBounds === void 0) {
- translateBounds = true;
- }
- const swiper = this;
- 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;
- swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
- swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
- swiper.onTranslateToWrapperTransitionEnd = null;
- delete swiper.onTranslateToWrapperTransitionEnd;
- if (runCallbacks) {
- swiper.emit('transitionEnd');
- }
- };
- }
- swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
- swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
- }
- }
- return true;
- }
|