UNPKG

infinity-forge

Version:
144 lines 6.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Grid = Grid; function Grid(_a) { var swiper = _a.swiper, extendParams = _a.extendParams, on = _a.on; extendParams({ grid: { rows: 1, fill: 'column', }, }); var slidesNumberEvenToRows; var slidesPerRow; var numFullColumns; var wasMultiRow; var getSpaceBetween = function () { var spaceBetween = swiper.params.spaceBetween; if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiper.size; } else if (typeof spaceBetween === 'string') { spaceBetween = parseFloat(spaceBetween); } return spaceBetween; }; var initSlides = function (slides) { var slidesPerView = swiper.params.slidesPerView; var _a = swiper.params.grid, rows = _a.rows, fill = _a.fill; var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; numFullColumns = Math.floor(slidesLength / rows); if (Math.floor(slidesLength / rows) === slidesLength / rows) { slidesNumberEvenToRows = slidesLength; } else { slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; } if (slidesPerView !== 'auto' && fill === 'row') { slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); } slidesPerRow = slidesNumberEvenToRows / rows; }; var unsetSlides = function () { if (swiper.slides) { swiper.slides.forEach(function (slide) { if (slide.swiperSlideGridSet) { slide.style.height = ''; slide.style[swiper.getDirectionLabel('margin-top')] = ''; } }); } }; var updateSlide = function (i, slide, slides) { var slidesPerGroup = swiper.params.slidesPerGroup; var spaceBetween = getSpaceBetween(); var _a = swiper.params.grid, rows = _a.rows, fill = _a.fill; var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; // Set slides order var newSlideOrderIndex; var column; var row; if (fill === 'row' && slidesPerGroup > 1) { var groupIndex = Math.floor(i / (slidesPerGroup * rows)); var slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; var columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); row = Math.floor(slideIndexInGroup / columnsInGroup); column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows; slide.style.order = newSlideOrderIndex; } else if (fill === 'column') { column = Math.floor(i / rows); row = i - column * rows; if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) { row += 1; if (row >= rows) { row = 0; column += 1; } } } else { row = Math.floor(i / slidesPerRow); column = i - row * slidesPerRow; } slide.row = row; slide.column = column; slide.style.height = "calc((100% - ".concat((rows - 1) * spaceBetween, "px) / ").concat(rows, ")"); slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && "".concat(spaceBetween, "px") : ''; slide.swiperSlideGridSet = true; }; var updateWrapperSize = function (slideSize, snapGrid) { var _a = swiper.params, centeredSlides = _a.centeredSlides, roundLengths = _a.roundLengths; var spaceBetween = getSpaceBetween(); var rows = swiper.params.grid.rows; swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; if (!swiper.params.cssMode) { swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = "".concat(swiper.virtualSize + spaceBetween, "px"); } if (centeredSlides) { var newSlidesGrid = []; for (var i = 0; i < snapGrid.length; i += 1) { var slidesGridItem = snapGrid[i]; if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); } snapGrid.splice(0, snapGrid.length); snapGrid.push.apply(snapGrid, newSlidesGrid); } }; var onInit = function () { wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; }; var onUpdate = function () { var params = swiper.params, el = swiper.el; var isMultiRow = params.grid && params.grid.rows > 1; if (wasMultiRow && !isMultiRow) { el.classList.remove("".concat(params.containerModifierClass, "grid"), "".concat(params.containerModifierClass, "grid-column")); numFullColumns = 1; swiper.emitContainerClasses(); } else if (!wasMultiRow && isMultiRow) { el.classList.add("".concat(params.containerModifierClass, "grid")); if (params.grid.fill === 'column') { el.classList.add("".concat(params.containerModifierClass, "grid-column")); } swiper.emitContainerClasses(); } wasMultiRow = isMultiRow; }; on('init', onInit); on('update', onUpdate); swiper.grid = { initSlides: initSlides, unsetSlides: unsetSlides, updateSlide: updateSlide, updateWrapperSize: updateWrapperSize, }; } //# sourceMappingURL=grid.js.map