UNPKG

1.36 kBJavaScriptView Raw
1import { children } from 'solid-js';
2
3function childrenAsArray(c) {
4 const cachedChildren = children(() => c);
5 return Array.isArray(cachedChildren()) ? cachedChildren() : [cachedChildren()];
6}
7
8function processChildren(c) {
9 const slides = [];
10 childrenAsArray(c).forEach(child => {
11 if (!child) return;
12
13 if (child.className && child.className.indexOf('swiper-slide') >= 0) {
14 slides.push(child);
15 } else if (child.children) {
16 processChildren(child.children).forEach(slide => slides.push(slide));
17 }
18 });
19 return slides;
20}
21
22function getChildren(c) {
23 const slides = [];
24 const slots = {
25 'container-start': [],
26 'container-end': [],
27 'wrapper-start': [],
28 'wrapper-end': []
29 };
30 childrenAsArray(c).forEach(child => {
31 if (!child) return;
32
33 if (child.className && child.className.indexOf('swiper-slide') >= 0) {
34 slides.push(child);
35 } else if (child.slot && slots[child.slot]) {
36 slots[child.slot].push(child);
37 } else if (child.children) {
38 const foundSlides = processChildren(child.children);
39
40 if (foundSlides.length > 0) {
41 foundSlides.forEach(slide => slides.push(slide));
42 } else {
43 slots['container-end'].push(child);
44 }
45 } else {
46 slots['container-end'].push(child);
47 }
48 });
49 return {
50 slides,
51 slots
52 };
53}
54
55export { getChildren };
\No newline at end of file