UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

50 lines (45 loc) 1.3 kB
import React from 'react'; function isChildSwiperSlide(child) { return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide'); } function processChildren(c) { const slides = []; React.Children.toArray(c).forEach(child => { if (isChildSwiperSlide(child)) { slides.push(child); } else if (child.props && child.props.children) { processChildren(child.props.children).forEach(slide => slides.push(slide)); } }); return slides; } function getChildren(c) { const slides = []; const slots = { 'container-start': [], 'container-end': [], 'wrapper-start': [], 'wrapper-end': [] }; React.Children.toArray(c).forEach(child => { if (isChildSwiperSlide(child)) { slides.push(child); } else if (child.props && child.props.slot && slots[child.props.slot]) { slots[child.props.slot].push(child); } else if (child.props && child.props.children) { const foundSlides = processChildren(child.props.children); if (foundSlides.length > 0) { foundSlides.forEach(slide => slides.push(slide)); } else { slots['container-end'].push(child); } } else { slots['container-end'].push(child); } }); return { slides, slots }; } export { getChildren };