Няма описание

851.7ada53df.chunk.js.map 337KB

1
  1. {"version":3,"file":"static/js/851.7ada53df.chunk.js","mappings":"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","sources":["../node_modules/@ionic/core/components/swiper.bundle.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n};\nextend(win, ssrWindow);\n\n/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n tempParent = doc.createElement(toCreate);\n tempParent.innerHTML = html;\n for (i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n // Pure ID selector\n els = [doc.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || doc).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === win || selector === doc) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = doc.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = doc.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === win ? win.scrollY : el.scrollTop;\n const scrollLeft = el === win ? win.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction styles() {\n if (this[0]) return win.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return win.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === doc) return el === doc;\n else if (selector === win) return el === win;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\n\n/**\n * Swiper 5.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://swiperjs.com\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: May 20, 2020\n */\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition: transition,\n on,\n off,\n trigger,\n transitionEnd: transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = win.getComputedStyle(el, null);\n\n if (win.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || win.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\n\nconst Support = (function Support() {\n return {\n touch: !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)),\n\n pointerEvents: !!win.PointerEvent && ('maxTouchPoints' in win.navigator) && win.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n win.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in win;\n }()),\n };\n}());\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nfunction updateSize () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n\nfunction updateSlides () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = win.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n\nfunction updateAutoHeight (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\nfunction updateProgress (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nfunction translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n\nfunction setTransition (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n\nfunction transitionEnd$1 (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n\nvar transition$1 = {\n setTransition,\n transitionStart,\n transitionEnd: transitionEnd$1,\n};\n\nfunction slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nfunction slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n slidesGrid.map((val) => normalize(val));\n\n snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n\nfunction loopCreate () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(doc.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\nfunction loopFix () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n\nfunction prependSlide (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n\nconst Device = (function Device() {\n const platform = win.navigator.platform;\n const ua = win.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(win.cordova || win.phonegap),\n phonegap: !!(win.cordova || win.phonegap),\n electron: false,\n };\n\n const screenWidth = win.screen.width;\n const screenHeight = win.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone))\n || (win.matchMedia && win.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = win.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nfunction onTouchStart (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= win.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n doc.activeElement\n && $(doc.activeElement).is(data.formElements)\n && doc.activeElement !== $targetEl[0]\n ) {\n doc.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && doc.activeElement) {\n if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n doc.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n doc.addEventListener('mousemove', swiper.onTouchMove, capture);\n doc.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n doc.removeEventListener('mousemove', swiper.onTouchMove, capture);\n doc.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n attachEvents,\n detachEvents,\n};\n\nfunction setBreakpoint () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n\nfunction getBreakpoint (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = win.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= win.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nfunction addClasses () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new win.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n\nfunction preloadImages () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n\nvar images = {\n loadImage,\n preloadImages,\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n\n/* eslint no-param-reassign: \"off\" */\n\nconst prototypes = {\n update,\n translate,\n transition: transition$1,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = win.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!win.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),\n };\n}());\n\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n\nvar Resize = {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n win.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n win.removeEventListener('resize', swiper.resize.resizeHandler);\n win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: win.MutationObserver || win.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(observerUpdate);\n } else {\n win.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = win.innerWidth;\n const windowHeight = win.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(doc).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(doc).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar keyboard = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in doc;\n\n if (!isSupported) {\n const element = doc.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && doc.implementation\n && doc.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && doc.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (win.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>`\n + ' / '\n + `<span class=\"${params.totalClass}\"></span>`;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nvar pagination = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nvar scrollbar = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nvar zoom = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nvar autoplay = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n\n// Swiper Class\n\nconst components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nSwiper.use([pagination, scrollbar, autoplay, keyboard, zoom]);\n\nexport { Swiper };\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","doc","document","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","window","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","arr","i","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","fn","prototype","Class","Methods","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments","getAttribute","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","call","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","matchedItems","removeChild","toAdd","methodName","Utils","deleteProps","object","nextTick","delay","now","getTranslate","matrix","curTransform","transformMatrix","axis","curStyle","WebKitCSSMatrix","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","paramsPart","decodeURIComponent","o","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","defineProperty","get","gestures","SwiperClass","self","eventsListeners","eventName","priority","method","onceHandler","f7proxy","eventHandler","Array","isArray","slice","eventsArray","instanceParams","instance","modules","moduleName","module","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","components","use","name","proto","static","install","m","installModule","update","updateSize","width","height","swiper","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","emit","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","isVisible","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","onTranslateToWrapperTransitionEnd","destroyed","transition$1","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","toLowerCase","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","once","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","defaults","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","attachEvents","touchEvents","start","move","end","passive","cancel","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","b","innerWidth","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isUiWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","destroy","Observer","func","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Keyboard","handle","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","element","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","ignoreWheelEvents","sensitivity","timeout","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","raw","animateSlider","releaseScroll","getTime","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","lockClass","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","hideOnClick","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","click","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$slideEl","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","currentScale","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","set","touchStart","touchEnd","doubleTap","slideChange","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove"],"sourceRoot":""}