swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
67 lines (53 loc) • 1.63 kB
JavaScript
exports.__esModule = true;
exports.default = addSlide;
function addSlide(index, slides) {
var swiper = this;
var $wrapperEl = swiper.$wrapperEl,
params = swiper.params,
activeIndex = swiper.activeIndex;
var activeIndexBuffer = activeIndex;
if (params.loop) {
activeIndexBuffer -= swiper.loopedSlides;
swiper.loopDestroy();
swiper.slides = $wrapperEl.children("." + params.slideClass);
}
var baseLength = swiper.slides.length;
if (index <= 0) {
swiper.prependSlide(slides);
return;
}
if (index >= baseLength) {
swiper.appendSlide(slides);
return;
}
var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
var slidesBuffer = [];
for (var i = baseLength - 1; i >= index; i -= 1) {
var currentSlide = swiper.slides.eq(i);
currentSlide.remove();
slidesBuffer.unshift(currentSlide);
}
if (typeof slides === 'object' && 'length' in slides) {
for (var _i = 0; _i < slides.length; _i += 1) {
if (slides[_i]) $wrapperEl.append(slides[_i]);
}
newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
} else {
$wrapperEl.append(slides);
}
for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
$wrapperEl.append(slidesBuffer[_i2]);
}
if (params.loop) {
swiper.loopCreate();
}
if (!(params.observer && swiper.support.observer)) {
swiper.update();
}
if (params.loop) {
swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
} else {
swiper.slideTo(newActiveIndex, 0, false);
}
}
;