{"version":3,"file":"core-DUCvAbvz.js","sources":["../../../node_modules/ssr-window/ssr-window.esm.js","../../../node_modules/dom7/dom7.esm.js","../../../node_modules/swiper/shared/dom.js","../../../node_modules/swiper/shared/utils.js","../../../node_modules/swiper/shared/get-support.js","../../../node_modules/swiper/shared/get-device.js","../../../node_modules/swiper/shared/get-browser.js","../../../node_modules/swiper/core/transition/transitionEmit.js","../../../node_modules/swiper/core/events/onTouchStart.js","../../../node_modules/swiper/core/events/onTouchMove.js","../../../node_modules/swiper/core/events/onTouchEnd.js","../../../node_modules/swiper/core/events/onResize.js","../../../node_modules/swiper/core/events/onClick.js","../../../node_modules/swiper/core/events/onScroll.js","../../../node_modules/swiper/core/events/index.js","../../../node_modules/swiper/core/breakpoints/setBreakpoint.js","../../../node_modules/swiper/core/check-overflow/index.js","../../../node_modules/swiper/core/defaults.js","../../../node_modules/swiper/core/moduleExtendParams.js","../../../node_modules/swiper/core/core.js","../../../node_modules/swiper/core/events-emitter.js","../../../node_modules/swiper/core/update/index.js","../../../node_modules/swiper/core/update/updateSize.js","../../../node_modules/swiper/core/update/updateSlides.js","../../../node_modules/swiper/core/update/updateAutoHeight.js","../../../node_modules/swiper/core/update/updateSlidesOffset.js","../../../node_modules/swiper/core/update/updateSlidesProgress.js","../../../node_modules/swiper/core/update/updateProgress.js","../../../node_modules/swiper/core/update/updateSlidesClasses.js","../../../node_modules/swiper/core/update/updateActiveIndex.js","../../../node_modules/swiper/core/update/updateClickedSlide.js","../../../node_modules/swiper/core/translate/index.js","../../../node_modules/swiper/core/translate/getTranslate.js","../../../node_modules/swiper/core/translate/setTranslate.js","../../../node_modules/swiper/core/translate/minTranslate.js","../../../node_modules/swiper/core/translate/maxTranslate.js","../../../node_modules/swiper/core/translate/translateTo.js","../../../node_modules/swiper/core/transition/index.js","../../../node_modules/swiper/core/transition/setTransition.js","../../../node_modules/swiper/core/transition/transitionStart.js","../../../node_modules/swiper/core/transition/transitionEnd.js","../../../node_modules/swiper/core/slide/index.js","../../../node_modules/swiper/core/slide/slideTo.js","../../../node_modules/swiper/core/slide/slideToLoop.js","../../../node_modules/swiper/core/slide/slideNext.js","../../../node_modules/swiper/core/slide/slidePrev.js","../../../node_modules/swiper/core/slide/slideReset.js","../../../node_modules/swiper/core/slide/slideToClosest.js","../../../node_modules/swiper/core/slide/slideToClickedSlide.js","../../../node_modules/swiper/core/loop/index.js","../../../node_modules/swiper/core/loop/loopCreate.js","../../../node_modules/swiper/core/loop/loopFix.js","../../../node_modules/swiper/core/loop/loopDestroy.js","../../../node_modules/swiper/core/grab-cursor/index.js","../../../node_modules/swiper/core/grab-cursor/setGrabCursor.js","../../../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../../../node_modules/swiper/core/breakpoints/index.js","../../../node_modules/swiper/core/breakpoints/getBreakpoint.js","../../../node_modules/swiper/core/classes/index.js","../../../node_modules/swiper/core/classes/addClasses.js","../../../node_modules/swiper/core/classes/removeClasses.js","../../../node_modules/swiper/core/images/index.js","../../../node_modules/swiper/core/images/loadImage.js","../../../node_modules/swiper/core/images/preloadImages.js","../../../node_modules/swiper/core/modules/resize/resize.js","../../../node_modules/swiper/core/modules/observer/observer.js"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\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 Object.keys(src).forEach((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\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst 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() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\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 } // Set attrs\n\n\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 for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\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\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\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\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\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\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\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\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\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\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\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}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\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\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\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\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\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\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\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};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.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 (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\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 windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\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; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\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; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\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\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\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\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\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\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 } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\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; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n 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\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\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 (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\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 let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\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\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !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 } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\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 extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\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}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\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 // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // 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 // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\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 swiper.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 focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\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\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 // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\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\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\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\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\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 return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n 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 installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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 (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === 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 || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\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\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n 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 let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\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 slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\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 prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\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\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 Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(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 && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\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 } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\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 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\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\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\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\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n 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\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\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;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\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\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\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}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function 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}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\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 const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\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\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\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\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function 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 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\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n 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.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\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\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\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 = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\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 emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\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 observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","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","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","Methods","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","hasClass","className","contains","toggleClass","toggle","attr","attrs","arguments","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","to","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","toLowerCase","isWebView","test","calcBrowser","methodName","writable","transitionEmit","runCallbacks","direction","step","activeIndex","previousIndex","emit","onTouchStart","touchEventsData","touches","enabled","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","assign","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","rtlTranslate","rtl","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","abs","touchMoveStopPropagation","nested","stopPropagation","startTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","updateProgress","setTranslate","onTouchEnd","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","destroyed","currentPos","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","rewind","isBeginning","virtual","slides","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","slidesPerView","centeredSlides","autoplay","running","paused","run","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","method","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","isGridEnabled","grid","rows","defaults","init","initialSlide","resizeObserver","createElements","url","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopedSlidesLimit","loopFillGroupWithBlank","loopPreventsSlide","maxBackfaceHiddenSlides","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","priority","self","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","update","$el","clientWidth","clientHeight","parseInt","Number","isNaN","size","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","realIndex","activeSlide","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","initialized","slideFound","clickedSlide","clickedIndex","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionStart","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","options","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65]}