import Utils from '../../../utils/utils'; export default function () { const swiper = this; const { activeIndex, initialized, loopedSlides = 0, params, $el, } = swiper; const breakpoints = params.breakpoints; if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return; // Get breakpoint for window width and update parameters const breakpoint = swiper.getBreakpoint(breakpoints); if (breakpoint && swiper.currentBreakpoint !== breakpoint) { const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; if (breakpointOnlyParams) { ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => { const paramValue = breakpointOnlyParams[param]; if (typeof paramValue === 'undefined') return; if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { breakpointOnlyParams[param] = 'auto'; } else if (param === 'slidesPerView') { breakpointOnlyParams[param] = parseFloat(paramValue); } else { breakpointOnlyParams[param] = parseInt(paramValue, 10); } }); } const breakpointParams = breakpointOnlyParams || swiper.originalParams; const wasMultiRow = params.slidesPerColumn > 1; const isMultiRow = breakpointParams.slidesPerColumn > 1; if (wasMultiRow && !isMultiRow) { $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`); } else if (!wasMultiRow && isMultiRow) { $el.addClass(`${params.containerModifierClass}multirow`); if (breakpointParams.slidesPerColumnFill === 'column') { $el.addClass(`${params.containerModifierClass}multirow-column`); } } const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); if (directionChanged && initialized) { swiper.changeDirection(); } Utils.extend(swiper.params, breakpointParams); Utils.extend(swiper, { allowTouchMove: swiper.params.allowTouchMove, allowSlideNext: swiper.params.allowSlideNext, allowSlidePrev: swiper.params.allowSlidePrev, }); swiper.currentBreakpoint = breakpoint; if (needsReLoop && initialized) { swiper.loopDestroy(); swiper.loopCreate(); swiper.updateSlides(); swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); } swiper.emit('breakpoint', breakpointParams); } }