UNPKG

1.83 kBJavaScriptView Raw
1import React from 'react';
2import { calcLoopedSlides } from '../shared/calc-looped-slides.js';
3
4function renderLoop(swiper, slides, swiperParams) {
5 const modifiedSlides = slides.map((child, index) => {
6 return /*#__PURE__*/React.cloneElement(child, {
7 swiper,
8 'data-swiper-slide-index': index
9 });
10 });
11
12 function duplicateSlide(child, index, position) {
13 return /*#__PURE__*/React.cloneElement(child, {
14 key: `${child.key}-duplicate-${index}-${position}`,
15 className: `${child.props.className || ''} ${swiperParams.slideDuplicateClass}`
16 });
17 }
18
19 if (swiperParams.loopFillGroupWithBlank) {
20 const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;
21
22 if (blankSlidesNum !== swiperParams.slidesPerGroup) {
23 for (let i = 0; i < blankSlidesNum; i += 1) {
24 const blankSlide = /*#__PURE__*/React.createElement("div", {
25 className: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}`
26 });
27 modifiedSlides.push(blankSlide);
28 }
29 }
30 }
31
32 if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {
33 swiperParams.loopedSlides = modifiedSlides.length;
34 }
35
36 const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);
37 const prependSlides = [];
38 const appendSlides = [];
39
40 for (let i = 0; i < loopedSlides; i += 1) {
41 const index = i - Math.floor(i / modifiedSlides.length) * modifiedSlides.length;
42 appendSlides.push(duplicateSlide(modifiedSlides[index], i, 'append'));
43 prependSlides.unshift(duplicateSlide(modifiedSlides[modifiedSlides.length - index - 1], i, 'prepend'));
44 }
45
46 if (swiper) {
47 swiper.loopedSlides = loopedSlides;
48 }
49
50 return [...prependSlides, ...modifiedSlides, ...appendSlides];
51}
52
53export { calcLoopedSlides, renderLoop };
\No newline at end of file