UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

1,384 lines 106 kB
import "./esm/utils/dom.mjs"; import { deleteProps, extend, now, bindModuleMethods, getTranslate, nextTick } from "./esm/utils/utils.mjs"; import { getSupport } from "./esm/utils/get-support.mjs"; import { getDevice } from "./esm/utils/get-device.mjs"; import { getBrowser } from "./esm/utils/get-browser.mjs"; import { getWindow, getDocument } from "../ssr-window/ssr-window.esm.mjs"; import $ from "../dom7/dom7.esm.mjs"; function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _extends() { _extends = Object.assign || function(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var modular = { useParams: function useParams(instanceParams) { var instance = this; if (!instance.modules) return; Object.keys(instance.modules).forEach(function(moduleName) { var module = instance.modules[moduleName]; if (module.params) { extend(instanceParams, module.params); } }); }, useModules: function useModules(modulesParams) { if (modulesParams === void 0) { modulesParams = {}; } var instance = this; if (!instance.modules) return; Object.keys(instance.modules).forEach(function(moduleName) { var module = instance.modules[moduleName]; var moduleParams = modulesParams[moduleName] || {}; if (module.on && instance.on) { Object.keys(module.on).forEach(function(moduleEventName) { instance.on(moduleEventName, module.on[moduleEventName]); }); } if (module.create) { module.create.bind(instance)(moduleParams); } }); } }; var eventsEmitter = { on: function on(events2, handler, priority) { var self = this; if (typeof handler !== "function") return self; var method = priority ? "unshift" : "push"; events2.split(" ").forEach(function(event) { if (!self.eventsListeners[event]) self.eventsListeners[event] = []; self.eventsListeners[event][method](handler); }); return self; }, once: function once(events2, handler, priority) { var self = this; if (typeof handler !== "function") return self; function onceHandler() { self.off(events2, onceHandler); if (onceHandler.__emitterProxy) { delete onceHandler.__emitterProxy; } for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } handler.apply(self, args); } onceHandler.__emitterProxy = handler; return self.on(events2, onceHandler, priority); }, onAny: function onAny(handler, priority) { var self = this; if (typeof handler !== "function") return self; var method = priority ? "unshift" : "push"; if (self.eventsAnyListeners.indexOf(handler) < 0) { self.eventsAnyListeners[method](handler); } return self; }, offAny: function offAny(handler) { var self = this; if (!self.eventsAnyListeners) return self; var index = self.eventsAnyListeners.indexOf(handler); if (index >= 0) { self.eventsAnyListeners.splice(index, 1); } return self; }, off: function off(events2, handler) { var self = this; if (!self.eventsListeners) return self; events2.split(" ").forEach(function(event) { if (typeof handler === "undefined") { self.eventsListeners[event] = []; } else if (self.eventsListeners[event]) { self.eventsListeners[event].forEach(function(eventHandler, index) { if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { self.eventsListeners[event].splice(index, 1); } }); } }); return self; }, emit: function emit() { var self = this; if (!self.eventsListeners) return self; var events2; var data; var context; for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } if (typeof args[0] === "string" || Array.isArray(args[0])) { events2 = args[0]; data = args.slice(1, args.length); context = self; } else { events2 = args[0].events; data = args[0].data; context = args[0].context || self; } data.unshift(context); var eventsArray = Array.isArray(events2) ? events2 : events2.split(" "); eventsArray.forEach(function(event) { if (self.eventsListeners && self.eventsListeners[event]) { var handlers = []; self.eventsListeners[event].forEach(function(eventHandler) { handlers.push(eventHandler); }); handlers.forEach(function(eventHandler) { eventHandler.apply(context, data); }); } }); return self; } }; function updateSize() { var swiper = this; var width; var height; var $el = swiper.$el; if (typeof swiper.params.width !== "undefined" && swiper.params.width !== null) { width = swiper.params.width; } else { width = $el[0].clientWidth; } if (typeof swiper.params.height !== "undefined" && swiper.params.width !== null) { height = swiper.params.height; } else { height = $el[0].clientHeight; } if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { return; } width = width - parseInt($el.css("padding-left") || 0, 10) - parseInt($el.css("padding-right") || 0, 10); height = height - parseInt($el.css("padding-top") || 0, 10) - parseInt($el.css("padding-bottom") || 0, 10); if (Number.isNaN(width)) width = 0; if (Number.isNaN(height)) height = 0; extend(swiper, { width, height, size: swiper.isHorizontal() ? width : height }); } function updateSlides() { var swiper = this; var window = getWindow(); var params = swiper.params; var $wrapperEl = swiper.$wrapperEl, swiperSize = swiper.size, rtl = swiper.rtlTranslate, wrongRTL = swiper.wrongRTL; var isVirtual = swiper.virtual && params.virtual.enabled; var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; var slides = $wrapperEl.children("." + swiper.params.slideClass); var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; var snapGrid = []; var slidesGrid = []; var slidesSizesGrid = []; function slidesForMargin(slideEl, slideIndex) { if (!params.cssMode) return true; if (slideIndex === slides.length - 1) { return false; } return true; } var offsetBefore = params.slidesOffsetBefore; if (typeof offsetBefore === "function") { offsetBefore = params.slidesOffsetBefore.call(swiper); } var offsetAfter = params.slidesOffsetAfter; if (typeof offsetAfter === "function") { offsetAfter = params.slidesOffsetAfter.call(swiper); } var previousSnapGridLength = swiper.snapGrid.length; var previousSlidesGridLength = swiper.snapGrid.length; var spaceBetween = params.spaceBetween; var slidePosition = -offsetBefore; var prevSlideSize = 0; var index = 0; if (typeof swiperSize === "undefined") { return; } if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) { spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize; } swiper.virtualSize = -spaceBetween; if (rtl) slides.css({ marginLeft: "", marginTop: "" }); else slides.css({ marginRight: "", marginBottom: "" }); var slidesNumberEvenToRows; if (params.slidesPerColumn > 1) { if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { slidesNumberEvenToRows = slidesLength; } else { slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; } if (params.slidesPerView !== "auto" && params.slidesPerColumnFill === "row") { slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); } } var slideSize; var slidesPerColumn = params.slidesPerColumn; var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); for (var i = 0; i < slidesLength; i += 1) { slideSize = 0; var slide2 = slides.eq(i); if (params.slidesPerColumn > 1) { var newSlideOrderIndex = void 0; var column = void 0; var row = void 0; if (params.slidesPerColumnFill === "row" && params.slidesPerGroup > 1) { var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn)); var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex; var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup); row = Math.floor(slideIndexInGroup / columnsInGroup); column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup; newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn; slide2.css({ "-webkit-box-ordinal-group": newSlideOrderIndex, "-moz-box-ordinal-group": newSlideOrderIndex, "-ms-flex-order": newSlideOrderIndex, "-webkit-order": newSlideOrderIndex, order: newSlideOrderIndex }); } else if (params.slidesPerColumnFill === "column") { column = Math.floor(i / slidesPerColumn); row = i - column * slidesPerColumn; if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) { row += 1; if (row >= slidesPerColumn) { row = 0; column += 1; } } } else { row = Math.floor(i / slidesPerRow); column = i - row * slidesPerRow; } slide2.css("margin-" + (swiper.isHorizontal() ? "top" : "left"), row !== 0 && params.spaceBetween && params.spaceBetween + "px"); } if (slide2.css("display") === "none") continue; if (params.slidesPerView === "auto") { var slideStyles = window.getComputedStyle(slide2[0], null); var currentTransform = slide2[0].style.transform; var currentWebKitTransform = slide2[0].style.webkitTransform; if (currentTransform) { slide2[0].style.transform = "none"; } if (currentWebKitTransform) { slide2[0].style.webkitTransform = "none"; } if (params.roundLengths) { slideSize = swiper.isHorizontal() ? slide2.outerWidth(true) : slide2.outerHeight(true); } else { if (swiper.isHorizontal()) { var width = parseFloat(slideStyles.getPropertyValue("width") || 0); var paddingLeft = parseFloat(slideStyles.getPropertyValue("padding-left") || 0); var paddingRight = parseFloat(slideStyles.getPropertyValue("padding-right") || 0); var marginLeft = parseFloat(slideStyles.getPropertyValue("margin-left") || 0); var marginRight = parseFloat(slideStyles.getPropertyValue("margin-right") || 0); var boxSizing = slideStyles.getPropertyValue("box-sizing"); if (boxSizing && boxSizing === "border-box") { slideSize = width + marginLeft + marginRight; } else { slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; } } else { var height = parseFloat(slideStyles.getPropertyValue("height") || 0); var paddingTop = parseFloat(slideStyles.getPropertyValue("padding-top") || 0); var paddingBottom = parseFloat(slideStyles.getPropertyValue("padding-bottom") || 0); var marginTop = parseFloat(slideStyles.getPropertyValue("margin-top") || 0); var marginBottom = parseFloat(slideStyles.getPropertyValue("margin-bottom") || 0); var _boxSizing = slideStyles.getPropertyValue("box-sizing"); if (_boxSizing && _boxSizing === "border-box") { slideSize = height + marginTop + marginBottom; } else { slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; } } } if (currentTransform) { slide2[0].style.transform = currentTransform; } if (currentWebKitTransform) { slide2[0].style.webkitTransform = currentWebKitTransform; } if (params.roundLengths) slideSize = Math.floor(slideSize); } else { slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; if (params.roundLengths) slideSize = Math.floor(slideSize); if (slides[i]) { if (swiper.isHorizontal()) { slides[i].style.width = slideSize + "px"; } else { slides[i].style.height = slideSize + "px"; } } } if (slides[i]) { slides[i].swiperSlideSize = slideSize; } slidesSizesGrid.push(slideSize); if (params.centeredSlides) { slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; if (Math.abs(slidePosition) < 1 / 1e3) slidePosition = 0; if (params.roundLengths) slidePosition = Math.floor(slidePosition); if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); slidesGrid.push(slidePosition); } else { if (params.roundLengths) slidePosition = Math.floor(slidePosition); if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); slidesGrid.push(slidePosition); slidePosition = slidePosition + slideSize + spaceBetween; } swiper.virtualSize += slideSize + spaceBetween; prevSlideSize = slideSize; index += 1; } swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; var newSlidesGrid; if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) { $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + "px" }); } if (params.setWrapperSize) { if (swiper.isHorizontal()) $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + "px" }); else $wrapperEl.css({ height: swiper.virtualSize + params.spaceBetween + "px" }); } if (params.slidesPerColumn > 1) { swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; if (swiper.isHorizontal()) $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + "px" }); else $wrapperEl.css({ height: swiper.virtualSize + params.spaceBetween + "px" }); if (params.centeredSlides) { newSlidesGrid = []; for (var _i = 0; _i < snapGrid.length; _i += 1) { var slidesGridItem = snapGrid[_i]; if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); } snapGrid = newSlidesGrid; } } if (!params.centeredSlides) { newSlidesGrid = []; for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) { var _slidesGridItem = snapGrid[_i2]; if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem); if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) { newSlidesGrid.push(_slidesGridItem); } } snapGrid = newSlidesGrid; if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { snapGrid.push(swiper.virtualSize - swiperSize); } } if (snapGrid.length === 0) snapGrid = [0]; if (params.spaceBetween !== 0) { if (swiper.isHorizontal()) { if (rtl) slides.filter(slidesForMargin).css({ marginLeft: spaceBetween + "px" }); else slides.filter(slidesForMargin).css({ marginRight: spaceBetween + "px" }); } else slides.filter(slidesForMargin).css({ marginBottom: spaceBetween + "px" }); } if (params.centeredSlides && params.centeredSlidesBounds) { var allSlidesSize = 0; slidesSizesGrid.forEach(function(slideSizeValue) { allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); }); allSlidesSize -= params.spaceBetween; var maxSnap = allSlidesSize - swiperSize; snapGrid = snapGrid.map(function(snap) { if (snap < 0) return -offsetBefore; if (snap > maxSnap) return maxSnap + offsetAfter; return snap; }); } if (params.centerInsufficientSlides) { var _allSlidesSize = 0; slidesSizesGrid.forEach(function(slideSizeValue) { _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); }); _allSlidesSize -= params.spaceBetween; if (_allSlidesSize < swiperSize) { var allSlidesOffset = (swiperSize - _allSlidesSize) / 2; snapGrid.forEach(function(snap, snapIndex) { snapGrid[snapIndex] = snap - allSlidesOffset; }); slidesGrid.forEach(function(snap, snapIndex) { slidesGrid[snapIndex] = snap + allSlidesOffset; }); } } extend(swiper, { slides, snapGrid, slidesGrid, slidesSizesGrid }); if (slidesLength !== previousSlidesLength) { swiper.emit("slidesLengthChange"); } if (snapGrid.length !== previousSnapGridLength) { if (swiper.params.watchOverflow) swiper.checkOverflow(); swiper.emit("snapGridLengthChange"); } if (slidesGrid.length !== previousSlidesGridLength) { swiper.emit("slidesGridLengthChange"); } if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesOffset(); } } function updateAutoHeight(speed) { var swiper = this; var activeSlides = []; var newHeight = 0; var i; if (typeof speed === "number") { swiper.setTransition(speed); } else if (speed === true) { swiper.setTransition(swiper.params.speed); } if (swiper.params.slidesPerView !== "auto" && swiper.params.slidesPerView > 1) { if (swiper.params.centeredSlides) { swiper.visibleSlides.each(function(slide2) { activeSlides.push(slide2); }); } else { for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { var index = swiper.activeIndex + i; if (index > swiper.slides.length) break; activeSlides.push(swiper.slides.eq(index)[0]); } } } else { activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); } for (i = 0; i < activeSlides.length; i += 1) { if (typeof activeSlides[i] !== "undefined") { var height = activeSlides[i].offsetHeight; newHeight = height > newHeight ? height : newHeight; } } if (newHeight) swiper.$wrapperEl.css("height", newHeight + "px"); } function updateSlidesOffset() { var swiper = this; var slides = swiper.slides; for (var i = 0; i < slides.length; i += 1) { slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; } } function updateSlidesProgress(translate2) { if (translate2 === void 0) { translate2 = this && this.translate || 0; } var swiper = this; var params = swiper.params; var slides = swiper.slides, rtl = swiper.rtlTranslate; if (slides.length === 0) return; if (typeof slides[0].swiperSlideOffset === "undefined") swiper.updateSlidesOffset(); var offsetCenter = -translate2; if (rtl) offsetCenter = translate2; slides.removeClass(params.slideVisibleClass); swiper.visibleSlidesIndexes = []; swiper.visibleSlides = []; for (var i = 0; i < slides.length; i += 1) { var slide2 = slides[i]; var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide2.swiperSlideOffset) / (slide2.swiperSlideSize + params.spaceBetween); if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) { var slideBefore = -(offsetCenter - slide2.swiperSlideOffset); var slideAfter = slideBefore + swiper.slidesSizesGrid[i]; var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; if (isVisible) { swiper.visibleSlides.push(slide2); swiper.visibleSlidesIndexes.push(i); slides.eq(i).addClass(params.slideVisibleClass); } } slide2.progress = rtl ? -slideProgress : slideProgress; } swiper.visibleSlides = $(swiper.visibleSlides); } function updateProgress(translate2) { var swiper = this; if (typeof translate2 === "undefined") { var multiplier = swiper.rtlTranslate ? -1 : 1; translate2 = swiper && swiper.translate && swiper.translate * multiplier || 0; } var params = swiper.params; var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); var progress = swiper.progress, isBeginning = swiper.isBeginning, isEnd = swiper.isEnd; var wasBeginning = isBeginning; var wasEnd = isEnd; if (translatesDiff === 0) { progress = 0; isBeginning = true; isEnd = true; } else { progress = (translate2 - swiper.minTranslate()) / translatesDiff; isBeginning = progress <= 0; isEnd = progress >= 1; } extend(swiper, { progress, isBeginning, isEnd }); if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate2); if (isBeginning && !wasBeginning) { swiper.emit("reachBeginning toEdge"); } if (isEnd && !wasEnd) { swiper.emit("reachEnd toEdge"); } if (wasBeginning && !isBeginning || wasEnd && !isEnd) { swiper.emit("fromEdge"); } swiper.emit("progress", progress); } function updateSlidesClasses() { var swiper = this; var slides = swiper.slides, params = swiper.params, $wrapperEl = swiper.$wrapperEl, activeIndex = swiper.activeIndex, realIndex = swiper.realIndex; var isVirtual = swiper.virtual && params.virtual.enabled; slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass); var activeSlide; if (isVirtual) { activeSlide = swiper.$wrapperEl.find("." + params.slideClass + '[data-swiper-slide-index="' + activeIndex + '"]'); } else { activeSlide = slides.eq(activeIndex); } activeSlide.addClass(params.slideActiveClass); if (params.loop) { if (activeSlide.hasClass(params.slideDuplicateClass)) { $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + realIndex + '"]').addClass(params.slideDuplicateActiveClass); } else { $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + realIndex + '"]').addClass(params.slideDuplicateActiveClass); } } var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass); if (params.loop && nextSlide.length === 0) { nextSlide = slides.eq(0); nextSlide.addClass(params.slideNextClass); } var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass); if (params.loop && prevSlide.length === 0) { prevSlide = slides.eq(-1); prevSlide.addClass(params.slidePrevClass); } if (params.loop) { if (nextSlide.hasClass(params.slideDuplicateClass)) { $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + nextSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicateNextClass); } else { $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + nextSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicateNextClass); } if (prevSlide.hasClass(params.slideDuplicateClass)) { $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + prevSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicatePrevClass); } else { $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + prevSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicatePrevClass); } } swiper.emitSlidesClasses(); } function updateActiveIndex(newActiveIndex) { var swiper = this; var translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate; var slidesGrid = swiper.slidesGrid, snapGrid = swiper.snapGrid, params = swiper.params, previousIndex = swiper.activeIndex, previousRealIndex = swiper.realIndex, previousSnapIndex = swiper.snapIndex; var activeIndex = newActiveIndex; var snapIndex; if (typeof activeIndex === "undefined") { for (var i = 0; i < slidesGrid.length; i += 1) { if (typeof slidesGrid[i + 1] !== "undefined") { if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { activeIndex = i; } else if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1]) { activeIndex = i + 1; } } else if (translate2 >= slidesGrid[i]) { activeIndex = i; } } if (params.normalizeSlideIndex) { if (activeIndex < 0 || typeof activeIndex === "undefined") activeIndex = 0; } } if (snapGrid.indexOf(translate2) >= 0) { snapIndex = snapGrid.indexOf(translate2); } else { var skip = Math.min(params.slidesPerGroupSkip, activeIndex); snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); } if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; if (activeIndex === previousIndex) { if (snapIndex !== previousSnapIndex) { swiper.snapIndex = snapIndex; swiper.emit("snapIndexChange"); } return; } var realIndex = parseInt(swiper.slides.eq(activeIndex).attr("data-swiper-slide-index") || activeIndex, 10); extend(swiper, { snapIndex, realIndex, previousIndex, activeIndex }); swiper.emit("activeIndexChange"); swiper.emit("snapIndexChange"); if (previousRealIndex !== realIndex) { swiper.emit("realIndexChange"); } if (swiper.initialized || swiper.params.runCallbacksOnInit) { swiper.emit("slideChange"); } } function updateClickedSlide(e) { var swiper = this; var params = swiper.params; var slide2 = $(e.target).closest("." + params.slideClass)[0]; var slideFound = false; if (slide2) { for (var i = 0; i < swiper.slides.length; i += 1) { if (swiper.slides[i] === slide2) slideFound = true; } } if (slide2 && slideFound) { swiper.clickedSlide = slide2; if (swiper.virtual && swiper.params.virtual.enabled) { swiper.clickedIndex = parseInt($(slide2).attr("data-swiper-slide-index"), 10); } else { swiper.clickedIndex = $(slide2).index(); } } else { swiper.clickedSlide = void 0; swiper.clickedIndex = void 0; return; } if (params.slideToClickedSlide && swiper.clickedIndex !== void 0 && swiper.clickedIndex !== swiper.activeIndex) { swiper.slideToClickedSlide(); } } var update = { updateSize, updateSlides, updateAutoHeight, updateSlidesOffset, updateSlidesProgress, updateProgress, updateSlidesClasses, updateActiveIndex, updateClickedSlide }; function getSwiperTranslate(axis) { if (axis === void 0) { axis = this.isHorizontal() ? "x" : "y"; } var swiper = this; var params = swiper.params, rtl = swiper.rtlTranslate, translate2 = swiper.translate, $wrapperEl = swiper.$wrapperEl; if (params.virtualTranslate) { return rtl ? -translate2 : translate2; } if (params.cssMode) { return translate2; } var currentTranslate = getTranslate($wrapperEl[0], axis); if (rtl) currentTranslate = -currentTranslate; return currentTranslate || 0; } function setTranslate(translate2, byController) { var swiper = this; var rtl = swiper.rtlTranslate, params = swiper.params, $wrapperEl = swiper.$wrapperEl, wrapperEl = swiper.wrapperEl, progress = swiper.progress; var x = 0; var y = 0; var z = 0; if (swiper.isHorizontal()) { x = rtl ? -translate2 : translate2; } else { y = translate2; } if (params.roundLengths) { x = Math.floor(x); y = Math.floor(y); } if (params.cssMode) { wrapperEl[swiper.isHorizontal() ? "scrollLeft" : "scrollTop"] = swiper.isHorizontal() ? -x : -y; } else if (!params.virtualTranslate) { $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)"); } swiper.previousTranslate = swiper.translate; swiper.translate = swiper.isHorizontal() ? x : y; var newProgress; var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); if (translatesDiff === 0) { newProgress = 0; } else { newProgress = (translate2 - swiper.minTranslate()) / translatesDiff; } if (newProgress !== progress) { swiper.updateProgress(translate2); } swiper.emit("setTranslate", swiper.translate, byController); } function minTranslate() { return -this.snapGrid[0]; } function maxTranslate() { return -this.snapGrid[this.snapGrid.length - 1]; } function translateTo(translate2, speed, runCallbacks, translateBounds, internal) { if (translate2 === void 0) { translate2 = 0; } if (speed === void 0) { speed = this.params.speed; } if (runCallbacks === void 0) { runCallbacks = true; } if (translateBounds === void 0) { translateBounds = true; } var swiper = this; var params = swiper.params, wrapperEl = swiper.wrapperEl; if (swiper.animating && params.preventInteractionOnTransition) { return false; } var minTranslate2 = swiper.minTranslate(); var maxTranslate2 = swiper.maxTranslate(); var newTranslate; if (translateBounds && translate2 > minTranslate2) newTranslate = minTranslate2; else if (translateBounds && translate2 < maxTranslate2) newTranslate = maxTranslate2; else newTranslate = translate2; swiper.updateProgress(newTranslate); if (params.cssMode) { var isH = swiper.isHorizontal(); if (speed === 0) { wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate; } else { if (wrapperEl.scrollTo) { var _wrapperEl$scrollTo; wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? "left" : "top"] = -newTranslate, _wrapperEl$scrollTo.behavior = "smooth", _wrapperEl$scrollTo)); } else { wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate; } } return true; } if (speed === 0) { swiper.setTransition(0); swiper.setTranslate(newTranslate); if (runCallbacks) { swiper.emit("beforeTransitionStart", speed, internal); swiper.emit("transitionEnd"); } } else { swiper.setTransition(speed); swiper.setTranslate(newTranslate); if (runCallbacks) { swiper.emit("beforeTransitionStart", speed, internal); swiper.emit("transitionStart"); } if (!swiper.animating) { swiper.animating = true; if (!swiper.onTranslateToWrapperTransitionEnd) { swiper.onTranslateToWrapperTransitionEnd = function transitionEnd2(e) { if (!swiper || swiper.destroyed) return; if (e.target !== this) return; swiper.$wrapperEl[0].removeEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd); swiper.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper.onTranslateToWrapperTransitionEnd); swiper.onTranslateToWrapperTransitionEnd = null; delete swiper.onTranslateToWrapperTransitionEnd; if (runCallbacks) { swiper.emit("transitionEnd"); } }; } swiper.$wrapperEl[0].addEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd); swiper.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper.onTranslateToWrapperTransitionEnd); } } return true; } var translate = { getTranslate: getSwiperTranslate, setTranslate, minTranslate, maxTranslate, translateTo }; function setTransition(duration, byController) { var swiper = this; if (!swiper.params.cssMode) { swiper.$wrapperEl.transition(duration); } swiper.emit("setTransition", duration, byController); } function transitionStart(runCallbacks, direction) { if (runCallbacks === void 0) { runCallbacks = true; } var swiper = this; var activeIndex = swiper.activeIndex, params = swiper.params, previousIndex = swiper.previousIndex; if (params.cssMode) return; if (params.autoHeight) { swiper.updateAutoHeight(); } var dir = direction; if (!dir) { if (activeIndex > previousIndex) dir = "next"; else if (activeIndex < previousIndex) dir = "prev"; else dir = "reset"; } swiper.emit("transitionStart"); if (runCallbacks && activeIndex !== previousIndex) { if (dir === "reset") { swiper.emit("slideResetTransitionStart"); return; } swiper.emit("slideChangeTransitionStart"); if (dir === "next") { swiper.emit("slideNextTransitionStart"); } else { swiper.emit("slidePrevTransitionStart"); } } } function transitionEnd(runCallbacks, direction) { if (runCallbacks === void 0) { runCallbacks = true; } var swiper = this; var activeIndex = swiper.activeIndex, previousIndex = swiper.previousIndex, params = swiper.params; swiper.animating = false; if (params.cssMode) return; swiper.setTransition(0); var dir = direction; if (!dir) { if (activeIndex > previousIndex) dir = "next"; else if (activeIndex < previousIndex) dir = "prev"; else dir = "reset"; } swiper.emit("transitionEnd"); if (runCallbacks && activeIndex !== previousIndex) { if (dir === "reset") { swiper.emit("slideResetTransitionEnd"); return; } swiper.emit("slideChangeTransitionEnd"); if (dir === "next") { swiper.emit("slideNextTransitionEnd"); } else { swiper.emit("slidePrevTransitionEnd"); } } } var transition = { setTransition, transitionStart, transitionEnd }; function slideTo(index, speed, runCallbacks, internal) { if (index === void 0) { index = 0; } if (speed === void 0) { speed = this.params.speed; } if (runCallbacks === void 0) { runCallbacks = true; } var swiper = this; var slideIndex = index; if (slideIndex < 0) slideIndex = 0; var params = swiper.params, snapGrid = swiper.snapGrid, slidesGrid = swiper.slidesGrid, previousIndex = swiper.previousIndex, activeIndex = swiper.activeIndex, rtl = swiper.rtlTranslate, wrapperEl = swiper.wrapperEl; if (swiper.animating && params.preventInteractionOnTransition) { return false; } var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { swiper.emit("beforeSlideChangeStart"); } var translate2 = -snapGrid[snapIndex]; swiper.updateProgress(translate2); if (params.normalizeSlideIndex) { for (var i = 0; i < slidesGrid.length; i += 1) { if (-Math.floor(translate2 * 100) >= Math.floor(slidesGrid[i] * 100)) { slideIndex = i; } } } if (swiper.initialized && slideIndex !== activeIndex) { if (!swiper.allowSlideNext && translate2 < swiper.translate && translate2 < swiper.minTranslate()) { return false; } if (!swiper.allowSlidePrev && translate2 > swiper.translate && translate2 > swiper.maxTranslate()) { if ((activeIndex || 0) !== slideIndex) return false; } } var direction; if (slideIndex > activeIndex) direction = "next"; else if (slideIndex < activeIndex) direction = "prev"; else direction = "reset"; if (rtl && -translate2 === swiper.translate || !rtl && translate2 === swiper.translate) { swiper.updateActiveIndex(slideIndex); if (params.autoHeight) { swiper.updateAutoHeight(); } swiper.updateSlidesClasses(); if (params.effect !== "slide") { swiper.setTranslate(translate2); } if (direction !== "reset") { swiper.transitionStart(runCallbacks, direction); swiper.transitionEnd(runCallbacks, direction); } return false; } if (params.cssMode) { var isH = swiper.isHorizontal(); var t = -translate2; if (rtl) { t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t; } if (speed === 0) { wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t; } else { if (wrapperEl.scrollTo) { var _wrapperEl$scrollTo; wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? "left" : "top"] = t, _wrapperEl$scrollTo.behavior = "smooth", _wrapperEl$scrollTo)); } else { wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t; } } return true; } if (speed === 0) { swiper.setTransition(0); swiper.setTranslate(translate2); swiper.updateActiveIndex(slideIndex); swiper.updateSlidesClasses(); swiper.emit("beforeTransitionStart", speed, internal); swiper.transitionStart(runCallbacks, direction); swiper.transitionEnd(runCallbacks, direction); } else { swiper.setTransition(speed); swiper.setTranslate(translate2); swiper.updateActiveIndex(slideIndex); swiper.updateSlidesClasses(); swiper.emit("beforeTransitionStart", speed, internal); swiper.transitionStart(runCallbacks, direction); if (!swiper.animating) { swiper.animating = true; if (!swiper.onSlideToWrapperTransitionEnd) { swiper.onSlideToWrapperTransitionEnd = function transitionEnd2(e) { if (!swiper || swiper.destroyed) return; if (e.target !== this) return; swiper.$wrapperEl[0].removeEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd); swiper.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper.onSlideToWrapperTransitionEnd); swiper.onSlideToWrapperTransitionEnd = null; delete swiper.onSlideToWrapperTransitionEnd; swiper.transitionEnd(runCallbacks, direction); }; } swiper.$wrapperEl[0].addEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd); swiper.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper.onSlideToWrapperTransitionEnd); } } return true; } function slideToLoop(index, speed, runCallbacks, internal) { if (index === void 0) { index = 0; } if (speed === void 0) { speed = this.params.speed; } if (runCallbacks === void 0) { runCallbacks = true; } var swiper = this; var newIndex = index; if (swiper.params.loop) { newIndex += swiper.loopedSlides; } return swiper.slideTo(newIndex, speed, runCallbacks, internal); } function slideNext(speed, runCallbacks, internal) { if (speed === void 0) { speed = this.params.speed; } if (runCallbacks === void 0) { runCallbacks = true; } var swiper = this; var params = swiper.params, animating = swiper.animating; var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup; if (params.loop) { if (animating && params.loopPreventsSlide) return false; swiper.loopFix(); swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; } return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); } function slidePrev(speed, runCallbacks, internal) { if (speed === void 0) { speed = this.params.speed; } if (runCallbacks === void 0) { runCallbacks = true; } var swiper = this; var params = swiper.params, animating = swiper.animating, snapGrid = swiper.snapGrid, slidesGrid = swiper.slidesGrid, rtlTranslate = swiper.rtlTranslate; if (params.loop) { if (animating && params.loopPreventsSlide) return false; swiper.loopFix(); swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; } var translate2 = rtlTranslate ? swiper.translate : -swiper.translate; function normalize(val) { if (val < 0) return -Math.floor(Math.abs(val)); return Math.floor(val); } var normalizedTranslate = normalize(translate2); var normalizedSnapGrid = snapGrid.map(function(val) { return normalize(val); }); snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; if (typeof prevSnap === "undefined" && params.cssMode) { snapGrid.forEach(function(snap) { if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap; }); } var prevIndex; if (typeof prevSnap !== "undefined") { prevIndex = slidesGrid.indexOf(prevSnap); if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; } return swiper.slideTo(prevIndex, speed, runCallbacks, internal); } function slideReset(speed, runCallbacks, internal) { if (speed === void 0) { speed = this.params.speed; } if (runCallbacks === void 0) { runCallbacks = true; } var swiper = this; return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); } function slideToClosest(speed, runCallbacks, internal, threshold) { if (speed === void 0) { speed = this.params.speed; } if (runCallbacks === void 0) { runCallbacks = true; } if (threshold === void 0) { threshold = 0.5; } var swiper = this; var index = swiper.activeIndex; var skip = Math.min(swiper.params.slidesPerGroupSkip, index); var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); var translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate; if (translate2 >= swiper.snapGrid[snapIndex]) { var currentSnap = swiper.snapGrid[snapIndex]; var nextSnap = swiper.snapGrid[snapIndex + 1]; if (translate2 - currentSnap > (nextSnap - currentSnap) * threshold) { index += swiper.params.slidesPerGroup; } } else { var prevSnap = swiper.snapGrid[snapIndex - 1]; var _currentSnap = swiper.snapGrid[snapIndex]; if (translate2 - prevSnap <= (_currentSnap - prevSnap) * threshold) { index -= swiper.params.slidesPerGroup; } } index = Math.max(index, 0); index = Math.min(index, swiper.slidesGrid.length - 1); return swiper.slideTo(index, speed, runCallbacks, internal); } function slideToClickedSlide() { var swiper = this; var params = swiper.params, $wrapperEl = swiper.$wrapperEl; var slidesPerView = params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : params.slidesPerView; var slideToIndex = swiper.clickedIndex; var realIndex; if (params.loop) { if (swiper.animating) return; realIndex = parseInt($(swiper.clickedSlide).attr("data-swiper-slide-index"), 10); if (params.centeredSlides) { if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { swiper.loopFix(); slideToIndex = $wrapperEl.children("." + params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + params.slideDuplicateClass + ")").eq(0).index(); nextTick(function() { swiper.slideTo(slideToIndex); }); } else { swiper.slideTo(slideToIndex); } } else if (slideToIndex > swiper.slides.length - slidesPerView) { swiper.loopFix(); slideToIndex = $wrapperEl.children("." + params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + params.slideDuplicateClass + ")").eq(0).index(); nextTick(function() { swiper.slideTo(slideToIndex); }); } else { swiper.slideTo(slideToIndex); } } else { swiper.slideTo(slideToIndex); } } var slide = { slideTo, slideToLoop, slideNext, slidePrev, slideReset, slideToClosest, slideToClickedSlide }; function loopCreate() { var swiper = this; var document = getDocument(); var params = swiper.params, $wrapperEl = swiper.$wrapperEl; $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove(); var slides = $wrapperEl.children("." + params.slideClass); if (params.loopFillGroupWithBlank) { var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; if (blankSlidesNum !== params.slidesPerGroup) { for (var i = 0; i < blankSlidesNum; i += 1) { var blankNode = $(document.createElement("div")).addClass(params.slideClass + " " + params.slideBlankClass); $wrapperEl.append(blankNode); } slides = $wrapperEl.children("." + params.slideClass); } } if (params.slidesPerView === "auto" && !params.loopedSlides) params.loopedSlides = slides.length; swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); swiper.loopedSlides += params.loopAdditionalSlides; if (swiper.loopedSlides > slides.length) { swiper.loopedSlides = slides.length; } var prependSlides = []; var appendSlides = []; slides.each(function(el, index) { var slide2 = $(el); if (index < swiper.loopedSlides) { appendSlides.push(el); } if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); } slide2.attr("data-swiper-slide-index", index); }); for (var _i = 0; _i < appendSlides.length; _i += 1) { $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass)); } for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) { $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass)); } } function loopFix() { var swiper = this; swiper.emit("beforeLoopFix"); var activeIndex = swiper.activeIndex, slides = swiper.slides, loopedSlides = swiper.loopedSlides, allowSlidePrev = swiper.allowSlidePrev, allowSlideNext = swiper.allowSlideNext, snapGrid = swiper.snapGrid, rtl = swiper.rtlTranslate; var newIndex; swiper.allowSlidePrev = true; swiper.allowSlideNext = true; var snapTranslate = -snapGrid[activeIndex]; var diff = snapTranslate - swiper.getTranslate(); if (activeIndex < loopedSlides) { newIndex = slides.length - loopedSlides * 3 + activeIndex; newIndex += loopedSlides; var slideChanged = swiper.slideTo(newIndex, 0, false, true); if (slideChanged && diff !== 0) { swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); } } else if (activeIndex >= slides.length - loopedSlides) { newIndex = -slides.length + activeIndex + loopedSlides; newIndex += loopedSlides; var _slideChanged = swiper.slideTo(newIndex, 0, false, true); if (_slideChanged && diff !== 0) { swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); } } swiper.allowSlidePrev = allowSlidePrev; swiper.allowSlideNext = allowSlideNext; swiper.emit("loopFix"); } function loopDestroy() { var swiper = this; var $wrapperEl = swiper.$wrapperEl, params = swiper.params, slides = swiper.slides; $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove(); slides.removeAttr("data-swiper-slide-index"); } var loop = { loopCreate, loopFix, loopDestroy }; function setGrabCursor(moving) { var swiper = this; if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; var el = swiper.el; el.style.cursor = "move"; el.style.cursor = moving ? "-webkit-grabbing" : "-webkit-grab"; el.style.cursor = moving ? "-moz-grabbin" : "-moz-grab"; el.style.cursor = moving ? "grabbing" : "grab"; } function unsetGrabCursor() { var swiper = this; if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { return; } swiper.el.style.cursor = ""; } var grabCursor = { setGrabCursor, unsetGrabCursor }; function appendSlide(slides) { var swiper = this; var $wrapperEl = swiper.$wrapperEl, params = swiper.params; if (params.loop) { swiper.loopDestroy(); } if (typeof slides === "object" && "length" in slides) { for (var i = 0; i < slides.length; i += 1) { if (slides[i]) $wrapperEl.append(slides[i]); } } e