1 | function 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 |
|
41 | export { getChildren }; |
\ | No newline at end of file |