{"version":3,"file":"js/5491-c6ebae1b6747b36ce8c2.js","mappings":"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","sources":["webpack://titan/./node_modules/lazysizes/lazysizes.js","webpack://titan/./node_modules/smoothscroll-polyfill/dist/smoothscroll.js","webpack://titan/./node_modules/store/dist/store.legacy.js","webpack://titan/./node_modules/store/plugins/json2.js","webpack://titan/./node_modules/store/plugins/lib/json2.js","webpack://titan/./node_modules/store/src/store-engine.js","webpack://titan/./node_modules/store/src/util.js","webpack://titan/./node_modules/store/storages/all.js","webpack://titan/./node_modules/store/storages/cookieStorage.js","webpack://titan/./node_modules/store/storages/localStorage.js","webpack://titan/./node_modules/store/storages/memoryStorage.js","webpack://titan/./node_modules/store/storages/oldFF-globalStorage.js","webpack://titan/./node_modules/store/storages/oldIE-userDataStorage.js","webpack://titan/./node_modules/store/storages/sessionStorage.js","webpack://titan/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://titan/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://titan/./node_modules/swiper/shared/utils.mjs","webpack://titan/./node_modules/swiper/shared/swiper-core.mjs","webpack://titan/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://titan/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://titan/./node_modules/swiper/modules/manipulation.mjs","webpack://titan/./node_modules/swiper/shared/effect-init.mjs","webpack://titan/./node_modules/swiper/shared/effect-target.mjs","webpack://titan/./node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://titan/./node_modules/swiper/shared/create-shadow.mjs","webpack://titan/./node_modules/swiper/swiper-bundle.mjs","webpack://titan/./node_modules/swiper/modules/virtual.mjs","webpack://titan/./node_modules/swiper/modules/keyboard.mjs","webpack://titan/./node_modules/swiper/modules/mousewheel.mjs","webpack://titan/./node_modules/swiper/modules/navigation.mjs","webpack://titan/./node_modules/swiper/modules/pagination.mjs","webpack://titan/./node_modules/swiper/modules/scrollbar.mjs","webpack://titan/./node_modules/swiper/modules/parallax.mjs","webpack://titan/./node_modules/swiper/modules/zoom.mjs","webpack://titan/./node_modules/swiper/modules/controller.mjs","webpack://titan/./node_modules/swiper/modules/a11y.mjs","webpack://titan/./node_modules/swiper/modules/history.mjs","webpack://titan/./node_modules/swiper/modules/hash-navigation.mjs","webpack://titan/./node_modules/swiper/modules/autoplay.mjs","webpack://titan/./node_modules/swiper/modules/thumbs.mjs","webpack://titan/./node_modules/swiper/modules/free-mode.mjs","webpack://titan/./node_modules/swiper/modules/grid.mjs","webpack://titan/./node_modules/swiper/modules/effect-fade.mjs","webpack://titan/./node_modules/swiper/modules/effect-cube.mjs","webpack://titan/./node_modules/swiper/modules/effect-flip.mjs","webpack://titan/./node_modules/swiper/modules/effect-coverflow.mjs","webpack://titan/./node_modules/swiper/modules/effect-creative.mjs","webpack://titan/./node_modules/swiper/modules/effect-cards.mjs","webpack://titan/./node_modules/swiper/shared/update-swiper.mjs","webpack://titan/./node_modules/swiper/shared/get-element-params.mjs","webpack://titan/./node_modules/swiper/swiper-element-bundle.mjs"],"sourcesContent":["(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = { polyfill: polyfill };\n } else {\n // global\n polyfill();\n }\n\n}());\n","var engine = require('../src/store-engine')\n\nvar storages = require('../storages/all')\nvar plugins = [require('../plugins/json2')]\n\nmodule.exports = engine.createStore(storages, plugins)\n","module.exports = json2Plugin\n\nfunction json2Plugin() {\n\trequire('./lib/json2')\n\treturn {}\n}\n","/* eslint-disable */\n\n// json2.js\n// 2016-10-28\n// Public Domain.\n// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n// See http://www.JSON.org/js.html\n// This code should be minified before deployment.\n// See http://javascript.crockford.com/jsmin.html\n\n// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n// NOT CONTROL.\n\n// This file creates a global JSON object containing two methods: stringify\n// and parse. This file provides the ES5 JSON capability to ES3 systems.\n// If a project might run on IE8 or earlier, then this file should be included.\n// This file does nothing on ES5 systems.\n\n// JSON.stringify(value, replacer, space)\n// value any JavaScript value, usually an object or array.\n// replacer an optional parameter that determines how object\n// values are stringified for objects. It can be a\n// function or an array of strings.\n// space an optional parameter that specifies the indentation\n// of nested structures. If it is omitted, the text will\n// be packed without extra whitespace. If it is a number,\n// it will specify the number of spaces to indent at each\n// level. If it is a string (such as \"\\t\" or \" \"),\n// it contains the characters used to indent at each level.\n// This method produces a JSON text from a JavaScript value.\n// When an object value is found, if the object contains a toJSON\n// method, its toJSON method will be called and the result will be\n// stringified. A toJSON method does not serialize: it returns the\n// value represented by the name/value pair that should be serialized,\n// or undefined if nothing should be serialized. The toJSON method\n// will be passed the key associated with the value, and this will be\n// bound to the value.\n\n// For example, this would serialize Dates as ISO strings.\n\n// Date.prototype.toJSON = function (key) {\n// function f(n) {\n// // Format integers to have at least two digits.\n// return (n < 10)\n// ? \"0\" + n\n// : n;\n// }\n// return this.getUTCFullYear() + \"-\" +\n// f(this.getUTCMonth() + 1) + \"-\" +\n// f(this.getUTCDate()) + \"T\" +\n// f(this.getUTCHours()) + \":\" +\n// f(this.getUTCMinutes()) + \":\" +\n// f(this.getUTCSeconds()) + \"Z\";\n// };\n\n// You can provide an optional replacer method. It will be passed the\n// key and value of each member, with this bound to the containing\n// object. The value that is returned from your method will be\n// serialized. If your method returns undefined, then the member will\n// be excluded from the serialization.\n\n// If the replacer parameter is an array of strings, then it will be\n// used to select the members to be serialized. It filters the results\n// such that only members with keys listed in the replacer array are\n// stringified.\n\n// Values that do not have JSON representations, such as undefined or\n// functions, will not be serialized. Such values in objects will be\n// dropped; in arrays they will be replaced with null. You can use\n// a replacer function to replace those with JSON values.\n\n// JSON.stringify(undefined) returns undefined.\n\n// The optional space parameter produces a stringification of the\n// value that is filled with line breaks and indentation to make it\n// easier to read.\n\n// If the space parameter is a non-empty string, then that string will\n// be used for indentation. If the space parameter is a number, then\n// the indentation will be that many spaces.\n\n// Example:\n\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}]);\n// // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}], null, \"\\t\");\n// // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n// text = JSON.stringify([new Date()], function (key, value) {\n// return this[key] instanceof Date\n// ? \"Date(\" + this[key] + \")\"\n// : value;\n// });\n// // text is '[\"Date(---current time---)\"]'\n\n// JSON.parse(text, reviver)\n// This method parses a JSON text to produce an object or array.\n// It can throw a SyntaxError exception.\n\n// The optional reviver parameter is a function that can filter and\n// transform the results. It receives each of the keys and values,\n// and its return value is used instead of the original value.\n// If it returns what it received, then the structure is not modified.\n// If it returns undefined then the member is deleted.\n\n// Example:\n\n// // Parse the text. Values that look like ISO date strings will\n// // be converted to Date objects.\n\n// myData = JSON.parse(text, function (key, value) {\n// var a;\n// if (typeof value === \"string\") {\n// a =\n// /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n// if (a) {\n// return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n// +a[5], +a[6]));\n// }\n// }\n// return value;\n// });\n\n// myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n// var d;\n// if (typeof value === \"string\" &&\n// value.slice(0, 5) === \"Date(\" &&\n// value.slice(-1) === \")\") {\n// d = new Date(value.slice(5, -1));\n// if (d) {\n// return d;\n// }\n// }\n// return value;\n// });\n\n// This is a reference implementation. You are free to copy, modify, or\n// redistribute.\n\n/*jslint\n eval, for, this\n*/\n\n/*property\n JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n lastIndex, length, parse, prototype, push, replace, slice, stringify,\n test, toJSON, toString, valueOf\n*/\n\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\nif (typeof JSON !== \"object\") {\n JSON = {};\n}\n\n(function () {\n \"use strict\";\n\n var rx_one = /^[\\],:{}\\s]*$/;\n var rx_two = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g;\n var rx_three = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\n var rx_four = /(?:^|:|,)(?:\\s*\\[)+/g;\n var rx_escapable = /[\\\\\"\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n var rx_dangerous = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10\n ? \"0\" + n\n : n;\n }\n\n function this_value() {\n return this.valueOf();\n }\n\n if (typeof Date.prototype.toJSON !== \"function\") {\n\n Date.prototype.toJSON = function () {\n\n return isFinite(this.valueOf())\n ? this.getUTCFullYear() + \"-\" +\n f(this.getUTCMonth() + 1) + \"-\" +\n f(this.getUTCDate()) + \"T\" +\n f(this.getUTCHours()) + \":\" +\n f(this.getUTCMinutes()) + \":\" +\n f(this.getUTCSeconds()) + \"Z\"\n : null;\n };\n\n Boolean.prototype.toJSON = this_value;\n Number.prototype.toJSON = this_value;\n String.prototype.toJSON = this_value;\n }\n\n var gap;\n var indent;\n var meta;\n var rep;\n\n\n function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n rx_escapable.lastIndex = 0;\n return rx_escapable.test(string)\n ? \"\\\"\" + string.replace(rx_escapable, function (a) {\n var c = meta[a];\n return typeof c === \"string\"\n ? c\n : \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\"\n : \"\\\"\" + string + \"\\\"\";\n }\n\n\n function str(key, holder) {\n\n// Produce a string from holder[key].\n\n var i; // The loop counter.\n var k; // The member key.\n var v; // The member value.\n var length;\n var mind = gap;\n var partial;\n var value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && typeof value === \"object\" &&\n typeof value.toJSON === \"function\") {\n value = value.toJSON(key);\n }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n if (typeof rep === \"function\") {\n value = rep.call(holder, key, value);\n }\n\n// What happens next depends on the value's type.\n\n switch (typeof value) {\n case \"string\":\n return quote(value);\n\n case \"number\":\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n return isFinite(value)\n ? String(value)\n : \"null\";\n\n case \"boolean\":\n case \"null\":\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce \"null\". The case is included here in\n// the remote chance that this gets fixed someday.\n\n return String(value);\n\n// If the type is \"object\", we might be dealing with an object or an array or\n// null.\n\n case \"object\":\n\n// Due to a specification blunder in ECMAScript, typeof null is \"object\",\n// so watch out for that case.\n\n if (!value) {\n return \"null\";\n }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n gap += indent;\n partial = [];\n\n// Is the value an array?\n\n if (Object.prototype.toString.apply(value) === \"[object Array]\") {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || \"null\";\n }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n v = partial.length === 0\n ? \"[]\"\n : gap\n ? \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\"\n : \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n if (rep && typeof rep === \"object\") {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === \"string\") {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (\n gap\n ? \": \"\n : \":\"\n ) + v);\n }\n }\n }\n } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (\n gap\n ? \": \"\n : \":\"\n ) + v);\n }\n }\n }\n }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n v = partial.length === 0\n ? \"{}\"\n : gap\n ? \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\"\n : \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n if (typeof JSON.stringify !== \"function\") {\n meta = { // table of character substitutions\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": \"\\\\\\\"\",\n \"\\\\\": \"\\\\\\\\\"\n };\n JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n var i;\n gap = \"\";\n indent = \"\";\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n if (typeof space === \"number\") {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n } else if (typeof space === \"string\") {\n indent = space;\n }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n rep = replacer;\n if (replacer && typeof replacer !== \"function\" &&\n (typeof replacer !== \"object\" ||\n typeof replacer.length !== \"number\")) {\n throw new Error(\"JSON.stringify\");\n }\n\n// Make a fake root object containing our value under the key of \"\".\n// Return the result of stringifying the value.\n\n return str(\"\", {\"\": value});\n };\n }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n if (typeof JSON.parse !== \"function\") {\n JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n var j;\n\n function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n var k;\n var v;\n var value = holder[key];\n if (value && typeof value === \"object\") {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n text = String(text);\n rx_dangerous.lastIndex = 0;\n if (rx_dangerous.test(text)) {\n text = text.replace(rx_dangerous, function (a) {\n return \"\\\\u\" +\n (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n });\n }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with \"()\" and \"new\"\n// because they can cause invocation, and \"=\" because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with \"@\" (a non-JSON character). Second, we\n// replace all simple value tokens with \"]\" characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or \"]\" or\n// \",\" or \":\" or \"{\" or \"}\". If that is so, then the text is safe for eval.\n\n if (\n rx_one.test(\n text\n .replace(rx_two, \"@\")\n .replace(rx_three, \"]\")\n .replace(rx_four, \"\")\n )\n ) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The \"{\" operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n j = eval(\"(\" + text + \")\");\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n return (typeof reviver === \"function\")\n ? walk({\"\": j}, \"\")\n : j;\n }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n throw new SyntaxError(\"JSON.parse\");\n };\n }\n}());","var util = require('./util')\nvar slice = util.slice\nvar pluck = util.pluck\nvar each = util.each\nvar bind = util.bind\nvar create = util.create\nvar isList = util.isList\nvar isFunction = util.isFunction\nvar isObject = util.isObject\n\nmodule.exports = {\n\tcreateStore: createStore\n}\n\nvar storeAPI = {\n\tversion: '2.0.12',\n\tenabled: false,\n\t\n\t// get returns the value of the given key. If that value\n\t// is undefined, it returns optionalDefaultValue instead.\n\tget: function(key, optionalDefaultValue) {\n\t\tvar data = this.storage.read(this._namespacePrefix + key)\n\t\treturn this._deserialize(data, optionalDefaultValue)\n\t},\n\n\t// set will store the given value at key and returns value.\n\t// Calling set with value === undefined is equivalent to calling remove.\n\tset: function(key, value) {\n\t\tif (value === undefined) {\n\t\t\treturn this.remove(key)\n\t\t}\n\t\tthis.storage.write(this._namespacePrefix + key, this._serialize(value))\n\t\treturn value\n\t},\n\n\t// remove deletes the key and value stored at the given key.\n\tremove: function(key) {\n\t\tthis.storage.remove(this._namespacePrefix + key)\n\t},\n\n\t// each will call the given callback once for each key-value pair\n\t// in this store.\n\teach: function(callback) {\n\t\tvar self = this\n\t\tthis.storage.each(function(val, namespacedKey) {\n\t\t\tcallback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))\n\t\t})\n\t},\n\n\t// clearAll will remove all the stored key-value pairs in this store.\n\tclearAll: function() {\n\t\tthis.storage.clearAll()\n\t},\n\n\t// additional functionality that can't live in plugins\n\t// ---------------------------------------------------\n\n\t// hasNamespace returns true if this store instance has the given namespace.\n\thasNamespace: function(namespace) {\n\t\treturn (this._namespacePrefix == '__storejs_'+namespace+'_')\n\t},\n\n\t// createStore creates a store.js instance with the first\n\t// functioning storage in the list of storage candidates,\n\t// and applies the the given mixins to the instance.\n\tcreateStore: function() {\n\t\treturn createStore.apply(this, arguments)\n\t},\n\t\n\taddPlugin: function(plugin) {\n\t\tthis._addPlugin(plugin)\n\t},\n\t\n\tnamespace: function(namespace) {\n\t\treturn createStore(this.storage, this.plugins, namespace)\n\t}\n}\n\nfunction _warn() {\n\tvar _console = (typeof console == 'undefined' ? null : console)\n\tif (!_console) { return }\n\tvar fn = (_console.warn ? _console.warn : _console.log)\n\tfn.apply(_console, arguments)\n}\n\nfunction createStore(storages, plugins, namespace) {\n\tif (!namespace) {\n\t\tnamespace = ''\n\t}\n\tif (storages && !isList(storages)) {\n\t\tstorages = [storages]\n\t}\n\tif (plugins && !isList(plugins)) {\n\t\tplugins = [plugins]\n\t}\n\n\tvar namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')\n\tvar namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)\n\tvar legalNamespaces = /^[a-zA-Z0-9_\\-]*$/ // alpha-numeric + underscore and dash\n\tif (!legalNamespaces.test(namespace)) {\n\t\tthrow new Error('store.js namespaces can only have alphanumerics + underscores and dashes')\n\t}\n\t\n\tvar _privateStoreProps = {\n\t\t_namespacePrefix: namespacePrefix,\n\t\t_namespaceRegexp: namespaceRegexp,\n\n\t\t_testStorage: function(storage) {\n\t\t\ttry {\n\t\t\t\tvar testStr = '__storejs__test__'\n\t\t\t\tstorage.write(testStr, testStr)\n\t\t\t\tvar ok = (storage.read(testStr) === testStr)\n\t\t\t\tstorage.remove(testStr)\n\t\t\t\treturn ok\n\t\t\t} catch(e) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\t_assignPluginFnProp: function(pluginFnProp, propName) {\n\t\t\tvar oldFn = this[propName]\n\t\t\tthis[propName] = function pluginFn() {\n\t\t\t\tvar args = slice(arguments, 0)\n\t\t\t\tvar self = this\n\n\t\t\t\t// super_fn calls the old function which was overwritten by\n\t\t\t\t// this mixin.\n\t\t\t\tfunction super_fn() {\n\t\t\t\t\tif (!oldFn) { return }\n\t\t\t\t\teach(arguments, function(arg, i) {\n\t\t\t\t\t\targs[i] = arg\n\t\t\t\t\t})\n\t\t\t\t\treturn oldFn.apply(self, args)\n\t\t\t\t}\n\n\t\t\t\t// Give mixing function access to super_fn by prefixing all mixin function\n\t\t\t\t// arguments with super_fn.\n\t\t\t\tvar newFnArgs = [super_fn].concat(args)\n\n\t\t\t\treturn pluginFnProp.apply(self, newFnArgs)\n\t\t\t}\n\t\t},\n\n\t\t_serialize: function(obj) {\n\t\t\treturn JSON.stringify(obj)\n\t\t},\n\n\t\t_deserialize: function(strVal, defaultVal) {\n\t\t\tif (!strVal) { return defaultVal }\n\t\t\t// It is possible that a raw string value has been previously stored\n\t\t\t// in a storage without using store.js, meaning it will be a raw\n\t\t\t// string value instead of a JSON serialized string. By defaulting\n\t\t\t// to the raw string value in case of a JSON parse error, we allow\n\t\t\t// for past stored values to be forwards-compatible with store.js\n\t\t\tvar val = ''\n\t\t\ttry { val = JSON.parse(strVal) }\n\t\t\tcatch(e) { val = strVal }\n\n\t\t\treturn (val !== undefined ? val : defaultVal)\n\t\t},\n\t\t\n\t\t_addStorage: function(storage) {\n\t\t\tif (this.enabled) { return }\n\t\t\tif (this._testStorage(storage)) {\n\t\t\t\tthis.storage = storage\n\t\t\t\tthis.enabled = true\n\t\t\t}\n\t\t},\n\n\t\t_addPlugin: function(plugin) {\n\t\t\tvar self = this\n\n\t\t\t// If the plugin is an array, then add all plugins in the array.\n\t\t\t// This allows for a plugin to depend on other plugins.\n\t\t\tif (isList(plugin)) {\n\t\t\t\teach(plugin, function(plugin) {\n\t\t\t\t\tself._addPlugin(plugin)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Keep track of all plugins we've seen so far, so that we\n\t\t\t// don't add any of them twice.\n\t\t\tvar seenPlugin = pluck(this.plugins, function(seenPlugin) {\n\t\t\t\treturn (plugin === seenPlugin)\n\t\t\t})\n\t\t\tif (seenPlugin) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.plugins.push(plugin)\n\n\t\t\t// Check that the plugin is properly formed\n\t\t\tif (!isFunction(plugin)) {\n\t\t\t\tthrow new Error('Plugins must be function values that return objects')\n\t\t\t}\n\n\t\t\tvar pluginProperties = plugin.call(this)\n\t\t\tif (!isObject(pluginProperties)) {\n\t\t\t\tthrow new Error('Plugins must return an object of function properties')\n\t\t\t}\n\n\t\t\t// Add the plugin function properties to this store instance.\n\t\t\teach(pluginProperties, function(pluginFnProp, propName) {\n\t\t\t\tif (!isFunction(pluginFnProp)) {\n\t\t\t\t\tthrow new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')\n\t\t\t\t}\n\t\t\t\tself._assignPluginFnProp(pluginFnProp, propName)\n\t\t\t})\n\t\t},\n\t\t\n\t\t// Put deprecated properties in the private API, so as to not expose it to accidential\n\t\t// discovery through inspection of the store object.\n\t\t\n\t\t// Deprecated: addStorage\n\t\taddStorage: function(storage) {\n\t\t\t_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')\n\t\t\tthis._addStorage(storage)\n\t\t}\n\t}\n\n\tvar store = create(_privateStoreProps, storeAPI, {\n\t\tplugins: []\n\t})\n\tstore.raw = {}\n\teach(store, function(prop, propName) {\n\t\tif (isFunction(prop)) {\n\t\t\tstore.raw[propName] = bind(store, prop)\t\t\t\n\t\t}\n\t})\n\teach(storages, function(storage) {\n\t\tstore._addStorage(storage)\n\t})\n\teach(plugins, function(plugin) {\n\t\tstore._addPlugin(plugin)\n\t})\n\treturn store\n}\n","var assign = make_assign()\nvar create = make_create()\nvar trim = make_trim()\nvar Global = (typeof window !== 'undefined' ? window : global)\n\nmodule.exports = {\n\tassign: assign,\n\tcreate: create,\n\ttrim: trim,\n\tbind: bind,\n\tslice: slice,\n\teach: each,\n\tmap: map,\n\tpluck: pluck,\n\tisList: isList,\n\tisFunction: isFunction,\n\tisObject: isObject,\n\tGlobal: Global\n}\n\nfunction make_assign() {\n\tif (Object.assign) {\n\t\treturn Object.assign\n\t} else {\n\t\treturn function shimAssign(obj, props1, props2, etc) {\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\teach(Object(arguments[i]), function(val, key) {\n\t\t\t\t\tobj[key] = val\n\t\t\t\t})\n\t\t\t}\t\t\t\n\t\t\treturn obj\n\t\t}\n\t}\n}\n\nfunction make_create() {\n\tif (Object.create) {\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\treturn assign.apply(this, [Object.create(obj)].concat(assignArgsList))\n\t\t}\n\t} else {\n\t\tfunction F() {} // eslint-disable-line no-inner-declarations\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\tF.prototype = obj\n\t\t\treturn assign.apply(this, [new F()].concat(assignArgsList))\n\t\t}\n\t}\n}\n\nfunction make_trim() {\n\tif (String.prototype.trim) {\n\t\treturn function trim(str) {\n\t\t\treturn String.prototype.trim.call(str)\n\t\t}\n\t} else {\n\t\treturn function trim(str) {\n\t\t\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n\t\t}\n\t}\n}\n\nfunction bind(obj, fn) {\n\treturn function() {\n\t\treturn fn.apply(obj, Array.prototype.slice.call(arguments, 0))\n\t}\n}\n\nfunction slice(arr, index) {\n\treturn Array.prototype.slice.call(arr, index || 0)\n}\n\nfunction each(obj, fn) {\n\tpluck(obj, function(val, key) {\n\t\tfn(val, key)\n\t\treturn false\n\t})\n}\n\nfunction map(obj, fn) {\n\tvar res = (isList(obj) ? [] : {})\n\tpluck(obj, function(v, k) {\n\t\tres[k] = fn(v, k)\n\t\treturn false\n\t})\n\treturn res\n}\n\nfunction pluck(obj, fn) {\n\tif (isList(obj)) {\n\t\tfor (var i=0; i= 0; i--) {\n\t\tif (!trim(cookies[i])) {\n\t\t\tcontinue\n\t\t}\n\t\tvar kvp = cookies[i].split('=')\n\t\tvar key = unescape(kvp[0])\n\t\tvar val = unescape(kvp[1])\n\t\tcallback(val, key)\n\t}\n}\n\nfunction write(key, data) {\n\tif(!key) { return }\n\tdoc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\"\n}\n\nfunction remove(key) {\n\tif (!key || !_has(key)) {\n\t\treturn\n\t}\n\tdoc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\"\n}\n\nfunction clearAll() {\n\teach(function(_, key) {\n\t\tremove(key)\n\t})\n}\n\nfunction _has(key) {\n\treturn (new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(doc.cookie)\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'localStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nfunction localStorage() {\n\treturn Global.localStorage\n}\n\nfunction read(key) {\n\treturn localStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn localStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = localStorage().length - 1; i >= 0; i--) {\n\t\tvar key = localStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn localStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn localStorage().clear()\n}\n","// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\n\nmodule.exports = {\n\tname: 'memoryStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar memoryStorage = {}\n\nfunction read(key) {\n\treturn memoryStorage[key]\n}\n\nfunction write(key, data) {\n\tmemoryStorage[key] = data\n}\n\nfunction each(callback) {\n\tfor (var key in memoryStorage) {\n\t\tif (memoryStorage.hasOwnProperty(key)) {\n\t\t\tcallback(memoryStorage[key], key)\n\t\t}\n\t}\n}\n\nfunction remove(key) {\n\tdelete memoryStorage[key]\n}\n\nfunction clearAll(key) {\n\tmemoryStorage = {}\n}\n","// oldFF-globalStorage provides storage for Firefox\n// versions 6 and 7, where no localStorage, etc\n// is available.\n\nvar util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'oldFF-globalStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar globalStorage = Global.globalStorage\n\nfunction read(key) {\n\treturn globalStorage[key]\n}\n\nfunction write(key, data) {\n\tglobalStorage[key] = data\n}\n\nfunction each(fn) {\n\tfor (var i = globalStorage.length - 1; i >= 0; i--) {\n\t\tvar key = globalStorage.key(i)\n\t\tfn(globalStorage[key], key)\n\t}\n}\n\nfunction remove(key) {\n\treturn globalStorage.removeItem(key)\n}\n\nfunction clearAll() {\n\teach(function(key, _) {\n\t\tdelete globalStorage[key]\n\t})\n}\n","// oldIE-userDataStorage provides storage for Internet Explorer\n// versions 6 and 7, where no localStorage, sessionStorage, etc\n// is available.\n\nvar util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'oldIE-userDataStorage',\n\twrite: write,\n\tread: read,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar storageName = 'storejs'\nvar doc = Global.document\nvar _withStorageEl = _makeIEStorageElFunction()\nvar disable = (Global.navigator ? Global.navigator.userAgent : '').match(/ (MSIE 8|MSIE 9|MSIE 10)\\./) // MSIE 9.x, MSIE 10.x\n\nfunction write(unfixedKey, data) {\n\tif (disable) { return }\n\tvar fixedKey = fixKey(unfixedKey)\n\t_withStorageEl(function(storageEl) {\n\t\tstorageEl.setAttribute(fixedKey, data)\n\t\tstorageEl.save(storageName)\n\t})\n}\n\nfunction read(unfixedKey) {\n\tif (disable) { return }\n\tvar fixedKey = fixKey(unfixedKey)\n\tvar res = null\n\t_withStorageEl(function(storageEl) {\n\t\tres = storageEl.getAttribute(fixedKey)\n\t})\n\treturn res\n}\n\nfunction each(callback) {\n\t_withStorageEl(function(storageEl) {\n\t\tvar attributes = storageEl.XMLDocument.documentElement.attributes\n\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\tvar attr = attributes[i]\n\t\t\tcallback(storageEl.getAttribute(attr.name), attr.name)\n\t\t}\n\t})\n}\n\nfunction remove(unfixedKey) {\n\tvar fixedKey = fixKey(unfixedKey)\n\t_withStorageEl(function(storageEl) {\n\t\tstorageEl.removeAttribute(fixedKey)\n\t\tstorageEl.save(storageName)\n\t})\n}\n\nfunction clearAll() {\n\t_withStorageEl(function(storageEl) {\n\t\tvar attributes = storageEl.XMLDocument.documentElement.attributes\n\t\tstorageEl.load(storageName)\n\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\tstorageEl.removeAttribute(attributes[i].name)\n\t\t}\n\t\tstorageEl.save(storageName)\n\t})\n}\n\n// Helpers\n//////////\n\n// In IE7, keys cannot start with a digit or contain certain chars.\n// See https://github.com/marcuswestin/store.js/issues/40\n// See https://github.com/marcuswestin/store.js/issues/83\nvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\")\nfunction fixKey(key) {\n\treturn key.replace(/^\\d/, '___$&').replace(forbiddenCharsRegex, '___')\n}\n\nfunction _makeIEStorageElFunction() {\n\tif (!doc || !doc.documentElement || !doc.documentElement.addBehavior) {\n\t\treturn null\n\t}\n\tvar scriptTag = 'script',\n\t\tstorageOwner,\n\t\tstorageContainer,\n\t\tstorageEl\n\n\t// Since #userData storage applies only to specific paths, we need to\n\t// somehow link our data to a specific path. We choose /favicon.ico\n\t// as a pretty safe option, since all browsers already make a request to\n\t// this URL anyway and being a 404 will not hurt us here. We wrap an\n\t// iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n\t// (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n\t// since the iframe access rules appear to allow direct access and\n\t// manipulation of the document element, even for a 404 page. This\n\t// document can be used instead of the current document (which would\n\t// have been limited to the current path) to perform #userData storage.\n\ttry {\n\t\t/* global ActiveXObject */\n\t\tstorageContainer = new ActiveXObject('htmlfile')\n\t\tstorageContainer.open()\n\t\tstorageContainer.write('<'+scriptTag+'>document.w=window')\n\t\tstorageContainer.close()\n\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\tstorageEl = storageOwner.createElement('div')\n\t} catch(e) {\n\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t// security settings or otherwse), fall back to per-path storage\n\t\tstorageEl = doc.createElement('div')\n\t\tstorageOwner = doc.body\n\t}\n\n\treturn function(storeFunction) {\n\t\tvar args = [].slice.call(arguments, 0)\n\t\targs.unshift(storageEl)\n\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\tstorageOwner.appendChild(storageEl)\n\t\tstorageEl.addBehavior('#default#userData')\n\t\tstorageEl.load(storageName)\n\t\tstoreFunction.apply(this, args)\n\t\tstorageOwner.removeChild(storageEl)\n\t\treturn\n\t}\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'sessionStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll\n}\n\nfunction sessionStorage() {\n\treturn Global.sessionStorage\n}\n\nfunction read(key) {\n\treturn sessionStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn sessionStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = sessionStorage().length - 1; i >= 0; i--) {\n\t\tvar key = sessionStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn sessionStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn sessionStorage().clear()\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/**\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 && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\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}\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 { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new 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 if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\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 return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (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 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 return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\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 const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\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 if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\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 swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot?.children || []), ...(elementToCheck.assignedElements?.() || []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\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}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\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 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';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\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 }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\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 if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\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(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\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 if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\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}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\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 (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\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: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\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 once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\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 if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\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 if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\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 emit() {\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 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\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 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 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\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, '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}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\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 = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\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 if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\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 if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\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 for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', 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 if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\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 swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 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 Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(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 if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction 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 if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(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 }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\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;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\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 if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('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 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\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;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\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 wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\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}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\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 if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\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];\n // Normalize slideIndex\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 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 }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = 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 wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\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 if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\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 if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\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 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 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\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 if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\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 = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\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 if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\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 let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction 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 if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\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 return;\n }\n if (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 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\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 if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\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 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\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}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 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 clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\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 if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\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 // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\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 wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\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 const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\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 return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\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 return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction 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}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\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.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\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 if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\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 eventsPrefix: 'swiper',\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\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: 5,\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 // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: 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-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\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 if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\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 if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\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 });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\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 if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\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 // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\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 cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\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: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\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');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\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 getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\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 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 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 emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(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 slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\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 if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // 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 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 if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(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 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 if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\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');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\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]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 11.2.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 10, 2025\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n panOnMouseMove: false,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let isPanningWithMouse = false;\n let mousePanStart = {\n x: 0,\n y: 0\n };\n const mousePanSensitivity = -3; // Negative to invert pan direction\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n const isMouseEvent = e.pointerType === 'mouse';\n const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n if (isMousePan) onMouseMove(e);\n return;\n }\n if (isMousePan) {\n onMouseMove(e);\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n evCache.length = 0;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function onMouseMove(e) {\n // Only pan if zoomed in and mouse panning is enabled\n if (currentScale <= 1 || !gesture.imageWrapEl) return;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;\n const matrix = new window.DOMMatrix(currentTransform);\n if (!isPanningWithMouse) {\n isPanningWithMouse = true;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = matrix.e;\n image.startY = matrix.f;\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n return;\n }\n const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;\n const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;\n const scaledWidth = image.width * currentScale;\n const scaledHeight = image.height * currentScale;\n const slideWidth = gesture.slideWidth;\n const slideHeight = gesture.slideHeight;\n const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n const maxX = -minX;\n const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n const maxY = -minY;\n const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);\n const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = newX;\n image.startY = newY;\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n if (swiper.params.zoom.panOnMouseMove) {\n mousePanStart = {\n x: 0,\n y: 0\n };\n if (isPanningWithMouse) {\n isPanningWithMouse = false;\n image.startX = 0;\n image.startY = 0;\n }\n }\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n let v;\n try {\n v = JSON.parse(val);\n } catch (err) {\n v = val;\n }\n return v;\n }\n return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n const localParamsList = [...paramsList, 'on'];\n const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach(paramName => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({\n name: propName,\n value: isObject(propValue) ? {\n ...propValue\n } : propValue\n });\n }\n attrsList.forEach(attr => {\n const moduleParam = modulesParamsList.find(mParam => attr.name.startsWith(`${mParam}-`));\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = {\n enabled: true\n };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = !!value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n extend(params, passedParams);\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {})\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {})\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {})\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return {\n params,\n passedParams\n };\n}\n\nexport { getParams as g };\n","/**\n * Swiper Custom Element 11.2.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 10, 2025\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `\n `;\nconst addStyle = (shadowRoot, styles) => {\n if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n const styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(styles);\n shadowRoot.adoptedStyleSheets = [styleSheet];\n } else {\n const style = document.createElement('style');\n style.rel = 'stylesheet';\n style.textContent = styles;\n shadowRoot.appendChild(style);\n }\n};\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n static get nextButtonSvg() {\n return arrowSvg;\n }\n static get prevButtonSvg() {\n return arrowSvg.replace('/>', ' transform-origin=\"center\" transform=\"rotate(180)\"/>');\n }\n cssStyles() {\n return [SwiperCSS,\n // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n }\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n calcSlideSlots() {\n const currentSideSlots = this.slideSlots || 0;\n // slide slots\n const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n });\n this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n if (!this.rendered) return;\n if (this.slideSlots > currentSideSlots) {\n for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n const slideEl = document.createElement('swiper-slide');\n slideEl.setAttribute('part', `slide slide-${i + 1}`);\n const slotEl = document.createElement('slot');\n slotEl.setAttribute('name', `slide-${i + 1}`);\n slideEl.appendChild(slotEl);\n this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n }\n } else if (this.slideSlots < currentSideSlots) {\n const slides = this.swiper.slides;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (i > this.slideSlots) {\n slides[i].remove();\n }\n }\n }\n }\n render() {\n if (this.rendered) return;\n this.calcSlideSlots();\n\n // local styles\n let localStyles = this.cssStyles();\n if (this.slideSlots > 0) {\n localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n }\n if (localStyles.length) {\n addStyle(this.shadowRoot, localStyles);\n }\n this.cssLinks().forEach(url => {\n const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowRoot.appendChild(linkEl);\n });\n // prettier-ignore\n const el = document.createElement('div');\n el.classList.add('swiper');\n el.part = 'container';\n\n // prettier-ignore\n el.innerHTML = `\n \n
\n \n ${Array.from({\n length: this.slideSlots\n }).map((_, index) => `\n \n \n \n `).join('')}\n
\n \n ${needsNavigation(this.passedParams) ? `\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n ` : ''}\n ${needsPagination(this.passedParams) ? `\n
\n ` : ''}\n ${needsScrollbar(this.passedParams) ? `\n
\n ` : ''}\n `;\n this.shadowRoot.appendChild(el);\n this.rendered = true;\n }\n initialize() {\n var _this = this;\n if (this.initialized) return;\n this.initialized = true;\n const {\n params: swiperParams,\n passedParams\n } = getParams(this);\n this.swiperParams = swiperParams;\n this.passedParams = passedParams;\n delete this.swiperParams.init;\n this.render();\n\n // eslint-disable-next-line\n this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n ...(swiperParams.virtual ? {} : {\n observer: true\n }),\n ...swiperParams,\n touchEventsTarget: 'container',\n onAny: function (name) {\n if (name === 'observerUpdate') {\n _this.calcSlideSlots();\n }\n const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const event = new CustomEvent(eventName, {\n detail: args,\n bubbles: name !== 'hashChange',\n cancelable: true\n });\n _this.dispatchEvent(event);\n }\n });\n }\n connectedCallback() {\n if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.init === false || this.getAttribute('init') === 'false') {\n return;\n }\n this.initialize();\n }\n disconnectedCallback() {\n if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.swiper && this.swiper.destroy) {\n this.swiper.destroy();\n }\n this.initialized = false;\n }\n updateSwiperOnPropChange(propName, propValue) {\n const {\n params: swiperParams,\n passedParams\n } = getParams(this, propName, propValue);\n this.passedParams = passedParams;\n this.swiperParams = swiperParams;\n if (this.swiper && this.swiper.params[propName] === propValue) {\n return;\n }\n updateSwiper({\n swiper: this.swiper,\n passedParams: this.passedParams,\n changedParams: [attrToProp(propName)],\n ...(propName === 'navigation' && passedParams[propName] ? {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next'\n } : {}),\n ...(propName === 'pagination' && passedParams[propName] ? {\n paginationEl: '.swiper-pagination'\n } : {}),\n ...(propName === 'scrollbar' && passedParams[propName] ? {\n scrollbarEl: '.swiper-scrollbar'\n } : {})\n });\n }\n attributeChangedCallback(attr, prevValue, newValue) {\n if (!this.initialized) return;\n if (prevValue === 'true' && newValue === null) {\n newValue = false;\n }\n this.updateSwiperOnPropChange(attr, newValue);\n }\n static get observedAttributes() {\n const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n return attrs;\n }\n}\nparamsList.forEach(paramName => {\n if (paramName === 'init') return;\n paramName = paramName.replace('_', '');\n Object.defineProperty(SwiperContainer.prototype, paramName, {\n configurable: true,\n get() {\n return (this.passedParams || {})[paramName];\n },\n set(value) {\n if (!this.passedParams) this.passedParams = {};\n this.passedParams[paramName] = value;\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(paramName, value);\n }\n });\n});\nclass SwiperSlide extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n render() {\n const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n addStyle(this.shadowRoot, SwiperSlideCSS);\n this.shadowRoot.appendChild(document.createElement('slot'));\n if (lazy) {\n const lazyDiv = document.createElement('div');\n lazyDiv.classList.add('swiper-lazy-preloader');\n lazyDiv.part.add('preloader');\n this.shadowRoot.appendChild(lazyDiv);\n }\n }\n initialize() {\n this.render();\n }\n connectedCallback() {\n this.initialize();\n }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n if (typeof window === 'undefined') return;\n if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n window.SwiperElementRegisterParams = params => {\n paramsList.push(...params);\n };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n"],"names":["window","lazySizes","document","Date","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","init","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","docElem","documentElement","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","addEventListener","bind","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","forEach","Array","prototype","hasClass","ele","cls","RegExp","test","addClass","setAttribute","trim","removeClass","reg","replace","addRemoveLoadEvents","dom","fn","add","action","evt","triggerEvent","elem","name","detail","noBubbles","noCancelable","event","createEvent","instance","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","style","getComputedStyle","getWidth","parent","width","offsetWidth","_lazysizesWidth","parentNode","rAF","firstFns","secondFns","fns","run","runFns","length","running","waiting","shift","rafBatch","queue","apply","this","arguments","push","hidden","_lsFlush","rAFIt","simple","that","args","throttle","lastTime","gDelay","rICTimeout","now","idleCallback","timeout","isPriority","delay","debounce","func","timestamp","wait","later","last","loader","regImg","regIframe","supportScroll","navigator","userAgent","shrinkExpand","currentExpand","isLoading","lowRuns","resetPreloading","e","target","isVisible","isBodyHidden","body","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","offsetParent","getBoundingClientRect","left","right","top","bottom","checkElements","eLlen","i","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","clientWidth","_defEx","eLvW","innerWidth","elvH","innerHeight","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","changeIframeSrc","getAttribute","contentWindow","location","handleSources","source","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","resetPreloadingTimer","call","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","started","_","persisted","loadingElements","querySelectorAll","img","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","_aLSL","sizeElement","sources","len","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW","factory","module","exports","w","d","__forceSmoothScrollPolyfill__","Element","HTMLElement","original","scroll","scrollTo","scrollBy","elementScroll","scrollElement","scrollIntoView","performance","ROUNDING_TOLERANCE","join","undefined","shouldBailOut","smoothScroll","scrollX","pageXOffset","scrollY","pageYOffset","scrollLeft","scrollTop","SyntaxError","behavior","scrollableParent","isScrollable","host","findScrollableParent","parentRects","clientRects","position","x","y","firstArg","TypeError","hasScrollableSpace","axis","scrollHeight","scrollWidth","canOverflow","overflowValue","isScrollableY","isScrollableX","step","context","value","currentX","currentY","k","elapsed","startTime","Math","cos","PI","startX","startY","method","scrollable","engine","storages","plugins","createStore","JSON","rx_one","rx_two","rx_three","rx_four","rx_escapable","rx_dangerous","gap","indent","meta","rep","f","n","this_value","valueOf","quote","string","lastIndex","a","c","charCodeAt","toString","slice","str","key","holder","v","partial","mind","toJSON","isFinite","String","Object","hasOwnProperty","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Boolean","Number","stringify","replacer","space","Error","parse","text","reviver","j","walk","eval","util","pluck","each","create","isList","isFunction","isObject","storeAPI","version","enabled","get","optionalDefaultValue","data","storage","read","_namespacePrefix","_deserialize","set","remove","write","_serialize","callback","self","val","namespacedKey","_namespaceRegexp","clearAll","hasNamespace","namespace","addPlugin","plugin","_addPlugin","namespacePrefix","namespaceRegexp","_privateStoreProps","_testStorage","testStr","ok","_assignPluginFnProp","pluginFnProp","propName","oldFn","newFnArgs","arg","concat","obj","strVal","defaultVal","_addStorage","seenPlugin","pluginProperties","addStorage","_console","console","warn","log","_warn","store","raw","assign","props1","props2","etc","assignProps1","assignProps2","assignArgsList","F","make_create","Global","g","arr","index","map","res","_has","regexpStr","escape","unescape","doc","cookie","cookies","split","kvp","localStorage","getItem","setItem","removeItem","clear","memoryStorage","globalStorage","unfixedKey","disable","fixedKey","fixKey","_withStorageEl","storageEl","save","storageName","XMLDocument","attr","removeAttribute","load","addBehavior","storageOwner","storageContainer","scriptTag","ActiveXObject","open","close","frames","createElement","storeFunction","unshift","appendChild","removeChild","_makeIEStorageElFunction","match","forbiddenCharsRegex","sessionStorage","api","converter","defaultAttributes","expires","toUTCString","encodeURIComponent","decodeURIComponent","stringifiedAttributes","attributeName","jar","parts","found","withAttributes","withConverter","freeze","path","constructor","extend","keys","ssrDocument","removeEventListener","activeElement","blur","querySelector","getElementById","children","childNodes","createElementNS","importNode","hash","hostname","href","origin","pathname","protocol","search","getDocument","ssrWindow","history","replaceState","pushState","go","back","CustomEvent","getPropertyValue","Image","screen","matchMedia","cancelAnimationFrame","id","getWindow","win","classesToTokens","classes","filter","nextTick","getTranslate","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","parseFloat","m42","o","to","noExtend","nextSource","node","nodeType","keysArray","indexOf","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","max","min","easeProgress","currentPosition","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","assignedElements","matches","showWarning","err","tag","classList","isArray","elementOffset","box","clientTop","clientLeft","elementStyle","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementTransitionEnd","fireCallBack","elementOuterSize","size","includeMargins","makeElementsArray","getRotateFix","abs","browser","need3dFix","support","deviceCached","getSupport","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","height","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","includes","major","minor","num","isWebView","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","eventsListeners","destroyed","once","onceHandler","off","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","splice","eventHandler","emit","_len2","_key2","toggleSlideClasses$1","condition","className","contains","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","isHorizontal","isVertical","parseInt","isNaN","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","onTranslateToWrapperTransitionEnd","transitionEmit","direction","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","edgeSwipeDetection","edgeSwipeThreshold","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","slot","elementsQueue","elementToCheck","elementIsChildOfSlot","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","pageY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","bubbles","bySwiperTouchMove","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","options","WebkitMutationObserver","mutations","observerUpdate","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","sticky","prevEvent","firstEvent","snapToThreshold","disableOnInteraction","stop","releaseScroll","getEl","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","panOnMouseMove","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","isPanningWithMouse","mousePanStart","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","imageMaxRatio","eventWithinSlide","eventWithinZoomContainer","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","isMousePan","onMouseMove","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","DOMMatrix","newX","newY","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","paramsList","attrToProp","attrName","l","formatValue","modulesParamsList","getParams","propValue","localParamsList","allowedParams","paramName","attrsList","moduleParam","mParam","startsWith","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams"],"sourceRoot":""}