UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

183 lines (168 loc) 6.13 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _ssrWindow = require("ssr-window"); var _utils = require("../../utils/utils"); function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var Autoplay = { run: function run() { var swiper = this; var $activeSlideEl = swiper.slides.eq(swiper.activeIndex); var delay = swiper.params.autoplay.delay; if ($activeSlideEl.attr('data-swiper-autoplay')) { delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; } clearTimeout(swiper.autoplay.timeout); swiper.autoplay.timeout = (0, _utils.nextTick)(function () { if (swiper.params.autoplay.reverseDirection) { if (swiper.params.loop) { swiper.loopFix(); swiper.slidePrev(swiper.params.speed, true, true); swiper.emit('autoplay'); } else if (!swiper.isBeginning) { swiper.slidePrev(swiper.params.speed, true, true); swiper.emit('autoplay'); } else if (!swiper.params.autoplay.stopOnLastSlide) { swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); swiper.emit('autoplay'); } else { swiper.autoplay.stop(); } } else if (swiper.params.loop) { swiper.loopFix(); swiper.slideNext(swiper.params.speed, true, true); swiper.emit('autoplay'); } else if (!swiper.isEnd) { swiper.slideNext(swiper.params.speed, true, true); swiper.emit('autoplay'); } else if (!swiper.params.autoplay.stopOnLastSlide) { swiper.slideTo(0, swiper.params.speed, true, true); swiper.emit('autoplay'); } else { swiper.autoplay.stop(); } if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run(); }, delay); }, start: function start() { var swiper = this; if (typeof swiper.autoplay.timeout !== 'undefined') return false; if (swiper.autoplay.running) return false; swiper.autoplay.running = true; swiper.emit('autoplayStart'); swiper.autoplay.run(); return true; }, stop: function stop() { var swiper = this; if (!swiper.autoplay.running) return false; if (typeof swiper.autoplay.timeout === 'undefined') return false; if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); swiper.autoplay.timeout = undefined; } swiper.autoplay.running = false; swiper.emit('autoplayStop'); return true; }, pause: function pause(speed) { var swiper = this; if (!swiper.autoplay.running) return; if (swiper.autoplay.paused) return; if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout); swiper.autoplay.paused = true; if (speed === 0 || !swiper.params.autoplay.waitForTransition) { swiper.autoplay.paused = false; swiper.autoplay.run(); } else { swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); } }, onVisibilityChange: function onVisibilityChange() { var swiper = this; var document = (0, _ssrWindow.getDocument)(); if (document.visibilityState === 'hidden' && swiper.autoplay.running) { swiper.autoplay.pause(); } if (document.visibilityState === 'visible' && swiper.autoplay.paused) { swiper.autoplay.run(); swiper.autoplay.paused = false; } }, onTransitionEnd: function onTransitionEnd(e) { var swiper = this; if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; if (e.target !== swiper.$wrapperEl[0]) return; swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); swiper.autoplay.paused = false; if (!swiper.autoplay.running) { swiper.autoplay.stop(); } else { swiper.autoplay.run(); } } }; var _default = { name: 'autoplay', params: { autoplay: { enabled: false, delay: 3000, waitForTransition: true, disableOnInteraction: true, stopOnLastSlide: false, reverseDirection: false } }, create: function create() { var swiper = this; (0, _utils.bindModuleMethods)(swiper, { autoplay: _extends(_extends({}, Autoplay), {}, { running: false, paused: false }) }); }, on: { init: function init(swiper) { if (swiper.params.autoplay.enabled) { swiper.autoplay.start(); var document = (0, _ssrWindow.getDocument)(); document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); } }, beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) { if (swiper.autoplay.running) { if (internal || !swiper.params.autoplay.disableOnInteraction) { swiper.autoplay.pause(speed); } else { swiper.autoplay.stop(); } } }, sliderFirstMove: function sliderFirstMove(swiper) { if (swiper.autoplay.running) { if (swiper.params.autoplay.disableOnInteraction) { swiper.autoplay.stop(); } else { swiper.autoplay.pause(); } } }, touchEnd: function touchEnd(swiper) { if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { swiper.autoplay.run(); } }, destroy: function destroy(swiper) { if (swiper.autoplay.running) { swiper.autoplay.stop(); } var document = (0, _ssrWindow.getDocument)(); document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); } } }; exports.default = _default;