UNPKG

@zebra-ui/swiper

Version:

专为多端设计的高性能swiper轮播组件库,支持多种复杂的 3D swiper轮播效果。

45 lines (39 loc) 1.24 kB
function getChildren(originalSlots = {}, slidesRef, oldSlidesRef) { const slides = [] const slots = { 'container-start': [], 'container-end': [], 'wrapper-start': [], 'wrapper-end': [] } const getSlidesFromElements = (els, slotName) => { if (!Array.isArray(els)) { return } els.forEach((vnode) => { const isFragment = typeof vnode.type === 'symbol' if (slotName === 'default') slotName = 'container-end' if (isFragment && vnode.children) { getSlidesFromElements(vnode.children, slotName) } else if ( (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper')) || (vnode.componentOptions && vnode.componentOptions.tag === 'SwiperSlide') ) { slides.push(vnode) } else if (slots[slotName]) { slots[slotName].push(vnode) } }) } Object.keys(originalSlots).forEach((slotName) => { if (typeof originalSlots[slotName] !== 'function') return const els = originalSlots[slotName]() getSlidesFromElements(els, slotName) }) oldSlidesRef.value = slidesRef.value slidesRef.value = slides return { slides, slots } } export { getChildren }