UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

189 lines (188 loc) 6.16 kB
import { getDocument } from "../../../../ssr-window/ssr-window.esm.mjs"; import { bindModuleMethods, nextTick } from "../../utils/utils.mjs"; 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 = 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 = void 0; } 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 = 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 Autoplay$1 = { name: "autoplay", params: { autoplay: { enabled: false, delay: 3e3, waitForTransition: true, disableOnInteraction: true, stopOnLastSlide: false, reverseDirection: false } }, create: function create() { var swiper = this; 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 = 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 = getDocument(); document.removeEventListener("visibilitychange", swiper.autoplay.onVisibilityChange); } } }; export { Autoplay$1 as default };