UNPKG

1.08 kBJavaScriptView Raw
1function getChildren(originalSlots = {}, slidesRef, oldSlidesRef) {
2 const slides = [];
3 const slots = {
4 'container-start': [],
5 'container-end': [],
6 'wrapper-start': [],
7 'wrapper-end': []
8 };
9
10 const getSlidesFromElements = (els, slotName) => {
11 if (!Array.isArray(els)) {
12 return;
13 }
14
15 els.forEach(vnode => {
16 const isFragment = typeof vnode.type === 'symbol';
17 if (slotName === 'default') slotName = 'container-end';
18
19 if (isFragment && vnode.children) {
20 getSlidesFromElements(vnode.children, 'default');
21 } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper')) {
22 slides.push(vnode);
23 } else if (slots[slotName]) {
24 slots[slotName].push(vnode);
25 }
26 });
27 };
28
29 Object.keys(originalSlots).forEach(slotName => {
30 const els = originalSlots[slotName]();
31 getSlidesFromElements(els, slotName);
32 });
33 oldSlidesRef.value = slidesRef.value;
34 slidesRef.value = slides;
35 return {
36 slides,
37 slots
38 };
39}
40
41export { getChildren };
\No newline at end of file