cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
189 lines (188 loc) • 6.16 kB
JavaScript
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 };