{"version":3,"sources":["main.min.js","node_modules/lozad/dist/lozad.es.js","node_modules/ssr-window/ssr-window.esm.js","node_modules/dom7/dom7.esm.js","node_modules/swiper/shared/dom.js","node_modules/swiper/shared/utils.js","node_modules/swiper/shared/get-support.js","node_modules/swiper/shared/get-device.js","node_modules/swiper/shared/get-browser.js","node_modules/swiper/core/events-emitter.js","node_modules/swiper/core/update/index.js","node_modules/swiper/core/update/updateSize.js","node_modules/swiper/core/update/updateSlides.js","node_modules/swiper/core/update/updateAutoHeight.js","node_modules/swiper/core/update/updateSlidesOffset.js","node_modules/swiper/core/update/updateSlidesProgress.js","node_modules/swiper/core/update/updateProgress.js","node_modules/swiper/core/update/updateSlidesClasses.js","node_modules/swiper/core/update/updateActiveIndex.js","node_modules/swiper/core/update/updateClickedSlide.js","node_modules/swiper/core/translate/index.js","node_modules/swiper/core/translate/getTranslate.js","node_modules/swiper/core/translate/setTranslate.js","node_modules/swiper/core/translate/minTranslate.js","node_modules/swiper/core/translate/maxTranslate.js","node_modules/swiper/core/translate/translateTo.js","node_modules/swiper/core/transition/transitionEmit.js","node_modules/swiper/core/slide/index.js","node_modules/swiper/core/slide/slideTo.js","node_modules/swiper/core/slide/slideToLoop.js","node_modules/swiper/core/slide/slideNext.js","node_modules/swiper/core/slide/slidePrev.js","node_modules/swiper/core/slide/slideReset.js","node_modules/swiper/core/slide/slideToClosest.js","node_modules/swiper/core/slide/slideToClickedSlide.js","node_modules/swiper/core/loop/index.js","node_modules/swiper/core/loop/loopCreate.js","node_modules/swiper/core/loop/loopFix.js","node_modules/swiper/core/loop/loopDestroy.js","node_modules/swiper/core/events/onTouchStart.js","node_modules/swiper/core/events/onTouchMove.js","node_modules/swiper/core/events/onTouchEnd.js","node_modules/swiper/core/events/onResize.js","node_modules/swiper/core/events/onClick.js","node_modules/swiper/core/events/onScroll.js","node_modules/swiper/core/events/index.js","node_modules/swiper/core/breakpoints/setBreakpoint.js","node_modules/swiper/core/classes/index.js","node_modules/swiper/core/classes/addClasses.js","node_modules/swiper/core/classes/removeClasses.js","node_modules/swiper/core/defaults.js","node_modules/swiper/core/moduleExtendParams.js","node_modules/swiper/core/core.js","node_modules/swiper/core/transition/index.js","node_modules/swiper/core/transition/setTransition.js","node_modules/swiper/core/transition/transitionStart.js","node_modules/swiper/core/transition/transitionEnd.js","node_modules/swiper/core/grab-cursor/index.js","node_modules/swiper/core/grab-cursor/setGrabCursor.js","node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","node_modules/swiper/core/breakpoints/index.js","node_modules/swiper/core/breakpoints/getBreakpoint.js","node_modules/swiper/core/check-overflow/index.js","node_modules/swiper/core/images/index.js","node_modules/swiper/core/images/loadImage.js","node_modules/swiper/core/images/preloadImages.js","node_modules/swiper/modules/navigation/navigation.js","node_modules/swiper/shared/create-element-if-not-defined.js","node_modules/swiper/modules/thumbs/thumbs.js","node_modules/swiper/core/modules/resize/resize.js","node_modules/swiper/core/modules/observer/observer.js","src/pages/index/scripts/header.js","src/pages/index/scripts/helper.js","src/pages/index/scripts/home.js","src/pages/about/index.js"],"names":["factory","isIE","document","documentMode","defaultConfig","rootMargin","threshold","load","element","nodeName","toLowerCase","img","querySelector","append","createElement","getAttribute","src","alt","children","childs","childSrc","i","length","poster","setAttribute","backgroundImageDelimiter","style","backgroundImage","split","join","imageSetLinks","firstUrlLink","substr","indexOf","classList","toggle","loaded","markAsLoaded","isLoaded","getElements","selector","root","Element","NodeList","querySelectorAll","isObject","obj","constructor","Object","extend","target","keys","forEach","key","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","getElementById","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","makeReactive","proto","__proto__","defineProperty","get","set","value","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","context","html","trim","toCreate","tempParent","innerHTML","qsa","a","nodeType","arrayUnique","uniqueArray","fn","Methods","addClass","classes","classNames","map","c","add","removeClass","remove","hasClass","className","contains","toggleClass","attr","attrs","arguments","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","replace","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","to","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","checkPassiveListener","supportsPassive","opts","gestures","checkGestures","getDevice","overrides","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","getBrowser","calcBrowser","isSafari","isWebView","test","methodName","writable","eventsEmitter","priority","self","eventsListeners","destroyed","method","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","update","updateSize","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","loopedSlidesLimit","prependSlides","appendSlides","cloneNode","diff","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","closestElement","base","__closestFrom","assignedSlot","getRootNode","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","events$1","attachEvents","bind","detachEvents","isGridEnabled","addClasses","suffixes","prepareClasses","entries","prefix","resultClasses","item","autoheight","fill","centered","emitContainerClasses","removeClasses","defaults","init","initialSlide","resizeObserver","createElements","url","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","extendParams","moduleParamName","moduleParams","auto","prototypes","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","options","wrapper","destroy","deleteInstance","cleanStyles","deleteProps","object","static","newDefaults","module","m","installModule","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","createElementIfNotDefined","checkProps","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","pagination","clickable","isHidden","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","prototypeGroup","protoMethod","use","Resize","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","Observer","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","header","scrollActive","hambuger","detectCloseElement","ele","ele2","funcRemove","keyup","closeMenu","clickMenu","isMobileOrTablet","_i","_mobileKeywords","keyword","includes","_i2","_tabletKeywords","clickCounts","elementId","buttonToTop","windowHeight","home","video","$container","data_video","html_iframe","concat","heightHeader","offSet","fixedOffset","toFixed","console","log","pageYOffset","ready","scrollAnimation","IntersectionObserver","isIntersecting","animation","dataset","about","CountUpNumber","nodeCount","separator","enableScrollSpy","countUp","CountUp","indicatorSlide","entry","calOffsetLeft","widthWrap","widthContainer","thumb","main","slideChange","totalSlide","Thumbs","lozad","onIntersection","intersectionRatio","elements","background","triggerLoad","define","amd"],"mappings":"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","file":"main.min.js","sourcesContent":[null,"/*! lozad.js - v1.16.0 - 2020-09-06\n* https://github.com/ApoorvSaxena/lozad.js\n* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */\n\n\n/**\n * Detect IE browser\n * @const {boolean}\n * @private\n */\nconst isIE = typeof document !== 'undefined' && document.documentMode;\n\nconst defaultConfig = {\n rootMargin: '0px',\n threshold: 0,\n load(element) {\n if (element.nodeName.toLowerCase() === 'picture') {\n let img = element.querySelector('img');\n let append = false;\n\n if (img === null) {\n img = document.createElement('img');\n append = true;\n }\n\n if (isIE && element.getAttribute('data-iesrc')) {\n img.src = element.getAttribute('data-iesrc');\n }\n\n if (element.getAttribute('data-alt')) {\n img.alt = element.getAttribute('data-alt');\n }\n\n if (append) {\n element.append(img);\n }\n }\n\n if (element.nodeName.toLowerCase() === 'video' && !element.getAttribute('data-src')) {\n if (element.children) {\n const childs = element.children;\n let childSrc;\n for (let i = 0; i <= childs.length - 1; i++) {\n childSrc = childs[i].getAttribute('data-src');\n if (childSrc) {\n childs[i].src = childSrc;\n }\n }\n\n element.load();\n }\n }\n\n if (element.getAttribute('data-poster')) {\n element.poster = element.getAttribute('data-poster');\n }\n\n if (element.getAttribute('data-src')) {\n element.src = element.getAttribute('data-src');\n }\n\n if (element.getAttribute('data-srcset')) {\n element.setAttribute('srcset', element.getAttribute('data-srcset'));\n }\n\n let backgroundImageDelimiter = ',';\n if (element.getAttribute('data-background-delimiter')) {\n backgroundImageDelimiter = element.getAttribute('data-background-delimiter');\n }\n\n if (element.getAttribute('data-background-image')) {\n element.style.backgroundImage = `url('${element.getAttribute('data-background-image').split(backgroundImageDelimiter).join('\\'),url(\\'')}')`;\n } else if (element.getAttribute('data-background-image-set')) {\n const imageSetLinks = element.getAttribute('data-background-image-set').split(backgroundImageDelimiter);\n let firstUrlLink = (imageSetLinks[0].substr(0, imageSetLinks[0].indexOf(' ')) || imageSetLinks[0]); // Substring before ... 1x\n firstUrlLink = firstUrlLink.indexOf('url(') === -1 ? `url(${firstUrlLink})` : firstUrlLink;\n if (imageSetLinks.length === 1) {\n element.style.backgroundImage = firstUrlLink;\n } else {\n element.setAttribute('style', (element.getAttribute('style') || '') + `background-image: ${firstUrlLink}; background-image: -webkit-image-set(${imageSetLinks}); background-image: image-set(${imageSetLinks})`);\n }\n }\n\n if (element.getAttribute('data-toggle-class')) {\n element.classList.toggle(element.getAttribute('data-toggle-class'));\n }\n },\n loaded() {}\n};\n\nfunction markAsLoaded(element) {\n element.setAttribute('data-loaded', true);\n}\n\nfunction preLoad(element) {\n if (element.getAttribute('data-placeholder-background')) {\n element.style.background = element.getAttribute('data-placeholder-background');\n }\n}\n\nconst isLoaded = element => element.getAttribute('data-loaded') === 'true';\n\nconst onIntersection = (load, loaded) => (entries, observer) => {\n entries.forEach(entry => {\n if (entry.intersectionRatio > 0 || entry.isIntersecting) {\n observer.unobserve(entry.target);\n\n if (!isLoaded(entry.target)) {\n load(entry.target);\n markAsLoaded(entry.target);\n loaded(entry.target);\n }\n }\n });\n};\n\nconst getElements = (selector, root = document) => {\n if (selector instanceof Element) {\n return [selector]\n }\n\n if (selector instanceof NodeList) {\n return selector\n }\n\n return root.querySelectorAll(selector)\n};\n\nfunction lozad (selector = '.lozad', options = {}) {\n const {root, rootMargin, threshold, load, loaded} = Object.assign({}, defaultConfig, options);\n let observer;\n\n if (typeof window !== 'undefined' && window.IntersectionObserver) {\n observer = new IntersectionObserver(onIntersection(load, loaded), {\n root,\n rootMargin,\n threshold\n });\n }\n\n const elements = getElements(selector, root);\n for (let i = 0; i < elements.length; i++) {\n preLoad(elements[i]);\n }\n\n return {\n observe() {\n const elements = getElements(selector, root);\n\n for (let i = 0; i < elements.length; i++) {\n if (isLoaded(elements[i])) {\n continue\n }\n\n if (observer) {\n observer.observe(elements[i]);\n continue\n }\n\n load(elements[i]);\n markAsLoaded(elements[i]);\n loaded(elements[i]);\n }\n },\n triggerLoad(element) {\n if (isLoaded(element)) {\n return\n }\n\n load(element);\n markAsLoaded(element);\n loaded(element);\n },\n observer\n }\n}\n\nexport default lozad;\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 &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\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\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\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 const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\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 const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\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\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\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\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).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\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\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 } 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\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\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; // Activate thumbs\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\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) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\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\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","// export function appendFineAnt() {\n// \tconst script = document.createElement(\"script\");\n// \tscript.src = \"https://www.fireant.vn/Scripts/web/widgets.js\";\n// \tscript.defer = true;\n// \tscript.onload = () => {\n// \t\tnew FireAnt.QuoteWidget({\n// \t\t\tcontainer_id: \"fan-quote-373\",\n// \t\t\tsymbols: \"IJC\",\n// \t\t\tlocale: \"vi\",\n// \t\t\tprice_line_color: \"#71BDDF\",\n// \t\t\tgrid_color: \"#999999\",\n// \t\t\tlabel_color: \"#999999\",\n// \t\t\twidth: \"100%\",\n// \t\t\theight: \"200px\",\n// \t\t});\n// \t};\n// \tdocument.querySelector(\".iframe-fineant\").appendChild(script);\n// \tconsole.log(\"🟢 Fineant is added!\");\n// }\n\n/*==================== Header ====================*/\n\nimport { buttonToTop, detectCloseElement } from \"./helper\";\n\n/**\n * @param header\n */\nfunction isMobileOrTablet() {\n\tconst userAgent = navigator.userAgent.toLowerCase();\n\tconst mobileKeywords = [\"mobile\", \"android\", \"iphone\", \"ipad\", \"ipod\"];\n\tconst tabletKeywords = [\"tablet\", \"ipad\"];\n\n\tfor (const keyword of mobileKeywords) {\n\t\tif (userAgent.includes(keyword)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tfor (const keyword of tabletKeywords) {\n\t\tif (userAgent.includes(keyword)) {\n\t\t\treturn true;\n\t\t}\n\t}\n}\n\nexport const header = {\n\tscrollActive: function () {\n\t\tlet height = $(\"header\").height();\n\t\tif ($(window).scrollTop() > height) {\n\t\t\t$(\"header\").addClass(\"active\");\n\t\t\t$(\"header\").removeClass(\"slideUp\");\n\t\t} else {\n\t\t\t$(\"header\").removeClass(\"active\");\n\t\t\t$(\"header\").removeClass(\"slideUp\");\n\t\t}\n\t},\n\thambuger: function () {\n\t\t$(\".header-hambuger\").on(\"click\", function () {\n\t\t\t$(\"body\").toggleClass(\"isOpenMenu\");\n\t\t});\n\t\tfunction closeMenu() {\n\t\t\t$(\"body\").removeClass(\"isOpenMenu\");\n\t\t}\n\t\tdetectCloseElement(\".header-menu\", \"header-hambuger\", closeMenu);\n\t},\n\tclickMenu: function () {\n\t\tif (isMobileOrTablet()) {\n\t\t\tlet clickCounts = {};\n\t\t\t$(\".header-menu a\").on(\"click\", function (e) {\n\t\t\t\tconst elementId = $(this).attr(\"href\");\n\t\t\t\tif (!$(this).next(\"ul\").length) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Reset click count for all elements except the current one\n\t\t\t\tObject.keys(clickCounts).forEach((key) => {\n\t\t\t\t\tif (key !== elementId) {\n\t\t\t\t\t\tclickCounts[key] = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (!clickCounts[elementId]) {\n\t\t\t\t\tclickCounts[elementId] = 1;\n\t\t\t\t} else {\n\t\t\t\t\tclickCounts[elementId]++;\n\t\t\t\t}\n\t\t\t\tif (clickCounts[elementId] > 1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\tinit: function () {\n\t\tbuttonToTop();\n\t\theader.scrollActive();\n\t\theader.clickMenu();\n\t\theader.hambuger();\n\t},\n};\ndocument.addEventListener(\n\t\"scroll\",\n\tfunction (e) {\n\t\theader.scrollActive();\n\t},\n\ttrue\n);\n","\nexport function setBackgroundElement () {\n\t$('[setBackground]').each(function () {\n\t\tvar background = $(this).attr('setBackground')\n\t\t$(this).css({\n\t\t\t'background-image': 'url(' + background + ')',\n\t\t\t'background-size': 'cover',\n\t\t\t'background-position': 'center center',\n\t\t})\n\t})\n}\nexport function indicatorSlide() {\n\tif ($('.indicator-swipe').length > 0) {\n\t\tvar callback = function (entries) {\n\t\t\tentries.forEach(function (entry) {\n\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\tentry.target.classList.add('active')\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tentry.target.classList.remove('active')\n\t\t\t\t\t}, 3000)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tvar observer = new IntersectionObserver(callback)\n\t\tvar animationItems = document.querySelectorAll('.indicator-swipe')\n\t\tanimationItems.forEach(function (item) {\n\t\t\tobserver.observe(item)\n\t\t})\n\t}\n}\nexport function detectCloseElement(ele, ele2, funcRemove) {\n\t// close\n\t$(document).on('click', function (e) {\n\t\tif (!$(e.target).closest(ele).length && !$(e.target).hasClass(ele2)) {\n\t\t\tfuncRemove()\n\t\t}\n\t})\n\t// esc\n\t$(document).keyup(function (e) {\n\t\tif (e.key === 'Escape') {\n\t\t\tfuncRemove()\n\t\t}\n\t})\n\t// overlay-blur\n}\nexport function buttonToTop() {\n\tlet windowHeight = $(window).height()\n\t$(document).on('scroll', function () {\n\t\tlet scrollTop = $(window).scrollTop()\n\t\tlet documentHeight = $(document).height()\n\t\tif (scrollTop + windowHeight > windowHeight + 400) {\n\t\t\t$('.button-to-top').addClass('active')\n\t\t} else {\n\t\t\t$('.button-to-top').removeClass('active')\n\t\t}\n\t})\n\t$(document).on('click', '.button-to-top', function () {\n\t\twindow.scrollTo({\n\t\t\ttop: 0,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t})\n}\n\nexport function ToggleItem() {\n\tconst nodeParent = $('.wrap-item-toggle')\n\tconst nodeItem = nodeParent.find('.item-toggle')\n\tconst nodeTitle = nodeItem.find('.title')\n\tnodeTitle.on('click', function () {\n\t\t$(this)\n\t\t\t.toggleClass('active')\n\t\t\t.next()\n\t\t\t.slideToggle()\n\t\t\t.closest('.item-toggle')\n\t\t\t.siblings()\n\t\t\t.find('.title')\n\t\t\t.removeClass('active')\n\t\t\t.next()\n\t\t\t.slideUp()\n\t})\n}\n\n/**\n * parent, children, item, button, initItem\n * @param { parent, children, item, button, initItem} listNode\n */\nexport function funcExpandContent(listNode) {\n\tconst {parent, children, item, button, initItem, gap = 0} = listNode\n\tif (!$(parent).length) return\n\tlet itemHeight = $(item).outerHeight()\n\tlet gapCalculate = gap\n\t\t? Number($(parent).find(children).css('column-gap').slice(0, -2)) * gap\n\t\t: 0\n\tlet initHeight = itemHeight * initItem + gapCalculate\n\tlet originalHeight = $(parent).find(children).outerHeight()\n\tif (originalHeight < initHeight) {\n\t\t$(button).remove()\n\t} else {\n\t\t$(parent).css('height', initHeight)\n\t}\n\t;``\n\t$(button).on('click', function () {\n\t\tif ($(this).hasClass('expand')) {\n\t\t\t$(parent).css('height', initHeight)\n\t\t\t$(this).find('span').text('Xem thêm')\n\t\t} else {\n\t\t\t$(parent).css('height', originalHeight)\n\t\t\t// setTimeout(() => {\n\t\t\t// \t$(parent).css(\"height\", \"auto\");\n\t\t\t// }, 1000);\n\t\t\t$(this).find('span').text('Rút gọn')\n\t\t}\n\t\t$(this).toggleClass('expand')\n\t})\n}\n\nexport function clickScrollToDiv(nodeEle, heightSpacing = () => {}) {\n\t$(nodeEle).on('click', function (event) {\n\t\tlet height = 0\n\t\t$(this).addClass('active').siblings().removeClass('active')\n\t\tif (heightSpacing) {\n\t\t\theight = heightSpacing()\n\t\t} else {\n\t\t\theight = 0\n\t\t}\n\t\tif (this.hash !== '') {\n\t\t\tevent.preventDefault()\n\t\t\tvar hash = this.hash\n\t\t\t$('html, body').animate(\n\t\t\t\t{\n\t\t\t\t\tscrollTop: $(hash).offset().top - height,\n\t\t\t\t},\n\t\t\t\t800\n\t\t\t)\n\t\t}\n\t})\n}\n\nexport function appendCaptchaASP() {\n\tif (!$('#ctl00_mainContent_ctl01_pnlFormWizard').length) return\n\t// Select the div element you want to observe\n\tconst myDiv = document.querySelector(\n\t\t'#ctl00_mainContent_ctl01_pnlFormWizard'\n\t)\n\t// Create a new MutationObserver object\n\tconst observer = new MutationObserver(function (mutations) {\n\t\tmutations.forEach(function (mutation) {\n\t\t\tconsole.log('Run')\n\t\t\tappendCaptcha()\n\t\t})\n\t})\n\t// Configure the observer to listen for changes to the \"class\" attribute\n\tconst config = {attributes: true, characterData: true, childList: true}\n\t// Start observing the target div element\n\tobserver.observe(myDiv, config)\n\tfunction appendCaptcha() {\n\t\t$('.form-group.frm-captcha').appendTo('.wrap-form-submit')\n\t\t$('.form-group.frm-btnwrap').appendTo('.wrap-form-submit')\n\t}\n\tappendCaptcha()\n}\nexport function scrollAnimation() {\n\tif (\n\t\t$('.animate').length > 0 &&\n\t\twindow.matchMedia('(min-width: 1200px)').matches\n\t) {\n\t\tvar callback = function (e) {\n\t\t\t\te.forEach(function (e) {\n\t\t\t\t\te.isIntersecting &&\n\t\t\t\t\t\t(e.target.style.animation = e.target.dataset.animate)\n\t\t\t\t})\n\t\t\t},\n\t\t\tobserver = new IntersectionObserver(callback, {}),\n\t\t\tanimationItems = document.querySelectorAll('.animate')\n\t\tanimationItems.forEach(function (e) {\n\t\t\tobserver.observe(e)\n\t\t})\n\t}\n}\n\nexport function scrollTo(offset, callback) {\n const fixedOffset = offset.toFixed();\n console.log(\"🚀 ~ file: helper.js:183 ~ scrollTo ~ fixedOffset:\", fixedOffset)\n const onScroll = function () {\n if (window.pageYOffset.toFixed() === fixedOffset) {\n window.removeEventListener('scroll', onScroll)\n callback()\n }\n }\n\n window.addEventListener('scroll', onScroll)\n onScroll()\n window.scrollTo({\n top: offset,\n behavior: 'smooth'\n })\n}","/*==================== Home ====================*/\n\nimport { scrollTo } from \"./helper\"\n\n/**\n * @param home\n */\nexport const home = {\n\tvideo: function () {\n\t\tconst $container = $('.section-home-story-canhcam')\n\t\tconst data_video = $container.find('.box-video').data('url-iframe')\n\t\tconst html_iframe = ``\n\t\t$container.find('.btn-play-video').on('click', function () {\n\t\t\tconst heightHeader = $('.header-1').outerHeight();\n\t\t\tconst offSet = $('.section-home-story-canhcam .wrap-story-box').offset().top - heightHeader;\n\t\t\tif (!window.matchMedia('(max-width: 767.96px)').matches) {\n\t\t\t\tscrollTo(offSet, () => {\n\t\t\t\t\t// $('.header-1').addClass('slideUp');\n\t\t\t\t\t// $('.header-2').removeClass('active');\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t$(this)\n\t\t\t\t.closest('.section-home-story-canhcam')\n\t\t\t\t.addClass('isPlayingVideo')\n\t\t\t$container.find('.box-video').html(html_iframe)\n\t\t})\n\t},\n\tinit: function () {\n\t\thome.video()\n\t},\n}\n","import lozad from 'lozad'\nimport Swiper, {Navigation, Thumbs} from 'swiper'\nimport {indicatorSlide, scrollAnimation} from '../index/scripts/helper'\nimport {header} from '../index/scripts/header'\nimport { home } from '../index/scripts/home'\n$(document).ready(function () {\n\theader.init()\n\tscrollAnimation()\n\tabout.init()\n\tCountUpNumber()\n\tindicatorSlide()\n\tcalOffsetLeft()\n\thome.video()\n})\n/*==================== Calculate offset left Our Differences ====================*/\nfunction calOffsetLeft() {\n\tconst widthWrap = $('.section-about-content').outerWidth()\n\tconst widthContainer = $(\n\t\t'.section-about-content .container-dynamic'\n\t).outerWidth()\n\tconst offsetLeft = (widthWrap - widthContainer) / 2\n\t$('.section-about-content .title-32').attr(\n\t\t'style',\n\t\t`--offsetLeft: ${offsetLeft}px`\n\t)\n}\n/*==================== Count Up ====================*/\nfunction CountUpNumber() {\n\tvar nodeCount = $('.countup')\n\tconst options = {\n\t\tduration: 3,\n\t\tseparator: '.',\n\t\tenableScrollSpy: true,\n\t}\n\tvar nodeAnimation\n\tnodeCount.each(function (index) {\n\t\tvar value = $(nodeCount[index]).data('number')\n\t\tnodeAnimation = new countUp.CountUp(nodeCount[index], value, options)\n\t\tnodeAnimation.start()\n\t})\n}\n/*==================== About - History ====================*/\nconst about = {\n\tslide: function () {\n\t\tvar thumb = new Swiper('.section-about-history .swiper-thumbs', {\n\t\t\tslidesPerView: 1,\n\t\t\tspeed: 1000,\n\t\t\tfreeMode: true,\n\t\t\twatchSlidesProgress: true,\n\t\t\tbreakpoints: {\n\t\t\t\t768: {\n\t\t\t\t\tslidesPerView: 3,\n\t\t\t\t},\n\t\t\t\t1024: {\n\t\t\t\t\tslidesPerView: 4,\n\t\t\t\t},\n\t\t\t\t1200: {\n\t\t\t\t\tslidesPerView: 6,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tvar main = new Swiper(\n\t\t\t'.section-about-history .wrap-swiper-about-history .swiper',\n\t\t\t{\n\t\t\t\tslidesPerView: 1,\n\t\t\t\tspaceBetween: 16,\n\t\t\t\trewind: true,\n\t\t\t\tspeed: 1000,\n\t\t\t\tnavigation: {\n\t\t\t\t\tnextEl: '.section-about-history .btn-next',\n\t\t\t\t\tprevEl: '.section-about-history .btn-prev',\n\t\t\t\t},\n\t\t\t\ton: {\n\t\t\t\t\tslideChange: function () {\n\t\t\t\t\t\tvar totalSlide = main.slides.length - 1\n\t\t\t\t\t\tvar previousIndex = this.previousIndex\n\t\t\t\t\t\tvar currentIndex = this.activeIndex\n\t\t\t\t\t\tif (previousIndex == 0 && this.isEnd) {\n\t\t\t\t\t\t\tthis.slideTo(totalSlide - 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (previousIndex != 0 && this.isEnd) {\n\t\t\t\t\t\t\tthis.slideTo(0)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmodules: [Thumbs, Navigation],\n\t\t\t\tthumbs: {\n\t\t\t\t\tswiper: thumb,\n\t\t\t\t},\n\t\t\t\tbreakpoints: {\n\t\t\t\t\t768: {\n\t\t\t\t\t\tslidesPerView: 1,\n\t\t\t\t\t},\n\t\t\t\t\t1024: {\n\t\t\t\t\t\tslidesPerView: 1.248,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t)\n\t\tnew Swiper('.section-about-leader .swiper', {\n\t\t\tslidesPerView: 2,\n\t\t\tspeed: 1000,\n\t\t\tbreakpoints: {\n\t\t\t\t768: {\n\t\t\t\t\tslidesPerView: 2,\n\t\t\t\t},\n\t\t\t\t1024: {\n\t\t\t\t\tslidesPerView: 3,\n\t\t\t\t},\n\t\t\t\t1200: {\n\t\t\t\t\tslidesPerView: 5,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t},\n\tinit: function () {\n\t\tabout.slide()\n\t},\n}\n\n/*==================== Lazyload JS ====================*/\nconst observer = lozad() // lazy loads elements with default selector as '.lozad'\nobserver.observe()\n"]}