类似草莓视频的软件

/** * Swiper 4.4.2 * Most modern mobile touch slider and framework with hardware accelerated transitions * http://www.idangero.us/swiper/ * * Copyright 2014-2018 Vladimir Kharlampidi * * Released under the MIT License * * Released on: November 1, 2018 */(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.Swiper = factory()); }(this, (function () { 'use strict'; /** * SSR Window 1.0.1 * Better handling for window object in SSR environment * https://github.com/nolimits4web/ssr-window * * Copyright 2018, Vladimir Kharlampidi * * Licensed under MIT * * Released on: July 18, 2018 */ var doc = (typeof document === 'undefined') ? { body: {}, addEventListener: function addEventListener() {}, removeEventListener: function removeEventListener() {}, activeElement: { blur: function blur() {}, nodeName: '', }, querySelector: function querySelector() { return null; }, querySelectorAll: function querySelectorAll() { return []; }, getElementById: function getElementById() { return null; }, createEvent: function createEvent() { return { initEvent: function initEvent() {}, }; }, createElement: function createElement() { return { children: [], childNodes: [], style: {}, setAttribute: function setAttribute() {}, getElementsByTagName: function getElementsByTagName() { return []; }, }; }, location: { hash: '' }, } : document; // eslint-disable-line var win = (typeof window === 'undefined') ? { document: doc, navigator: { userAgent: '', }, location: {}, history: {}, CustomEvent: function CustomEvent() { return this; }, addEventListener: function addEventListener() {}, removeEventListener: function removeEventListener() {}, getComputedStyle: function getComputedStyle() { return { getPropertyValue: function getPropertyValue() { return ''; }, }; }, Image: function Image() {}, Date: function Date() {}, screen: {}, setTimeout: function setTimeout() {}, clearTimeout: function clearTimeout() {}, } : window; // eslint-disable-line /** * Dom7 2.1.2 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API * http://framework7.io/docs/dom.html * * Copyright 2018, Vladimir Kharlampidi * The iDangero.us * http://www.idangero.us/ * * Licensed under MIT * * Released on: September 13, 2018 */ var Dom7 = function Dom7(arr) { var self = this; // Create array-like object for (var i = 0; i = 0 && html.indexOf('>') >= 0) { var toCreate = 'div'; if (html.indexOf('

  • :~]/)) { // Pure ID selector els = [doc.getElementById(selector.trim().split('#')[1])]; } else { // Other selectors els = (context || doc).querySelectorAll(selector.trim()); } for (i = 0; i 0 && selector[0].nodeType) { // Array of elements or instance of Dom for (i = 0; i = 0; k -= 1) { var handler = handlers[k]; if (listener && handler.listener === listener) { el.removeEventListener(event, handler.proxyListener, capture); handlers.splice(k, 1); } else if (!listener) { el.removeEventListener(event, handler.proxyListener, capture); handlers.splice(k, 1); } } } } } return this; } function trigger() { var args = [], len = arguments.length; while ( len-- ) args[ len ] = arguments[ len ]; var events = args[0].split(' '); var eventData = args[1]; for (var i = 0; i 0; }); el.dispatchEvent(evt); el.dom7EventData = []; delete el.dom7EventData; } } return this; } function transitionEnd(callback) { var events = ['webkitTransitionEnd', 'transitionend']; var dom = this; var i; function fireCallBack(e) { /* jshint validthis:true */ if (e.target !== this) { return; } callback.call(this, e); for (i = 0; i 0) { if (includeMargins) { // eslint-disable-next-line var styles = this.styles(); return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); } return this[0].offsetWidth; } return null; } function outerHeight(includeMargins) { if (this.length > 0) { if (includeMargins) { // eslint-disable-next-line var styles = this.styles(); return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); } return this[0].offsetHeight; } return null; } function offset() { if (this.length > 0) { var el = this[0]; var box = el.getBoundingClientRect(); var body = doc.body; var clientTop = el.clientTop || body.clientTop || 0; var clientLeft = el.clientLeft || body.clientLeft || 0; var scrollTop = el === win ? win.scrollY : el.scrollTop; var scrollLeft = el === win ? win.scrollX : el.scrollLeft; return { top: (box.top + scrollTop) - clientTop, left: (box.left + scrollLeft) - clientLeft, }; } return null; } function styles() { if (this[0]) { return win.getComputedStyle(this[0], null); } return {}; } function css(props, value) { var i; if (arguments.length === 1) { if (typeof props === 'string') { if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); } } else { for (i = 0; i length - 1) { return new Dom7([]); } if (index = 0; j -= 1) { this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); } } else if (newChild instanceof Dom7) { for (j = 0; j 0) { if (selector) { if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { return new Dom7([this[0].nextElementSibling]); } return new Dom7([]); } if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); } return new Dom7([]); } return new Dom7([]); } function nextAll(selector) { var nextEls = []; var el = this[0]; if (!el) { return new Dom7([]); } while (el.nextElementSibling) { var next = el.nextElementSibling; // eslint-disable-line if (selector) { if ($(next).is(selector)) { nextEls.push(next); } } else { nextEls.push(next); } el = next; } return new Dom7(nextEls); } function prev(selector) { if (this.length > 0) { var el = this[0]; if (selector) { if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { return new Dom7([el.previousElementSibling]); } return new Dom7([]); } if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); } return new Dom7([]); } return new Dom7([]); } function prevalsl(selector) { var prevEls = []; var el = this[0]; if (!el) { return new Dom7([]); } while (el.previousElementSibling) { var prev = el.previousElementSibling; // eslint-disable-line if (selector) { if ($(prev).is(selector)) { prevEls.push(prev); } } else { prevEls.push(prev); } el = prev; } return new Dom7(prevEls); } function parent(selector) { var parents = []; // eslint-disable-line for (var i = 0; i 6) { curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', '); } // Some old versions of Webkit choke when 'none' is passed; pass // empty string instead in this case transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); } else { transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); matrix = transformMatrix.toString().split(','); } if (axis === 'x') { // Latest Chrome and webkits Fix if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; } // Crazy IE10 Matrix else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); } // Normal Browsers else { curTransform = parseFloat(matrix[4]); } } if (axis === 'y') { // Latest Chrome and webkits Fix if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; } // Crazy IE10 Matrix else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); } // Normal Browsers else { curTransform = parseFloat(matrix[5]); } } return curTransform || 0; }, parseUrlQuery: function parseUrlQuery(url) { var query = {}; var urlToParse = url || win.location.xhref; var i; var params; var param; var length; if (typeof urlToParse === 'string' && urlToParse.length) { urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; }); length = params.length; for (i = 0; i 0 ) params[ len ] = arguments[ len + 1 ]; var Class = this; if (!Class.prototype.modules) { Class.prototype.modules = {}; } var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now()))); Class.prototype.modules[name] = module; // Prototype if (module.proto) { Object.keys(module.proto).forEach(function (key) { Class.prototype[key] = module.proto[key]; }); } // Class if (module.static) { Object.keys(module.static).forEach(function (key) { Class[key] = module.static[key]; }); } // Callback if (module.install) { module.install.apply(Class, params); } return Class; }; SwiperClass.use = function use (module) { var params = [], len = arguments.length - 1; while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; var Class = this; if (Array.isArray(module)) { module.forEach(function (m) { return Class.installModule(m); }); return Class; } return Class.installModule.apply(Class, [ module ].concat( params )); }; Object.defineProperties( SwiperClass, staticAccessors ); function updateSize () { var swiper = this; var width; var height; var $el = swiper.$el; if (typeof swiper.params.width !== 'undefined') { width = swiper.params.width; } else { width = $el[0].clientWidth; } if (typeof swiper.params.height !== 'undefined') { height = swiper.params.height; } else { height = $el[0].clientHeight; } if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { return; } // Subtract paddings width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); Utils.extend(swiper, { width: width, height: height, size: swiper.isHorizontal() ? width : height, }); } function updateSlides () { var swiper = this; var params = swiper.params; var $wrapperEl = swiper.$wrapperEl; var swiperSize = swiper.size; var rtl = swiper.rtlTranslate; var 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 = []; 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; // reset margins 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); } } // Calc slides var slideSize; var slidesPerColumn = params.slidesPerColumn; var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; var numFullColumns = slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength); for (var i = 0; i 1) { // Set slides order var newSlideOrderIndex = (void 0); var column = (void 0); var row = (void 0); 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; } } newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); slide .css({ '-webkit-box-ordinal-group': newSlideOrderIndex, '-moz-box-ordinal-group': newSlideOrderIndex, '-ms-flex-order': newSlideOrderIndex, '-webkit-order': newSlideOrderIndex, order: newSlideOrderIndex, }); } else { row = Math.floor(i / slidesPerRow); column = i - (row * slidesPerRow); } slide .css( ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')), (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px")) ) .attr('data-swiper-column', column) .attr('data-swiper-row', row); } if (slide.css('display') === 'none') { continue; } // eslint-disable-line if (params.slidesPerView === 'auto') { var slideStyles = win.getComputedStyle(slide[0], null); var currentTransform = slide[0].style.transform; var currentWebKitTransform = slide[0].style.webkitTransform; if (currentTransform) { slide[0].style.transform = 'none'; } if (currentWebKitTransform) { slide[0].style.webkitTransform = 'none'; } if (params.roundLengths) { slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); } else { // eslint-disable-next-line if (swiper.isHorizontal()) { slideSize = parseFloat(slideStyles.getPropertyValue('width')) + parseFloat(slideStyles.getPropertyValue('margin-left')) + parseFloat(slideStyles.getPropertyValue('margin-right')); } else { slideSize = parseFloat(slideStyles.getPropertyValue('height')) + parseFloat(slideStyles.getPropertyValue('margin-top')) + parseFloat(slideStyles.getPropertyValue('margin-bottom')); } } if (currentTransform) { slide[0].style.transform = currentTransform; } if (currentWebKitTransform) { slide[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) { 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$1 = 0; i$1 1) { snapGrid.push(swiper.virtualSize - swiperSize); } } if (snapGrid.length === 0) { snapGrid = [0]; } if (params.spaceBetween !== 0) { if (swiper.isHorizontal()) { if (rtl) { slides.css({ marginLeft: (spaceBetween + "px") }); } else { slides.css({ marginRight: (spaceBetween + "px") }); } } else { slides.css({ marginBottom: (spaceBetween + "px") }); } } if (params.centerInsufficientSlides) { var allSlidesSize = 0; slidesSizesGrid.forEach(function (slideSizevalsue) { allSlidesSize += slideSizevalsue + (params.spaceBetween ? params.spaceBetween : 0); }); allSlidesSize -= params.spaceBetween; if (allSlidesSize 1) { for (i = 0; i swiper.slides.length) { break; } activeSlides.push(swiper.slides.eq(index)[0]); } } else { activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); } // Find new height from highest slide in view for (i = 0; i newHeight ? height : newHeight; } } // Update Height if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); } } function updateSlidesOffset () { var swiper = this; var slides = swiper.slides; for (var i = 0; i = 0 && slideBefore 0 && slideAfter = swiper.size); if (isVisible) { swiper.visibleSlides.push(slide); swiper.visibleSlidesIndexes.push(i); slides.eq(i).addClass(params.slideVisibleClass); } } slide.progress = rtl ? -slideProgress : slideProgress; } swiper.visibleSlides = $(swiper.visibleSlides); } function updateProgress (translate) { if ( translate === void 0 ) translate = (this && this.translate) || 0; var swiper = this; var params = swiper.params; var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); var progress = swiper.progress; var isBeginning = swiper.isBeginning; var isEnd = swiper.isEnd; var wasBeginning = isBeginning; var wasEnd = isEnd; if (translatesDiff === 0) { progress = 0; isBeginning = true; isEnd = true; } else { progress = (translate - swiper.minTranslate()) / (translatesDiff); isBeginning = progress = 1; } Utils.extend(swiper, { progress: progress, isBeginning: isBeginning, isEnd: isEnd, }); if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); } 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; var params = swiper.params; var $wrapperEl = swiper.$wrapperEl; var activeIndex = swiper.activeIndex; var 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); } // Active classes activeSlide.addClass(params.slideActiveClass); if (params.loop) { // Duplicate to all looped slides 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); } } // Next Slide 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); } // Prev Slide var prevSlide = activeSlide.prevalsl(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass); if (params.loop && prevSlide.length === 0) { prevSlide = slides.eq(-1); prevSlide.addClass(params.slidePrevClass); } if (params.loop) { // Duplicate to all looped slides 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); } } } function updateActiveIndex (newActiveIndex) { var swiper = this; var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; var slidesGrid = swiper.slidesGrid; var snapGrid = swiper.snapGrid; var params = swiper.params; var previousIndex = swiper.activeIndex; var previousRealIndex = swiper.realIndex; var previousSnapIndex = swiper.snapIndex; var activeIndex = newActiveIndex; var snapIndex; if (typeof activeIndex === 'undefined') { for (var i = 0; i = slidesGrid[i] && translate = slidesGrid[i] && translate = slidesGrid[i]) { activeIndex = i; } } // Normalize slideIndex if (params.normalizeSlideIndex) { if (activeIndex = 0) { snapIndex = snapGrid.indexOf(translate); } else { snapIndex = Math.floor(activeIndex / params.slidesPerGroup); } if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } if (activeIndex === previousIndex) { if (snapIndex !== previousSnapIndex) { swiper.snapIndex = snapIndex; swiper.emit('snapIndexChange'); } return; } // Get real index var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); Utils.extend(swiper, { snapIndex: snapIndex, realIndex: realIndex, previousIndex: previousIndex, activeIndex: activeIndex, }); swiper.emit('activeIndexChange'); swiper.emit('snapIndexChange'); if (previousRealIndex !== realIndex) { swiper.emit('realIndexChange'); } swiper.emit('slideChange'); } function updateClickedSlide (e) { var swiper = this; var params = swiper.params; var slide = $(e.target).closest(("." + (params.slideClass)))[0]; var slideFound = false; if (slide) { for (var i = 0; i previousIndex) { dir = 'next'; } else if (activeIndex previousIndex) { dir = 'next'; } else if (activeIndex = snapGrid.length) { snapIndex = snapGrid.length - 1; } if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { swiper.emit('beforeSlideChangeStart'); } var translate = -snapGrid[snapIndex]; // Update progress swiper.updateProgress(translate); // Normalize slideIndex if (params.normalizeSlideIndex) { for (var i = 0; i = Math.floor(slidesGrid[i] * 100)) { slideIndex = i; } } } // Directions locks if (swiper.initialized && slideIndex !== activeIndex) { if (!swiper.allowSlideNext && translate swiper.translate && translate > swiper.maxTranslate()) { if ((activeIndex || 0) !== slideIndex) { return false; } } } var direction; if (slideIndex > activeIndex) { direction = 'next'; } else if (slideIndex (nextSnap - currentSnap) / 2) { index = swiper.params.slidesPerGroup; } } return swiper.slideTo(index, speed, runCallbacks, internal); } function slideToClickedSlide () { var swiper = this; var params = swiper.params; var $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.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) ) { swiper.loopFix(); slideToIndex = $wrapperEl .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) .eq(0) .index(); Utils.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(); Utils.nextTick(function () { swiper.slideTo(slideToIndex); }); } else { swiper.slideTo(slideToIndex); } } else { swiper.slideTo(slideToIndex); } } var slide = { slideTo: slideTo, slideToLoop: slideToLoop, slideNext: slideNext, slidePrev: slidePrev, slideReset: slideReset, slideToClosest: slideToClosest, slideToClickedSlide: slideToClickedSlide, }; function loopCreate () { var swiper = this; var params = swiper.params; var $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides $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 slides.length) { swiper.loopedSlides = slides.length; } var prependSlides = []; var appendSlides = []; slides.each(function (index, el) { var slide = $(el); if (index = slides.length - swiper.loopedSlides) { prependSlides.push(el); } slide.attr('data-swiper-slide-index', index); }); for (var i$1 = 0; i$1 = 0; i$2 -= 1) { $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass)); } } function loopFix () { var swiper = this; var params = swiper.params; var activeIndex = swiper.activeIndex; var slides = swiper.slides; var loopedSlides = swiper.loopedSlides; var allowSlidePrev = swiper.allowSlidePrev; var allowSlideNext = swiper.allowSlideNext; var snapGrid = swiper.snapGrid; var rtl = swiper.rtlTranslate; var newIndex; swiper.allowSlidePrev = true; swiper.allowSlideNext = true; var snapTranslate = -snapGrid[activeIndex]; var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding if (activeIndex = loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) { // Fix For Positive Oversliding newIndex = -slides.length + activeIndex + loopedSlides; newIndex += loopedSlides; var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true); if (slideChanged$1 && diff !== 0) { swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); } } swiper.allowSlidePrev = allowSlidePrev; swiper.allowSlideNext = allowSlideNext; } function loopDestroy () { var swiper = this; var $wrapperEl = swiper.$wrapperEl; var params = swiper.params; var slides = swiper.slides; $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove(); slides.removeAttr('data-swiper-slide-index'); } var loop = { loopCreate: loopCreate, loopFix: loopFix, loopDestroy: loopDestroy, }; function setGrabCursor (moving) { var swiper = this; if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { 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 (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; } swiper.el.style.cursor = ''; } var grabCursor = { setGrabCursor: setGrabCursor, unsetGrabCursor: unsetGrabCursor, }; function appendSlide (slides) { var swiper = this; var $wrapperEl = swiper.$wrapperEl; var params = swiper.params; if (params.loop) { swiper.loopDestroy(); } if (typeof slides === 'object' && 'length' in slides) { for (var i = 0; i = baseLength) { swiper.appendSlide(slides); return; } var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; var slidesBuffer = []; for (var i = baseLength - 1; i >= index; i -= 1) { var currentSlide = swiper.slides.eq(i); currentSlide.remove(); slidesBuffer.unshift(currentSlide); } if (typeof slides === 'object' && 'length' in slides) { for (var i$1 = 0; i$1 index ? activeIndexBuffer + slides.length : activeIndexBuffer; } else { $wrapperEl.append(slides); } for (var i$2 = 0; i$2 = 0; } if (ipads || iphone || ipod) { device.os = 'ios'; device.ios = true; } // iOS if (iphone && !ipod) { device.osVersion = iphone[2].replace(/_/g, '.'); device.iphone = true; } if (ipads) { device.osVersion = ipads[2].replace(/_/g, '.'); device.ipads = true; } if (ipod) { device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; device.iphone = true; } // iOS 8+ changed UA if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { if (device.osVersion.split('.')[0] === '10') { device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; } } // Desktop device.desktop = !(device.os || device.android || device.webView); // Webview device.webView = (iphone || ipads || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i); // Minimal UI if (device.os && device.os === 'ios') { var osVersionArr = device.osVersion.split('.'); var metaViewport = doc.querySelector('meta[name="viewport"]'); device.minimalUi = !device.webView && (ipod || iphone) && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0; } // Pixel Ratio device.pixelRatio = win.devicePixelRatio || 1; // Export object return device; }()); function onTouchStart (event) { var swiper = this; var data = swiper.touchEventsData; var params = swiper.params; var touches = swiper.touches; if (swiper.animating && params.preventInteractionOnTransition) { return; } var e = event; if (e.originalEvent) { e = e.originalEvent; } data.isTouchEvent = e.type === 'touchstart'; if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; } if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; } if (data.isTouched && data.isMoved) { return; } if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) { swiper.allowClick = true; return; } if (params.swipeHandler) { if (!$(e).closest(params.swipeHandler)[0]) { return; } } touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; var startX = touches.currentX; var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; if ( edgeSwipeDetection && ((startX = win.screen.width - edgeSwipeThreshold)) ) { return; } Utils.extend(data, { isTouched: true, isMoved: false, allowTouchCallbacks: true, isScrolling: undefined, startMoving: undefined, }); touches.startX = startX; touches.startY = startY; data.touchStartTime = Utils.now(); swiper.allowClick = true; swiper.updateSize(); swiper.swipeDirection = undefined; if (params.threshold > 0) { data.allowThresholdMove = false; } if (e.type !== 'touchstart') { var preventDefault = true; if ($(e.target).is(data.formElements)) { preventDefault = false; } if ( doc.activeElement && $(doc.activeElement).is(data.formElements) && doc.activeElement !== e.target ) { doc.activeElement.blur(); } var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; if (params.touchStartForcePreventDefault || shouldPreventDefault) { e.preventDefault(); } } swiper.emit('touchStart', e); } function onTouchMove (event) { var swiper = this; var data = swiper.touchEventsData; var params = swiper.params; var touches = swiper.touches; var rtl = swiper.rtlTranslate; var e = event; if (e.originalEvent) { e = e.originalEvent; } if (!data.isTouched) { if (data.startMoving && data.isScrolling) { swiper.emit('touchMoveOpposite', e); } return; } if (data.isTouchEvent && e.type === 'mousemove') { return; } var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; if (e.preventedByNestedSwiper) { touches.startX = pageX; touches.startY = pageY; return; } if (!swiper.allowTouchMove) { // isMoved = true; swiper.allowClick = false; if (data.isTouched) { Utils.extend(touches, { startX: pageX, startY: pageY, currentX: pageX, currentY: pageY, }); data.touchStartTime = Utils.now(); } return; } if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { if (swiper.isVertical()) { // Vertical if ( (pageY touches.startY && swiper.translate >= swiper.minTranslate()) ) { data.isTouched = false; data.isMoved = false; return; } } else if ( (pageX touches.startX && swiper.translate >= swiper.minTranslate()) ) { return; } } if (data.isTouchEvent && doc.activeElement) { if (e.target === doc.activeElement && $(e.target).is(data.formElements)) { data.isMoved = true; swiper.allowClick = false; return; } } if (data.allowTouchCallbacks) { swiper.emit('touchMove', e); } if (e.targetTouches && e.targetTouches.length > 1) { return; } touches.currentX = pageX; touches.currentY = pageY; var diffX = touches.currentX - touches.startX; var diffY = touches.currentY - touches.startY; if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) = 25) { touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); } } } if (data.isScrolling) { swiper.emit('touchMoveOpposite', e); } if (typeof data.startMoving === 'undefined') { if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { data.startMoving = true; } } if (data.isScrolling) { data.isTouched = false; return; } if (!data.startMoving) { return; } swiper.allowClick = false; e.preventDefault(); if (params.touchMoveStopPropagation && !params.nested) { e.stopPropagation(); } if (!data.isMoved) { if (params.loop) { swiper.loopFix(); } data.startTranslate = swiper.getTranslate(); swiper.setTransition(0); if (swiper.animating) { swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); } data.allowMomentumBounce = false; // Grab Cursor if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { swiper.setGrabCursor(true); } swiper.emit('sliderFirstMove', e); } swiper.emit('sliderMove', e); data.isMoved = true; var diff = swiper.isHorizontal() ? diffX : diffY; touches.diff = diff; diff *= params.touchRatio; if (rtl) { diff = -diff; } swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; data.currentTranslate = diff + data.startTranslate; var disableParentSwiper = true; var resistanceRatio = params.resistanceRatio; if (params.touchReleaseOnEdges) { resistanceRatio = 0; } if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { disableParentSwiper = false; if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); } } else if (diff data.startTranslate) { data.currentTranslate = data.startTranslate; } // Threshold if (params.threshold > 0) { if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { if (!data.allowThresholdMove) { data.allowThresholdMove = true; touches.startX = touches.currentX; touches.startY = touches.currentY; data.currentTranslate = data.startTranslate; touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; return; } } else { data.currentTranslate = data.startTranslate; return; } } if (!params.followFinger) { return; } // Update active index in free mode if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } if (params.freeMode) { // Velocity if (data.velocities.length === 0) { data.velocities.push({ position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], time: data.touchStartTime, }); } data.velocities.push({ position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], time: Utils.now(), }); } // Update progress swiper.updateProgress(data.currentTranslate); // Update translate swiper.setTranslate(data.currentTranslate); } function onTouchEnd (event) { var swiper = this; var data = swiper.touchEventsData; var params = swiper.params; var touches = swiper.touches; var rtl = swiper.rtlTranslate; var $wrapperEl = swiper.$wrapperEl; var slidesGrid = swiper.slidesGrid; var snapGrid = swiper.snapGrid; var e = event; if (e.originalEvent) { e = e.originalEvent; } if (data.allowTouchCallbacks) { swiper.emit('touchEnd', e); } data.allowTouchCallbacks = false; if (!data.isTouched) { if (data.isMoved && params.grabCursor) { swiper.setGrabCursor(false); } data.isMoved = false; data.startMoving = false; return; } // Return Grab Cursor if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { swiper.setGrabCursor(false); } // Time diff var touchEndTime = Utils.now(); var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click if (swiper.allowClick) { swiper.updateClickedSlide(e); swiper.emit('tap', e); if (timeDiff 300) { if (data.clickTimeout) { clearTimeout(data.clickTimeout); } data.clickTimeout = Utils.nextTick(function () { if (!swiper || swiper.destroyed) { return; } swiper.emit('click', e); }, 300); } if (timeDiff -swiper.maxTranslate()) { if (swiper.slides.length 1) { var lastMoveEvent = data.velocities.pop(); var velocityEvent = data.velocities.pop(); var distance = lastMoveEvent.position - velocityEvent.position; var time = lastMoveEvent.time - velocityEvent.time; swiper.velocity = distance / time; swiper.velocity /= 2; if (Math.abs(swiper.velocity) 150 || (Utils.now() - lastMoveEvent.time) > 300) { swiper.velocity = 0; } } else { swiper.velocity = 0; } swiper.velocity *= params.freeModeMomentumVelocityRatio; data.velocities.length = 0; var momentumDuration = 1000 * params.freeModeMomentumRatio; var momentumDistance = swiper.velocity * momentumDuration; var newPosition = swiper.translate + momentumDistance; if (rtl) { newPosition = -newPosition; } var doBounce = false; var afterBouncePosition; var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; var needsLoopFix; if (newPosition swiper.minTranslate()) { if (params.freeModeMomentumBounce) { if (newPosition - swiper.minTranslate() > bounceAmount) { newPosition = swiper.minTranslate() + bounceAmount; } afterBouncePosition = swiper.minTranslate(); doBounce = true; data.allowMomentumBounce = true; } else { newPosition = swiper.minTranslate(); } if (params.loop && params.centeredSlides) { needsLoopFix = true; } } else if (params.freeModeSticky) { var nextSlide; for (var j = 0; j -newPosition) { nextSlide = j; break; } } if (Math.abs(snapGrid[nextSlide] - newPosition) = params.longSwipesMs) { swiper.updateProgress(); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } return; } // Find current slide var stopIndex = 0; var groupSize = swiper.slidesSizesGrid[0]; for (var i = 0; i = slidesGrid[i] && currentPos = slidesGrid[i]) { stopIndex = i; groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; } } // Find current slide size var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; if (timeDiff > params.longSwipesMs) { // Long touches if (!params.longSwipes) { swiper.slideTo(swiper.activeIndex); return; } if (swiper.swipeDirection === 'next') { if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); } else { swiper.slideTo(stopIndex); } } if (swiper.swipeDirection === 'prev') { if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); } else { swiper.slideTo(stopIndex); } } } else { // Short swipes if (!params.shortSwipes) { swiper.slideTo(swiper.activeIndex); return; } if (swiper.swipeDirection === 'next') { swiper.slideTo(stopIndex + params.slidesPerGroup); } if (swiper.swipeDirection === 'prev') { swiper.slideTo(stopIndex); } } } function onResize () { var swiper = this; var params = swiper.params; var el = swiper.el; if (el && el.offsetWidth === 0) { return; } // Breakpoints if (params.breakpoints) { swiper.setBreakpoint(); } // Save locks var allowSlideNext = swiper.allowSlideNext; var allowSlidePrev = swiper.allowSlidePrev; var snapGrid = swiper.snapGrid; // Disable locks on resize swiper.allowSlideNext = true; swiper.allowSlidePrev = true; swiper.updateSize(); swiper.updateSlides(); if (params.freeMode) { var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate()); swiper.setTranslate(newTranslate); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); if (params.autoHeight) { swiper.updateAutoHeight(); } } else { swiper.updateSlidesClasses(); if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { swiper.slideTo(swiper.slides.length - 1, 0, false, true); } else { swiper.slideTo(swiper.activeIndex, 0, false, true); } } // Return locks after resize swiper.allowSlidePrev = allowSlidePrev; swiper.allowSlideNext = allowSlideNext; if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { swiper.checkOverflow(); } } function onClick (e) { var swiper = this; if (!swiper.allowClick) { if (swiper.params.preventClicks) { e.preventDefault(); } if (swiper.params.preventClicksPropagation && swiper.animating) { e.stopPropagation(); e.stopImmediatePropagation(); } } } function attachEvents() { var swiper = this; var params = swiper.params; var touchEvents = swiper.touchEvents; var el = swiper.el; var wrapperEl = swiper.wrapperEl; { swiper.onTouchStart = onTouchStart.bind(swiper); swiper.onTouchMove = onTouchMove.bind(swiper); swiper.onTouchEnd = onTouchEnd.bind(swiper); } swiper.onClick = onClick.bind(swiper); var target = params.touchEventsTarget === 'container' ? el : wrapperEl; var capture = !!params.nested; // Touch Events { if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { target.addEventListener(touchEvents.start, swiper.onTouchStart, false); doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture); doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false); } else { if (Support.touch) { var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture); target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); } if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { target.addEventListener('mousedown', swiper.onTouchStart, false); doc.addEventListener('mousemove', swiper.onTouchMove, capture); doc.addEventListener('mouseup', swiper.onTouchEnd, false); } } // Prevent Links Clicks if (params.preventClicks || params.preventClicksPropagation) { target.addEventListener('click', swiper.onClick, true); } } // Resize handler swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); } function detachEvents() { var swiper = this; var params = swiper.params; var touchEvents = swiper.touchEvents; var el = swiper.el; var wrapperEl = swiper.wrapperEl; var target = params.touchEventsTarget === 'container' ? el : wrapperEl; var capture = !!params.nested; // Touch Events { if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { target.removeEventListener(touchEvents.start, swiper.onTouchStart, false); doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); } else { if (Support.touch) { var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); } if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { target.removeEventListener('mousedown', swiper.onTouchStart, false); doc.removeEventListener('mousemove', swiper.onTouchMove, capture); doc.removeEventListener('mouseup', swiper.onTouchEnd, false); } } // Prevent Links Clicks if (params.preventClicks || params.preventClicksPropagation) { target.removeEventListener('click', swiper.onClick, true); } } // Resize handler swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); } var events = { attachEvents: attachEvents, detachEvents: detachEvents, }; function setBreakpoint () { var swiper = this; var activeIndex = swiper.activeIndex; var initialized = swiper.initialized; var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0; var params = swiper.params; var breakpoints = params.breakpoints; if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; } // Set breakpoint for window width and update parameters var breakpoint = swiper.getBreakpoint(breakpoints); if (breakpoint && swiper.currentBreakpoint !== breakpoint) { var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; if (breakpointOnlyParams) { ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) { var 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); } }); } var breakpointParams = breakpointOnlyParams || swiper.originalParams; var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView); 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); } } function getBreakpoint (breakpoints) { var swiper = this; // Get breakpoint for window width if (!breakpoints) { return undefined; } var breakpoint = false; var points = []; Object.keys(breakpoints).forEach(function (point) { points.push(point); }); points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); }); for (var i = 0; i = win.innerWidth && !breakpoint) { breakpoint = point; } } return breakpoint || 'max'; } var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint }; var Browser = (function Browser() { function isSafari() { var ua = win.navigator.userAgent.toLowerCase(); return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') 1) { suffixes.push('multirow'); } if (Device.android) { suffixes.push('android'); } if (Device.ios) { suffixes.push('ios'); } // WP8 Touch Events Fix if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) { suffixes.push(("wp8-" + (params.direction))); } suffixes.forEach(function (suffix) { classNames.push(params.containerModifierClass + suffix); }); $el.addClass(classNames.join(' ')); } function removeClasses () { var swiper = this; var $el = swiper.$el; var classNames = swiper.classNames; $el.removeClass(classNames.join(' ')); } var classes = { addClasses: addClasses, removeClasses: removeClasses }; function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) { var image; function onReady() { if (callback) { callback(); } } if (!imageEl.complete || !checkForComplete) { if (src) { image = new win.Image(); image.onload = onReady; image.onerror = onReady; if (sizes) { image.sizes = sizes; } if (srcset) { image.srcset = srcset; } if (src) { image.src = src; } } else { onReady(); } } else { // image already loaded... onReady(); } } function preloadImages () { var swiper = this; swiper.imagesToLoad = swiper.$el.find('img'); function onReady() { if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; } if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; } if (swiper.imagesLoaded === swiper.imagesToLoad.length) { if (swiper.params.updateOnImagesReady) { swiper.update(); } swiper.emit('imagesReady'); } } for (var i = 0; i 1) { var swipers = []; $el.each(function (index, containerEl) { var newParams = Utils.extend({}, params, { el: containerEl }); swipers.push(new Swiper(newParams)); }); return swipers; } el.swiper = swiper; $el.data('swiper', swiper); // Find Wrapper var $wrapperEl = $el.children(("." + (swiper.params.wrapperClass))); // Extend Swiper Utils.extend(swiper, { $el: $el, el: el, $wrapperEl: $wrapperEl, wrapperEl: $wrapperEl[0], // Classes classNames: [], // Slides slides: $(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], // isDirection isHorizontal: function isHorizontal() { return swiper.params.direction === 'horizontal'; }, isVertical: function isVertical() { return swiper.params.direction === 'vertical'; }, // RTL rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), wrongRTL: $wrapperEl.css('display') === '-webkit-box', // Indexes activeIndex: 0, realIndex: 0, // isBeginning: true, isEnd: false, // Props translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: false, // Locks allowSlideNext: swiper.params.allowSlideNext, allowSlidePrev: swiper.params.allowSlidePrev, // Touch Events touchEvents: (function touchEvents() { var touch = ['touchstart', 'touchmove', 'touchend']; var desktop = ['mousedown', 'mousemove', 'mouseup']; if (Support.pointerEvents) { desktop = ['pointerdown', 'pointermove', 'pointerup']; } else if (Support.prefixedPointerEvents) { desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; } swiper.touchEventsTouch = { start: touch[0], move: touch[1], end: touch[2], }; swiper.touchEventsDesktop = { start: desktop[0], move: desktop[1], end: desktop[2], }; return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; }()), touchEventsData: { isTouched: undefined, isMoved: undefined, allowTouchCallbacks: undefined, touchStartTime: undefined, isScrolling: undefined, currentTranslate: undefined, startTranslate: undefined, allowThresholdMove: undefined, // Form elements to match formElements: 'input, select, option, textarea, button, video', // Last click time lastClickTime: Utils.now(), clickTimeout: undefined, // Velocities velocities: [], allowMomentumBounce: undefined, isTouchEvent: undefined, startMoving: undefined, }, // Clicks allowClick: true, // Touches allowTouchMove: swiper.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0, }, // Images imagesToLoad: [], imagesLoaded: 0, }); // Install Modules swiper.useModules(); // Init if (swiper.params.init) { swiper.init(); } // Return app instance return swiper; } if ( SwiperClass$$1 ) Swiper.__proto__ = SwiperClass$$1; Swiper.prototype = Object.create( SwiperClass$$1 && SwiperClass$$1.prototype ); Swiper.prototype.constructor = Swiper; var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } }; Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () { var swiper = this; var params = swiper.params; var slides = swiper.slides; var slidesGrid = swiper.slidesGrid; var swiperSize = swiper.size; var activeIndex = swiper.activeIndex; var spv = 1; if (params.centeredSlides) { var slideSize = slides[activeIndex].swiperSlideSize; var breakLoop; for (var i = activeIndex + 1; i swiperSize) { breakLoop = true; } } } for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) { if (slides[i$1] && !breakLoop) { slideSize += slides[i$1].swiperSlideSize; spv += 1; if (slideSize > swiperSize) { breakLoop = true; } } } } else { for (var i$2 = activeIndex + 1; i$2 1) && swiper.isEnd && !swiper.params.centeredSlides) { translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); } else { translated = swiper.slideTo(swiper.activeIndex, 0, false, true); } if (!translated) { setTranslate(); } } if (params.watchOverflow && snapGrid !== swiper.snapGrid) { swiper.checkOverflow(); } swiper.emit('update'); }; Swiper.prototype.init = function init () { var swiper = this; if (swiper.initialized) { return; } swiper.emit('beforeInit'); // Set breakpoint if (swiper.params.breakpoints) { swiper.setBreakpoint(); } // Add Classes swiper.addClasses(); // Create loop if (swiper.params.loop) { swiper.loopCreate(); } // Update size swiper.updateSize(); // Update slides swiper.updateSlides(); if (swiper.params.watchOverflow) { swiper.checkOverflow(); } // Set Grab Cursor if (swiper.params.grabCursor) { swiper.setGrabCursor(); } if (swiper.params.preloadImages) { swiper.preloadImages(); } // Slide To Initial Slide if (swiper.params.loop) { swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); } else { swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); } // Attach events swiper.attachEvents(); // Init Flag swiper.initialized = true; // Emit swiper.emit('init'); }; Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) { if ( deleteInstance === void 0 ) deleteInstance = true; if ( cleanStyles === void 0 ) cleanStyles = true; var swiper = this; var params = swiper.params; var $el = swiper.$el; var $wrapperEl = swiper.$wrapperEl; var slides = swiper.slides; if (typeof swiper.params === 'undefined' || swiper.destroyed) { return null; } swiper.emit('beforeDestroy'); // Init Flag swiper.initialized = false; // Detach events swiper.detachEvents(); // Destroy loop if (params.loop) { swiper.loopDestroy(); } // Cleanup styles if (cleanStyles) { swiper.removeClasses(); $el.removeAttr('style'); $wrapperEl.removeAttr('style'); if (slides && slides.length) { slides .removeClass([ params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass ].join(' ')) .removeAttr('style') .removeAttr('data-swiper-slide-index') .removeAttr('data-swiper-column') .removeAttr('data-swiper-row'); } } swiper.emit('destroy'); // Detach emitter events Object.keys(swiper.eventsListeners).forEach(function (eventName) { swiper.off(eventName); }); if (deleteInstance !== false) { swiper.$el[0].swiper = null; swiper.$el.data('swiper', null); Utils.deleteProps(swiper); } swiper.destroyed = true; return null; }; Swiper.extendDefaults = function extendDefaults (newDefaults) { Utils.extend(extendedDefaults, newDefaults); }; staticAccessors.extendedDefaults.get = function () { return extendedDefaults; }; staticAccessors.defaults.get = function () { return defaults; }; staticAccessors.Class.get = function () { return SwiperClass$$1; }; staticAccessors.$.get = function () { return $; }; Object.defineProperties( Swiper, staticAccessors ); return Swiper; }(SwiperClass)); var Device$1 = { name: 'device', proto: { device: Device, }, static: { device: Device, }, }; var Support$1 = { name: 'support', proto: { support: Support, }, static: { support: Support, }, }; var Browser$1 = { name: 'browser', proto: { browser: Browser, }, static: { browser: Browser, }, }; var Resize = { name: 'resize', create: function create() { var swiper = this; Utils.extend(swiper, { resize: { resizeHandler: function resizeHandler() { if (!swiper || swiper.destroyed || !swiper.initialized) { return; } swiper.emit('beforeResize'); swiper.emit('resize'); }, orientationChangeHandler: function orientationChangeHandler() { if (!swiper || swiper.destroyed || !swiper.initialized) { return; } swiper.emit('orientationchange'); }, }, }); }, on: { init: function init() { var swiper = this; // Emit resize win.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); }, destroy: function destroy() { var swiper = this; win.removeEventListener('resize', swiper.resize.resizeHandler); win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); }, }, }; var Observer = { func: win.MutationObserver || win.WebkitMutationObserver, attach: function attach(target, options) { if ( options === void 0 ) options = {}; var swiper = this; var ObserverFunc = Observer.func; var observer = new ObserverFunc(function (mutations) { // The observerUpdate event should only be triggered // once despite the number of mutations. Additional // triggers are redundant and are very costly if (mutations.length === 1) { swiper.emit('observerUpdate', mutations[0]); return; } var observerUpdate = function observerUpdate() { swiper.emit('observerUpdate', mutations[0]); }; if (win.requestAnimationFrame) { win.requestAnimationFrame(observerUpdate); } else { win.setTimeout(observerUpdate, 0); } }); observer.observe(target, { attributes: typeof options.attributes === 'undefined' ? true : options.attributes, childList: typeof options.childList === 'undefined' ? true : options.childList, characterData: typeof options.characterData === 'undefined' ? true : options.characterData, }); swiper.observer.observers.push(observer); }, init: function init() { var swiper = this; if (!Support.observer || !swiper.params.observer) { return; } if (swiper.params.observeParents) { var containerParents = swiper.$el.parents(); for (var i = 0; i to) { swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove(); } } } for (var i$1 = 0; i$1 = from && i$1 previousTo) { appendIndexes.push(i$1); } if (i$1 " + slide + "")); if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); } if (params.cache) { swiper.virtual.cache[index] = $slideEl; } return $slideEl; }, appendSlide: function appendSlide(slide) { var swiper = this; swiper.virtual.slides.push(slide); swiper.virtual.update(true); }, prependSlide: function prependSlide(slide) { var swiper = this; swiper.virtual.slides.unshift(slide); if (swiper.params.virtual.cache) { var cache = swiper.virtual.cache; var newCache = {}; Object.keys(cache).forEach(function (cachedIndex) { newCache[cachedIndex + 1] = cache[cachedIndex]; }); swiper.virtual.cache = newCache; } swiper.virtual.update(true); swiper.slideNext(0); }, }; var Virtual$1 = { name: 'virtual', params: { virtual: { enabled: false, slides: [], cache: true, renderSlide: null, renderExternal: null, addSlidesBefore: 0, addSlidesAfter: 0, }, }, create: function create() { var swiper = this; Utils.extend(swiper, { virtual: { update: Virtual.update.bind(swiper), appendSlide: Virtual.appendSlide.bind(swiper), prependSlide: Virtual.prependSlide.bind(swiper), renderSlide: Virtual.renderSlide.bind(swiper), slides: swiper.params.virtual.slides, cache: {}, }, }); }, on: { beforeInit: function beforeInit() { var swiper = this; if (!swiper.params.virtual.enabled) { return; } swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual")); var overwriteParams = { watchSlidesProgress: true, }; Utils.extend(swiper.params, overwriteParams); Utils.extend(swiper.originalParams, overwriteParams); if (!swiper.params.initialSlide) { swiper.virtual.update(); } }, setTranslate: function setTranslate() { var swiper = this; if (!swiper.params.virtual.enabled) { return; } swiper.virtual.update(); }, }, }; var Keyboard = { handle: function handle(event) { var swiper = this; var rtl = swiper.rtlTranslate; var e = event; if (e.originalEvent) { e = e.originalEvent; } // jquery fix var kc = e.keyCode || e.charCode; // Directions locks if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) { return false; } if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) { return false; } if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { return undefined; } if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) { return undefined; } if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) { var inView = false; // Check that swiper should be inside of visible area of window if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) { return undefined; } var windowWidth = win.innerWidth; var windowHeight = win.innerHeight; var swiperOffset = swiper.$el.offset(); if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; } var swiperCoord = [ [swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ]; for (var i = 0; i = 0 && point[0] = 0 && point[1] -1) { return 'DOMMouseScroll'; } return isEventSupported() ? 'wheel' : 'mousewheel'; }()), normalize: function normalize(e) { // Reasonable defaults var PIXEL_STEP = 10; var LINE_HEIGHT = 40; var PAGE_HEIGHT = 800; var sX = 0; var sY = 0; // spinX, spinY var pX = 0; var pY = 0; // pixelX, pixelY // Legacy if ('detail' in e) { sY = e.detail; } if ('wheelDelta' in e) { sY = -e.wheelDelta / 120; } if ('wheelDeltaY' in e) { sY = -e.wheelDeltaY / 120; } if ('wheelDeltaX' in e) { sX = -e.wheelDeltaX / 120; } // side scrolling on FF with DOMMouseScroll if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { sX = sY; sY = 0; } pX = sX * PIXEL_STEP; pY = sY * PIXEL_STEP; if ('deltaY' in e) { pY = e.deltaY; } if ('deltaX' in e) { pX = e.deltaX; } if ((pX || pY) && e.deltaMode) { if (e.deltaMode === 1) { // delta in LINE units pX *= LINE_HEIGHT; pY *= LINE_HEIGHT; } else { // delta in PAGE units pX *= PAGE_HEIGHT; pY *= PAGE_HEIGHT; } } // Fall-back if spin cannot be determined if (pX && !sX) { sX = (pX Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; } else { return true; } } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; } else { return true; } } else { delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; } if (delta === 0) { return true; } if (params.invert) { delta = -delta; } if (!swiper.params.freeMode) { if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) { if (delta = swiper.minTranslate()) { position = swiper.minTranslate(); } if (position 0) { if (swiper.isBeginning) { $prevEl.addClass(params.disabledClass); } else { $prevEl.removeClass(params.disabledClass); } $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); } if ($nextEl && $nextEl.length > 0) { if (swiper.isEnd) { $nextEl.addClass(params.disabledClass); } else { $nextEl.removeClass(params.disabledClass); } $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); } }, onPrevClick: function onPrevClick(e) { var swiper = this; e.preventDefault(); if (swiper.isBeginning && !swiper.params.loop) { return; } swiper.slidePrev(); }, onNextClick: function onNextClick(e) { var swiper = this; e.preventDefault(); if (swiper.isEnd && !swiper.params.loop) { return; } swiper.slideNext(); }, init: function init() { var swiper = this; var params = swiper.params.navigation; if (!(params.nextEl || params.prevEl)) { return; } var $nextEl; var $prevEl; if (params.nextEl) { $nextEl = $(params.nextEl); if ( swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1 ) { $nextEl = swiper.$el.find(params.nextEl); } } if (params.prevEl) { $prevEl = $(params.prevEl); if ( swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1 ) { $prevEl = swiper.$el.find(params.prevEl); } } if ($nextEl && $nextEl.length > 0) { $nextEl.on('click', swiper.navigation.onNextClick); } if ($prevEl && $prevEl.length > 0) { $prevEl.on('click', swiper.navigation.onPrevClick); } Utils.extend(swiper.navigation, { $nextEl: $nextEl, nextEl: $nextEl && $nextEl[0], $prevEl: $prevEl, prevEl: $prevEl && $prevEl[0], }); }, destroy: function destroy() { var swiper = this; var ref = swiper.navigation; var $nextEl = ref.$nextEl; var $prevEl = ref.$prevEl; if ($nextEl && $nextEl.length) { $nextEl.off('click', swiper.navigation.onNextClick); $nextEl.removeClass(swiper.params.navigation.disabledClass); } if ($prevEl && $prevEl.length) { $prevEl.off('click', swiper.navigation.onPrevClick); $prevEl.removeClass(swiper.params.navigation.disabledClass); } }, }; var Navigation$1 = { name: 'navigation', params: { navigation: { nextEl: null, prevEl: null, hideOnClick: false, disabledClass: 'swiper-button-disabled', hiddenClass: 'swiper-button-hidden', lockClass: 'swiper-button-lock', }, }, create: function create() { var swiper = this; Utils.extend(swiper, { navigation: { init: Navigation.init.bind(swiper), update: Navigation.update.bind(swiper), destroy: Navigation.destroy.bind(swiper), onNextClick: Navigation.onNextClick.bind(swiper), onPrevClick: Navigation.onPrevClick.bind(swiper), }, }); }, on: { init: function init() { var swiper = this; swiper.navigation.init(); swiper.navigation.update(); }, toEdge: function toEdge() { var swiper = this; swiper.navigation.update(); }, fromEdge: function fromEdge() { var swiper = this; swiper.navigation.update(); }, destroy: function destroy() { var swiper = this; swiper.navigation.destroy(); }, click: function click(e) { var swiper = this; var ref = swiper.navigation; var $nextEl = ref.$nextEl; var $prevEl = ref.$prevEl; if ( swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl) ) { if ($nextEl) { $nextEl.toggleClass(swiper.params.navigation.hiddenClass); } if ($prevEl) { $prevEl.toggleClass(swiper.params.navigation.hiddenClass); } } }, }, }; var Pagination = { update: function update() { // Render || Update Pagination bullets/items var swiper = this; var rtl = swiper.rtl; var params = swiper.params.pagination; if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; var $el = swiper.pagination.$el; // Current/Total var current; var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; if (swiper.params.loop) { current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { current -= (slidesLength - (swiper.loopedSlides * 2)); } if (current > total - 1) { current -= total; } if (current 0) { var bullets = swiper.pagination.bullets; var firstIndex; var lastIndex; var midIndex; if (params.dynamicBullets) { swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px")); if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; } else if (swiper.pagination.dynamicBulletIndex 1) { bullets.each(function (index, bullet) { var $bullet = $(bullet); var bulletIndex = $bullet.index(); if (bulletIndex === current) { $bullet.addClass(params.bulletActiveClass); } if (params.dynamicBullets) { if (bulletIndex >= firstIndex && bulletIndex " + (params.bulletElement) + ">"; } } $el.html(paginationHTML); swiper.pagination.bullets = $el.find(("." + (params.bulletClass))); } if (params.type === 'fraction') { if (params.renderFraction) { paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); } else { paginationHTML = "" + ' / ' + ""; } $el.html(paginationHTML); } if (params.type === 'progressbar') { if (params.renderProgressbar) { paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); } else { paginationHTML = ""; } $el.html(paginationHTML); } if (params.type !== 'custom') { swiper.emit('paginationRender', swiper.pagination.$el[0]); } }, init: function init() { var swiper = this; var params = swiper.params.pagination; if (!params.el) { return; } var $el = $(params.el); if ($el.length === 0) { return; } if ( swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && swiper.$el.find(params.el).length === 1 ) { $el = swiper.$el.find(params.el); } if (params.type === 'bullets' && params.clickable) { $el.addClass(params.clickableClass); } $el.addClass(params.modifierClass + params.type); if (params.type === 'bullets' && params.dynamicBullets) { $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic")); swiper.pagination.dynamicBulletIndex = 0; if (params.dynamicMainBullets 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass) ) { swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); } }, }, }; var Scrollbar = { setTranslate: function setTranslate() { var swiper = this; if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } var scrollbar = swiper.scrollbar; var rtl = swiper.rtlTranslate; var progress = swiper.progress; var dragSize = scrollbar.dragSize; var trackSize = scrollbar.trackSize; var $dragEl = scrollbar.$dragEl; var $el = scrollbar.$el; var params = swiper.params.scrollbar; var newSize = dragSize; var newPos = (trackSize - dragSize) * progress; if (rtl) { newPos = -newPos; if (newPos > 0) { newSize = dragSize - newPos; newPos = 0; } else if (-newPos + dragSize > trackSize) { newSize = trackSize + newPos; } } else if (newPos trackSize) { newSize = trackSize - newPos; } if (swiper.isHorizontal()) { if (Support.transforms3d) { $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)")); } else { $dragEl.transform(("translateX(" + newPos + "px)")); } $dragEl[0].style.width = newSize + "px"; } else { if (Support.transforms3d) { $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)")); } else { $dragEl.transform(("translateY(" + newPos + "px)")); } $dragEl[0].style.height = newSize + "px"; } if (params.hide) { clearTimeout(swiper.scrollbar.timeout); $el[0].style.opacity = 1; swiper.scrollbar.timeout = setTimeout(function () { $el[0].style.opacity = 0; $el.transition(400); }, 1000); } }, setTransition: function setTransition(duration) { var swiper = this; if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } swiper.scrollbar.$dragEl.transition(duration); }, updateSize: function updateSize() { var swiper = this; if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } var scrollbar = swiper.scrollbar; var $dragEl = scrollbar.$dragEl; var $el = scrollbar.$el; $dragEl[0].style.width = ''; $dragEl[0].style.height = ''; var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; var divider = swiper.size / swiper.virtualSize; var moveDivider = divider * (trackSize / swiper.size); var dragSize; if (swiper.params.scrollbar.dragSize === 'auto') { dragSize = trackSize * divider; } else { dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); } if (swiper.isHorizontal()) { $dragEl[0].style.width = dragSize + "px"; } else { $dragEl[0].style.height = dragSize + "px"; } if (divider >= 1) { $el[0].style.display = 'none'; } else { $el[0].style.display = ''; } if (swiper.params.scrollbarHide) { $el[0].style.opacity = 0; } Utils.extend(scrollbar, { trackSize: trackSize, divider: divider, moveDivider: moveDivider, dragSize: dragSize, }); scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); }, setDragPosition: function setDragPosition(e) { var swiper = this; var scrollbar = swiper.scrollbar; var rtl = swiper.rtlTranslate; var $el = scrollbar.$el; var dragSize = scrollbar.dragSize; var trackSize = scrollbar.trackSize; var pointerPosition; if (swiper.isHorizontal()) { pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX); } else { pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY); } var positionRatio; positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize); positionRatio = Math.max(Math.min(positionRatio, 1), 0); if (rtl) { positionRatio = 1 - positionRatio; } var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); swiper.updateProgress(position); swiper.setTranslate(position); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); }, onDragStart: function onDragStart(e) { var swiper = this; var params = swiper.params.scrollbar; var scrollbar = swiper.scrollbar; var $wrapperEl = swiper.$wrapperEl; var $el = scrollbar.$el; var $dragEl = scrollbar.$dragEl; swiper.scrollbar.isTouched = true; e.preventDefault(); e.stopPropagation(); $wrapperEl.transition(100); $dragEl.transition(100); scrollbar.setDragPosition(e); clearTimeout(swiper.scrollbar.dragTimeout); $el.transition(0); if (params.hide) { $el.css('opacity', 1); } swiper.emit('scrollbarDragStart', e); }, onDragMove: function onDragMove(e) { var swiper = this; var scrollbar = swiper.scrollbar; var $wrapperEl = swiper.$wrapperEl; var $el = scrollbar.$el; var $dragEl = scrollbar.$dragEl; if (!swiper.scrollbar.isTouched) { return; } if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } scrollbar.setDragPosition(e); $wrapperEl.transition(0); $el.transition(0); $dragEl.transition(0); swiper.emit('scrollbarDragMove', e); }, onDragEnd: function onDragEnd(e) { var swiper = this; var params = swiper.params.scrollbar; var scrollbar = swiper.scrollbar; var $el = scrollbar.$el; if (!swiper.scrollbar.isTouched) { return; } swiper.scrollbar.isTouched = false; if (params.hide) { clearTimeout(swiper.scrollbar.dragTimeout); swiper.scrollbar.dragTimeout = Utils.nextTick(function () { $el.css('opacity', 0); $el.transition(400); }, 1000); } swiper.emit('scrollbarDragEnd', e); if (params.snapOnRelease) { swiper.slideToClosest(); } }, enableDraggable: function enableDraggable() { var swiper = this; if (!swiper.params.scrollbar.el) { return; } var scrollbar = swiper.scrollbar; var touchEventsTouch = swiper.touchEventsTouch; var touchEventsDesktop = swiper.touchEventsDesktop; var params = swiper.params; var $el = scrollbar.$el; var target = $el[0]; var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; if (!Support.touch) { target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); } else { target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); } }, disableDraggable: function disableDraggable() { var swiper = this; if (!swiper.params.scrollbar.el) { return; } var scrollbar = swiper.scrollbar; var touchEventsTouch = swiper.touchEventsTouch; var touchEventsDesktop = swiper.touchEventsDesktop; var params = swiper.params; var $el = scrollbar.$el; var target = $el[0]; var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; if (!Support.touch) { target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); } else { target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); } }, init: function init() { var swiper = this; if (!swiper.params.scrollbar.el) { return; } var scrollbar = swiper.scrollbar; var $swiperEl = swiper.$el; var params = swiper.params.scrollbar; var $el = $(params.el); if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { $el = $swiperEl.find(params.el); } var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass))); if ($dragEl.length === 0) { $dragEl = $(("
    ")); $el.append($dragEl); } Utils.extend(scrollbar, { $el: $el, el: $el[0], $dragEl: $dragEl, dragEl: $dragEl[0], }); if (params.draggable) { scrollbar.enableDraggable(); } }, destroy: function destroy() { var swiper = this; swiper.scrollbar.disableDraggable(); }, }; var Scrollbar$1 = { name: 'scrollbar', params: { scrollbar: { el: null, dragSize: 'auto', hide: false, draggable: false, snapOnRelease: true, lockClass: 'swiper-scrollbar-lock', dragClass: 'swiper-scrollbar-drag', }, }, create: function create() { var swiper = this; Utils.extend(swiper, { scrollbar: { init: Scrollbar.init.bind(swiper), destroy: Scrollbar.destroy.bind(swiper), updateSize: Scrollbar.updateSize.bind(swiper), setTranslate: Scrollbar.setTranslate.bind(swiper), setTransition: Scrollbar.setTransition.bind(swiper), enableDraggable: Scrollbar.enableDraggable.bind(swiper), disableDraggable: Scrollbar.disableDraggable.bind(swiper), setDragPosition: Scrollbar.setDragPosition.bind(swiper), onDragStart: Scrollbar.onDragStart.bind(swiper), onDragMove: Scrollbar.onDragMove.bind(swiper), onDragEnd: Scrollbar.onDragEnd.bind(swiper), isTouched: false, timeout: null, dragTimeout: null, }, }); }, on: { init: function init() { var swiper = this; swiper.scrollbar.init(); swiper.scrollbar.updateSize(); swiper.scrollbar.setTranslate(); }, update: function update() { var swiper = this; swiper.scrollbar.updateSize(); }, resize: function resize() { var swiper = this; swiper.scrollbar.updateSize(); }, observerUpdate: function observerUpdate() { var swiper = this; swiper.scrollbar.updateSize(); }, setTranslate: function setTranslate() { var swiper = this; swiper.scrollbar.setTranslate(); }, setTransition: function setTransition(duration) { var swiper = this; swiper.scrollbar.setTransition(duration); }, destroy: function destroy() { var swiper = this; swiper.scrollbar.destroy(); }, }, }; var Parallax = { setTransform: function setTransform(el, progress) { var swiper = this; var rtl = swiper.rtl; var $el = $(el); var rtlFactor = rtl ? -1 : 1; var p = $el.attr('data-swiper-parallax') || '0'; var x = $el.attr('data-swiper-parallax-x'); var y = $el.attr('data-swiper-parallax-y'); var scale = $el.attr('data-swiper-parallax-scale'); var opacity = $el.attr('data-swiper-parallax-opacity'); if (x || y) { x = x || '0'; y = y || '0'; } else if (swiper.isHorizontal()) { x = p; y = '0'; } else { y = p; x = '0'; } if ((x).indexOf('%') >= 0) { x = (parseInt(x, 10) * progress * rtlFactor) + "%"; } else { x = (x * progress * rtlFactor) + "px"; } if ((y).indexOf('%') >= 0) { y = (parseInt(y, 10) * progress) + "%"; } else { y = (y * progress) + "px"; } if (typeof opacity !== 'undefined' && opacity !== null) { var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); $el[0].style.opacity = currentOpacity; } if (typeof scale === 'undefined' || scale === null) { $el.transform(("translate3d(" + x + ", " + y + ", 0px)")); } else { var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")")); } }, setTranslate: function setTranslate() { var swiper = this; var $el = swiper.$el; var slides = swiper.slides; var progress = swiper.progress; var snapGrid = swiper.snapGrid; $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') .each(function (index, el) { swiper.parallax.setTransform(el, progress); }); slides.each(function (slideIndex, slideEl) { var slideProgress = slideEl.progress; if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); } slideProgress = Math.min(Math.max(slideProgress, -1), 1); $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') .each(function (index, el) { swiper.parallax.setTransform(el, slideProgress); }); }); }, setTransition: function setTransition(duration) { if ( duration === void 0 ) duration = this.params.speed; var swiper = this; var $el = swiper.$el; $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') .each(function (index, parallaxEl) { var $parallaxEl = $(parallaxEl); var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; if (duration === 0) { parallaxDuration = 0; } $parallaxEl.transition(parallaxDuration); }); }, }; var Parallax$1 = { name: 'parallax', params: { parallax: { enabled: false, }, }, create: function create() { var swiper = this; Utils.extend(swiper, { parallax: { setTransform: Parallax.setTransform.bind(swiper), setTranslate: Parallax.setTranslate.bind(swiper), setTransition: Parallax.setTransition.bind(swiper), }, }); }, on: { beforeInit: function beforeInit() { var swiper = this; if (!swiper.params.parallax.enabled) { return; } swiper.params.watchSlidesProgress = true; swiper.originalParams.watchSlidesProgress = true; }, init: function init() { var swiper = this; if (!swiper.params.parallax) { return; } swiper.parallax.setTranslate(); }, setTranslate: function setTranslate() { var swiper = this; if (!swiper.params.parallax) { return; } swiper.parallax.setTranslate(); }, setTransition: function setTransition(duration) { var swiper = this; if (!swiper.params.parallax) { return; } swiper.parallax.setTransition(duration); }, }, }; var Zoom = { // Calc Scale From Multi-touches getDistanceBetweenTouches: function getDistanceBetweenTouches(e) { if (e.targetTouches.length gesture.maxRatio) { zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 )); } if (zoom.scale image.touchesStart.x) ) ) { image.isTouched = false; return; } if ( !swiper.isHorizontal() && ( (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y image.touchesStart.y) ) ) { image.isTouched = false; return; } } e.preventDefault(); e.stopPropagation(); image.isMoved = true; image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; if (image.currentX image.maxX) { image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 )); } if (image.currentY image.maxY) { image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 )); } // Velocity if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; } if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; } if (!velocity.prevTime) { velocity.prevTime = Date.now(); } velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) translateMaxX) { translateX = translateMaxX; } if (translateY translateMaxY) { translateY = translateMaxY; } } else { translateX = 0; translateY = 0; } gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)")); gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); }, out: function out() { var swiper = this; var zoom = swiper.zoom; var params = swiper.params.zoom; var gesture = zoom.gesture; if (!gesture.$slideEl) { gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex); gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); } if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } zoom.scale = 1; zoom.currentScale = 1; gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass))); gesture.$slideEl = undefined; }, // Attach/Detach Events enable: function enable() { var swiper = this; var zoom = swiper.zoom; if (zoom.enabled) { return; } zoom.enabled = true; var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; // Scale image if (Support.gestures) { swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); } else if (swiper.touchEvents.start === 'touchstart') { swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); } // Move image swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); }, disable: function disable() { var swiper = this; var zoom = swiper.zoom; if (!zoom.enabled) { return; } swiper.zoom.enabled = false; var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; // Scale image if (Support.gestures) { swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); } else if (swiper.touchEvents.start === 'touchstart') { swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); } // Move image swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); }, }; var Zoom$1 = { name: 'zoom', params: { zoom: { enabled: false, maxRatio: 3, minRatio: 1, toggle: true, containerClass: 'swiper-zoom-container', zoomedSlideClass: 'swiper-slide-zoomed', }, }, create: function create() { var swiper = this; var zoom = { enabled: false, scale: 1, currentScale: 1, isScaling: false, gesture: { $slideEl: undefined, slideWidth: undefined, slideHeight: undefined, $imageEl: undefined, $imageWrapEl: undefined, maxRatio: 3, }, image: { isTouched: undefined, isMoved: undefined, currentX: undefined, currentY: undefined, minX: undefined, minY: undefined, maxX: undefined, maxY: undefined, width: undefined, height: undefined, startX: undefined, startY: undefined, touchesStart: {}, touchesCurrent: {}, }, velocity: { x: undefined, y: undefined, prevPositionX: undefined, prevPositionY: undefined, prevTime: undefined, }, }; ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) { zoom[methodName] = Zoom[methodName].bind(swiper); }); Utils.extend(swiper, { zoom: zoom, }); }, on: { init: function init() { var swiper = this; if (swiper.params.zoom.enabled) { swiper.zoom.enable(); } }, destroy: function destroy() { var swiper = this; swiper.zoom.disable(); }, touchStart: function touchStart(e) { var swiper = this; if (!swiper.zoom.enabled) { return; } swiper.zoom.onTouchStart(e); }, touchEnd: function touchEnd(e) { var swiper = this; if (!swiper.zoom.enabled) { return; } swiper.zoom.onTouchEnd(e); }, doubleTap: function doubleTap(e) { var swiper = this; if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { swiper.zoom.toggle(e); } }, transitionEnd: function transitionEnd() { var swiper = this; if (swiper.zoom.enabled && swiper.params.zoom.enabled) { swiper.zoom.onTransitionEnd(); } }, }, }; var Lazy = { loadInSlide: function loadInSlide(index, loadInDuplicate) { if ( loadInDuplicate === void 0 ) loadInDuplicate = true; var swiper = this; var params = swiper.params.lazy; if (typeof index === 'undefined') { return; } if (swiper.slides.length === 0) { return; } var isVirtual = swiper.virtual && swiper.params.virtual.enabled; var $slideEl = isVirtual ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")) : swiper.slides.eq(index); var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")")); if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { $images = $images.add($slideEl[0]); } if ($images.length === 0) { return; } $images.each(function (imageIndex, imageEl) { var $imageEl = $(imageEl); $imageEl.addClass(params.loadingClass); var background = $imageEl.attr('data-background'); var src = $imageEl.attr('data-src'); var srcset = $imageEl.attr('data-srcset'); var sizes = $imageEl.attr('data-sizes'); swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () { if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; } if (background) { $imageEl.css('background-image', ("url(\"" + background + "\")")); $imageEl.removeAttr('data-background'); } else { if (srcset) { $imageEl.attr('srcset', srcset); $imageEl.removeAttr('data-srcset'); } if (sizes) { $imageEl.attr('sizes', sizes); $imageEl.removeAttr('data-sizes'); } if (src) { $imageEl.attr('src', src); $imageEl.removeAttr('data-src'); } } $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); $slideEl.find(("." + (params.preloaderClass))).remove(); if (swiper.params.loop && loadInDuplicate) { var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")")); swiper.lazy.loadInSlide(originalSlide.index(), false); } else { var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]")); swiper.lazy.loadInSlide(duplicatedSlide.index(), false); } } swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); }); swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); }); }, load: function load() { var swiper = this; var $wrapperEl = swiper.$wrapperEl; var swiperParams = swiper.params; var slides = swiper.slides; var activeIndex = swiper.activeIndex; var isVirtual = swiper.virtual && swiperParams.virtual.enabled; var params = swiperParams.lazy; var slidesPerView = swiperParams.slidesPerView; if (slidesPerView === 'auto') { slidesPerView = 0; } function slideExist(index) { if (isVirtual) { if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) { return true; } } else if (slides[index]) { return true; } return false; } function slideIndex(slideEl) { if (isVirtual) { return $(slideEl).attr('data-swiper-slide-index'); } return $(slideEl).index(); } if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; } if (swiper.params.watchSlidesVisibility) { $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) { var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); swiper.lazy.loadInSlide(index); }); } else if (slidesPerView > 1) { for (var i = activeIndex; i 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { var amount = params.loadPrevNextAmount; var spv = slidesPerView; var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides for (var i$1 = activeIndex + slidesPerView; i$1 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); } var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass))); if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); } } } }, }; var Lazy$1 = { name: 'lazy', params: { lazy: { enabled: false, loadPrevNext: false, loadPrevNextAmount: 1, loadOnTransitionStart: false, elementClass: 'swiper-lazy', loadingClass: 'swiper-lazy-loading', loadedClass: 'swiper-lazy-loaded', preloaderClass: 'swiper-lazy-preloader', }, }, create: function create() { var swiper = this; Utils.extend(swiper, { lazy: { initialImageLoaded: false, load: Lazy.load.bind(swiper), loadInSlide: Lazy.loadInSlide.bind(swiper), }, }); }, on: { beforeInit: function beforeInit() { var swiper = this; if (swiper.params.lazy.enabled && swiper.params.preloadImages) { swiper.params.preloadImages = false; } }, init: function init() { var swiper = this; if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { swiper.lazy.load(); } }, scroll: function scroll() { var swiper = this; if (swiper.params.freeMode && !swiper.params.freeModeSticky) { swiper.lazy.load(); } }, resize: function resize() { var swiper = this; if (swiper.params.lazy.enabled) { swiper.lazy.load(); } }, scrollbarDragMove: function scrollbarDragMove() { var swiper = this; if (swiper.params.lazy.enabled) { swiper.lazy.load(); } }, transitionStart: function transitionStart() { var swiper = this; if (swiper.params.lazy.enabled) { if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { swiper.lazy.load(); } } }, transitionEnd: function transitionEnd() { var swiper = this; if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { swiper.lazy.load(); } }, }, }; /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ var Controller = { LinearSpline: function LinearSpline(x, y) { var binarySearch = (function search() { var maxIndex; var minIndex; var guess; return function (array, val) { minIndex = -1; maxIndex = array.length; while (maxIndex - minIndex > 1) { guess = maxIndex + minIndex >> 1; if (array[guess] 0) { if (swiper.isBeginning) { swiper.a11y.disableEl($prevEl); } else { swiper.a11y.enableEl($prevEl); } } if ($nextEl && $nextEl.length > 0) { if (swiper.isEnd) { swiper.a11y.disableEl($nextEl); } else { swiper.a11y.enableEl($nextEl); } } }, updatePagination: function updatePagination() { var swiper = this; var params = swiper.params.a11y; if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { swiper.pagination.bullets.each(function (bulletIndex, bulletEl) { var $bulletEl = $(bulletEl); swiper.a11y.makeElFocusable($bulletEl); swiper.a11y.addElRole($bulletEl, 'button'); swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1)); }); } }, init: function init() { var swiper = this; swiper.$el.append(swiper.a11y.liveRegion); // Navigation var params = swiper.params.a11y; var $nextEl; var $prevEl; if (swiper.navigation && swiper.navigation.$nextEl) { $nextEl = swiper.navigation.$nextEl; } if (swiper.navigation && swiper.navigation.$prevEl) { $prevEl = swiper.navigation.$prevEl; } if ($nextEl) { swiper.a11y.makeElFocusable($nextEl); swiper.a11y.addElRole($nextEl, 'button'); swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); $nextEl.on('keydown', swiper.a11y.onEnterKey); } if ($prevEl) { swiper.a11y.makeElFocusable($prevEl); swiper.a11y.addElRole($prevEl, 'button'); swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); $prevEl.on('keydown', swiper.a11y.onEnterKey); } // Pagination if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); } }, destroy: function destroy() { var swiper = this; if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); } var $nextEl; var $prevEl; if (swiper.navigation && swiper.navigation.$nextEl) { $nextEl = swiper.navigation.$nextEl; } if (swiper.navigation && swiper.navigation.$prevEl) { $prevEl = swiper.navigation.$prevEl; } if ($nextEl) { $nextEl.off('keydown', swiper.a11y.onEnterKey); } if ($prevEl) { $prevEl.off('keydown', swiper.a11y.onEnterKey); } // Pagination if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); } }, }; var A11y = { name: 'a11y', params: { a11y: { enabled: true, notificationClass: 'swiper-notification', prevSlideMessage: 'Previous slide', nextSlideMessage: 'Next slide', firstSlideMessage: 'This is the first slide', lastSlideMessage: 'This is the last slide', paginationBulletMessage: 'Go to slide {{index}}', }, }, create: function create() { var swiper = this; Utils.extend(swiper, { a11y: { liveRegion: $(("")), }, }); Object.keys(a11y).forEach(function (methodName) { swiper.a11y[methodName] = a11y[methodName].bind(swiper); }); }, on: { init: function init() { var swiper = this; if (!swiper.params.a11y.enabled) { return; } swiper.a11y.init(); swiper.a11y.updateNavigation(); }, toEdge: function toEdge() { var swiper = this; if (!swiper.params.a11y.enabled) { return; } swiper.a11y.updateNavigation(); }, fromEdge: function fromEdge() { var swiper = this; if (!swiper.params.a11y.enabled) { return; } swiper.a11y.updateNavigation(); }, paginationUpdate: function paginationUpdate() { var swiper = this; if (!swiper.params.a11y.enabled) { return; } swiper.a11y.updatePagination(); }, destroy: function destroy() { var swiper = this; if (!swiper.params.a11y.enabled) { return; } swiper.a11y.destroy(); }, }, }; var History = { init: function init() { var swiper = this; if (!swiper.params.history) { return; } if (!win.history || !win.history.pushState) { swiper.params.history.enabled = false; swiper.params.hashNavigation.enabled = true; return; } var history = swiper.history; history.initialized = true; history.paths = History.getPathValues(); if (!history.paths.key && !history.paths.value) { return; } history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); if (!swiper.params.history.replaceState) { win.addEventListener('popstate', swiper.history.setHistoryPopState); } }, destroy: function destroy() { var swiper = this; if (!swiper.params.history.replaceState) { win.removeEventListener('popstate', swiper.history.setHistoryPopState); } }, setHistoryPopState: function setHistoryPopState() { var swiper = this; swiper.history.paths = History.getPathValues(); swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); }, getPathValues: function getPathValues() { var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; }); var total = pathArray.length; var key = pathArray[total - 2]; var value = pathArray[total - 1]; return { key: key, value: value }; }, setHistory: function setHistory(key, index) { var swiper = this; if (!swiper.history.initialized || !swiper.params.history.enabled) { return; } var slide = swiper.slides.eq(index); var value = History.slugify(slide.attr('data-history')); if (!win.location.pathname.includes(key)) { value = key + "/" + value; } var currentState = win.history.state; if (currentState && currentState.value === value) { return; } if (swiper.params.history.replaceState) { win.history.replaceState({ value: value }, null, value); } else { win.history.pushState({ value: value }, null, value); } }, slugify: function slugify(text) { return text.toString().toLowerCase() .replace(/\s+/g, '-') .replace(/[^\w-]+/g, '') .replace(/--+/g, '-') .replace(/^-+/, '') .replace(/-+$/, ''); }, scrollToSlide: function scrollToSlide(speed, value, runCallbacks) { var swiper = this; if (value) { for (var i = 0, length = swiper.slides.length; i '); $wrapperEl.append($cubeShadowEl); } $cubeShadowEl.css({ height: (swiperWidth + "px") }); } else { $cubeShadowEl = $el.find('.swiper-cube-shadow'); if ($cubeShadowEl.length === 0) { $cubeShadowEl = $('
    '); $el.append($cubeShadowEl); } } } for (var i = 0; i -1) { wrapperRotate = (slideIndex * 90) + (progress * 90); if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); } } $slideEl.transform(transform); if (params.slideShadows) { // Set shadows var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); if (shadowBefore.length === 0) { shadowBefore = $(("
    ")); $slideEl.append(shadowBefore); } if (shadowAfter.length === 0) { shadowAfter = $(("
    ")); $slideEl.append(shadowAfter); } if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } } } $wrapperEl.css({ '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), }); if (params.shadow) { if (isHorizontal) { $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")")); } else { var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); var multiplier = 1.5 - ( (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) ); var scale1 = params.shadowScale; var scale2 = params.shadowScale / multiplier; var offset = params.shadowOffset; $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)")); } } var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; $wrapperEl .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)")); }, setTransition: function setTransition(duration) { var swiper = this; var $el = swiper.$el; var slides = swiper.slides; slides .transition(duration) .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') .transition(duration); if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { $el.find('.swiper-cube-shadow').transition(duration); } }, }; var EffectCube = { name: 'effect-cube', params: { cubeEffect: { slideShadows: true, shadow: true, shadowOffset: 20, shadowScale: 0.94, }, }, create: function create() { var swiper = this; Utils.extend(swiper, { cubeEffect: { setTranslate: Cube.setTranslate.bind(swiper), setTransition: Cube.setTransition.bind(swiper), }, }); }, on: { beforeInit: function beforeInit() { var swiper = this; if (swiper.params.effect !== 'cube') { return; } swiper.classNames.push(((swiper.params.containerModifierClass) + "cube")); swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); var overwriteParams = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: true, resistanceRatio: 0, spaceBetween: 0, centeredSlides: false, virtualTranslate: true, }; Utils.extend(swiper.params, overwriteParams); Utils.extend(swiper.originalParams, overwriteParams); }, setTranslate: function setTranslate() { var swiper = this; if (swiper.params.effect !== 'cube') { return; } swiper.cubeEffect.setTranslate(); }, setTransition: function setTransition(duration) { var swiper = this; if (swiper.params.effect !== 'cube') { return; } swiper.cubeEffect.setTransition(duration); }, }, }; var Flip = { setTranslate: function setTranslate() { var swiper = this; var slides = swiper.slides; var rtl = swiper.rtlTranslate; for (var i = 0; i ")); $slideEl.append(shadowBefore); } if (shadowAfter.length === 0) { shadowAfter = $(("
    ")); $slideEl.append(shadowAfter); } if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } } $slideEl .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)")); } }, setTransition: function setTransition(duration) { var swiper = this; var slides = swiper.slides; var activeIndex = swiper.activeIndex; var $wrapperEl = swiper.$wrapperEl; slides .transition(duration) .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') .transition(duration); if (swiper.params.virtualTranslate && duration !== 0) { var eventTriggered = false; // eslint-disable-next-line slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { if (eventTriggered) { return; } if (!swiper || swiper.destroyed) { return; } // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; eventTriggered = true; swiper.animating = false; var triggerEvents = ['webkitTransitionEnd', 'transitionend']; for (var i = 0; i ")); $slideEl.append($shadowBeforeEl); } if ($shadowAfterEl.length === 0) { $shadowAfterEl = $(("
    ")); $slideEl.append($shadowAfterEl); } if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; } if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; } } } // Set correct perspective for IE10 if (Support.pointerEvents || Support.prefixedPointerEvents) { var ws = $wrapperEl[0].style; ws.perspectiveOrigin = center + "px 50%"; } }, setTransition: function setTransition(duration) { var swiper = this; swiper.slides .transition(duration) .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') .transition(duration); }, }; var EffectCoverflow = { name: 'effect-coverflow', params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: true, }, }, create: function create() { var swiper = this; Utils.extend(swiper, { coverflowEffect: { setTranslate: Coverflow.setTranslate.bind(swiper), setTransition: Coverflow.setTransition.bind(swiper), }, }); }, on: { beforeInit: function beforeInit() { var swiper = this; if (swiper.params.effect !== 'coverflow') { return; } swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow")); swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); swiper.params.watchSlidesProgress = true; swiper.originalParams.watchSlidesProgress = true; }, setTranslate: function setTranslate() { var swiper = this; if (swiper.params.effect !== 'coverflow') { return; } swiper.coverflowEffect.setTranslate(); }, setTransition: function setTransition(duration) { var swiper = this; if (swiper.params.effect !== 'coverflow') { return; } swiper.coverflowEffect.setTransition(duration); }, }, }; var Thumbs = { init: function init() { var swiper = this; var ref = swiper.params; var thumbsParams = ref.thumbs; var SwiperClass = swiper.constructor; if (thumbsParams.swiper instanceof SwiperClass) { swiper.thumbs.swiper = thumbsParams.swiper; Utils.extend(swiper.thumbs.swiper.originalParams, { watchSlidesProgress: true, slideToClickedSlide: false, }); Utils.extend(swiper.thumbs.swiper.params, { watchSlidesProgress: true, slideToClickedSlide: false, }); } else if (Utils.isObject(thumbsParams.swiper)) { swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { watchSlidesVisibility: true, watchSlidesProgress: true, slideToClickedSlide: false, })); swiper.thumbs.swiperCreated = true; } swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); }, onThumbClick: function onThumbClick() { var swiper = this; var thumbsSwiper = swiper.thumbs.swiper; if (!thumbsSwiper) { return; } var clickedIndex = thumbsSwiper.clickedIndex; var clickedSlide = thumbsSwiper.clickedSlide; if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; } if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; } var slideToIndex; if (thumbsSwiper.params.loop) { slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); } else { slideToIndex = clickedIndex; } if (swiper.params.loop) { var currentIndex = swiper.activeIndex; if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { swiper.loopFix(); // eslint-disable-next-line swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; currentIndex = swiper.activeIndex; } var prevIndex = swiper.slides.eq(currentIndex).prevalsl(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); var nextIndex = swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; } else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; } else if (nextIndex - currentIndex currentThumbsIndex) { newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; } else { newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; } } else if (newThumbsIndex > currentThumbsIndex) { newThumbsIndex = newThumbsIndex - slidesPerView + 1; } thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); } } // Activate thumbs var thumbsToActivate = 1; var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { thumbsToActivate = swiper.params.slidesPerView; } thumbsSwiper.slides.removeClass(thumbActiveClass); if (thumbsSwiper.params.loop) { for (var i = 0; i
  •   快猫免费破解版新版-有没有人有快猫链接-快猫网址是多少  快猫成年短视频-快猫在线网址-快猫福利导航  快猫成人app-快猫成人破解版-快猫在线看