52 lines
1.5 KiB
JavaScript
52 lines
1.5 KiB
JavaScript
export default function loopCreate() {
|
|
const swiper = this;
|
|
const {
|
|
params,
|
|
$wrapperEl,
|
|
native
|
|
} = swiper; // Remove duplicated slides
|
|
const $selector = $wrapperEl;
|
|
let slides = native.children;
|
|
|
|
if (params.loopFillGroupWithBlank) {
|
|
const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
|
|
|
|
if (blankSlidesNum !== params.slidesPerGroup) {
|
|
native.loopBlankShow = true;
|
|
native.loopBlankNumber = blankSlidesNum;
|
|
}
|
|
}
|
|
|
|
if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
|
|
swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
|
|
swiper.loopedSlides += params.loopAdditionalSlides;
|
|
|
|
if (swiper.loopedSlides > slides.length) {
|
|
swiper.loopedSlides = slides.length;
|
|
}
|
|
const prependSlides = [];
|
|
const appendSlides = [];
|
|
slides.forEach((el, index) => {
|
|
const slide = el;
|
|
if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
|
|
prependSlides.push(el);
|
|
}
|
|
|
|
if (index < swiper.loopedSlides) {
|
|
appendSlides.push(el);
|
|
}
|
|
});
|
|
let list = [...swiper.native.value];
|
|
let newList = [...list];
|
|
swiper.originalDataList = [...swiper.native.value];
|
|
for (let i = 0; i < appendSlides.length; i += 1) {
|
|
newList.push(list[appendSlides[i].index]);
|
|
}
|
|
|
|
for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
|
|
newList.unshift(list[prependSlides[i].index]);
|
|
}
|
|
swiper.native.$emit("input", newList)
|
|
return true;
|
|
}
|