{"version":3,"sources":["webpack:///./node_modules/swiper/shared/utils.mjs","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack:///./node_modules/swiper/modules/navigation.mjs","webpack:///./node_modules/swiper/modules/autoplay.mjs","webpack:///./node_modules/swiper/modules/thumbs.mjs","webpack:///./node_modules/swiper/modules/free-mode.mjs","webpack:///./node_modules/swiper/shared/effect-init.mjs","webpack:///./node_modules/swiper/shared/effect-target.mjs","webpack:///./node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack:///./node_modules/swiper/modules/effect-fade.mjs","webpack:///./node_modules/swiper/shared/swiper-core.mjs","webpack:///(webpack)/buildin/global.js","webpack:///./app/javascript/site/controllers/index.js","webpack:///./node_modules/swiper/shared/ssr-window.esm.mjs","webpack:///./app/javascript/packs/site.js","webpack:///./app/javascript/site/controllers sync \\.js$","webpack:///./app/javascript/site/controllers/detections_carousel_controller.js","webpack:///./app/javascript/site/controllers/photo_gallery_controller.js","webpack:///./app/javascript/site/controllers/scroller_controller.js","webpack:///./app/javascript/site/controllers/stats_controller.js","webpack:///./node_modules/fslightbox/index.js","webpack:///./node_modules/thumbhash/thumbhash.js","webpack:///./app/javascript/site/controllers/thumbhash_controller.js"],"names":["classesToTokens","classes","trim","split","filter","c","deleteProps","obj","object","Object","keys","forEach","key","e","nextTick","callback","delay","setTimeout","now","Date","getTranslate","el","axis","window","matrix","curTransform","transformMatrix","curStyle","style","getComputedStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","o","constructor","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","matches","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","push","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth","module","exports","webpackPolyfill","deprecate","paths","defineProperty","get","l","createElementIfNotDefined","originalParams","checkProps","createElements","auto","className","append","Navigation","extendParams","on","emit","navigation","nextEl","prevEl","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","isElement","querySelectorAll","uniqueNavElements","toggleEl","disabled","subEl","tagName","watchOverflow","enabled","isLocked","update","loop","isBeginning","rewind","isEnd","onPrevClick","preventDefault","slidePrev","onNextClick","slideNext","init","assign","initButton","destroy","destroyButton","remove","disable","_s","targetEl","includes","pagination","clickable","contains","isHidden","toggle","enable","Autoplay","timeout","raf","autoplay","running","paused","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","destroyed","resume","calcTimeLeft","run","delayForce","currentSlideDelay","activeSlideEl","virtual","slides","activeIndex","parseInt","getAttribute","getSlideDelay","Number","isNaN","proceed","slideTo","cssMode","clearTimeout","start","stop","pause","internal","reset","onVisibilityChange","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","clickedIndex","clickedSlide","slideToIndex","slideToLoop","thumbsParams","SwiperClass","watchSlidesProgress","slideToClickedSlide","thumbsSwiperParams","initial","slidesPerView","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","floor","slidesEl","realIndex","useOffset","currentThumbsIndex","newThumbsIndex","direction","newThumbsSlide","previousIndex","visibleSlidesIndexes","slidesPerGroup","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","detail","watchForThumbsToAppear","setTransition","freeMode","once","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","onTouchStart","setTranslate","touchEventsData","velocities","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","position","isHorizontal","touchStartTime","_ref2","rtlTranslate","snapGrid","timeDiff","minTranslate","maxTranslate","lastMoveEvent","pop","velocityEvent","distance","velocity","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","slideToClosest","updateProgress","transitionStart","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs","effectInit","effect","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","containerModifierClass","overwriteParamsResult","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","virtualTranslate","transitionEndTarget","eventTriggered","parentNode","getSlide","getSlideIndex","evt","CustomEvent","bubbles","cancelable","dispatchEvent","EffectFade","fadeEffect","crossFade","tx","swiperSlideOffset","ty","slideOpacity","opacity","transitionDuration","spaceBetween","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","userAgent","support","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","major","minor","num","isWebView","test","calcBrowser","eventsEmitter","events","handler","priority","self","this","eventsListeners","method","event","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","context","_len2","_key2","unshift","processLazyPreloader","imageEl","closest","slideClass","lazyEl","lazyPreloaderClass","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","ceil","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","transitionEmit","runCallbacks","step","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","simulateTouch","preventInteractionOnTransition","touchEventsTarget","which","button","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","host","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","updateSize","threshold","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","targetTouch","changedTouches","t","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","diff","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowSlideNext","allowSlidePrev","startTranslate","grabCursor","setGrabCursor","currentTranslate","loopSwapReset","disableParentSwiper","resistanceRatio","activeSlideIndex","resistance","followFinger","slidesGrid","touchEndTime","pathTree","updateClickedSlide","lastClickTime","stopIndex","groupSize","slidesPerGroupSkip","increment","rewindFirstIndex","rewindLastIndex","ratio","longSwipes","longSwipesRatio","shortSwipes","onResize","breakpoints","setBreakpoint","isVirtual","updateSlides","isVirtualLoop","resizeTimeout","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","onLoad","autoHeight","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","initialSlide","resizeObserver","eventsPrefix","url","setWrapperSize","breakpointsBase","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","loopAddBlankSlides","loopAdditionalSlides","loopPreventsSliding","passiveListeners","maxBackfaceHiddenSlides","slideBlankClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","clientWidth","clientHeight","getDirectionPropertyValue","label","getDirectionLabel","swiperSize","wrongRTL","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","multiplier","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","getFilteredSlide","activeSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","pathEl","slideFound","byController","x","y","translateTo","translateBounds","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transition","transitionDelay","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_cssModeVirtualInitialSet","onSlideToWrapperTransitionEnd","newIndex","targetSlideIndex","cols","needLoopFix","slideRealIndex","perGroup","_clientLeft","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","currentSnap","slideSelector","loopedSlides","loopCreate","setAttribute","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","recalcSlides","byMousewheel","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","matchMedia","wasLocked","lastSlideRightEdge","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","trunc","clickTimeout","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","g","Function","require","Stimulus","load","definitionsFromContext","src","ssrDocument","getElementById","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","history","replaceState","pushState","go","back","Image","id","getWindow","win","webpackContext","req","webpackContextResolve","__webpack_require__","Error","code","resolve","_Class","Controller","connect","fetch","urlValue","then","response","json","sampleSize","ids","countValue","detection","createDetection","containerTarget","appendChild","Swiper","swiperTarget","swiperOptions","div","wrapperClasses","iframe","embedUrl","loading","nextTarget","prevTarget","values","count","default","targets","hasThumbnailsTarget","thumbnails","thumbnailsTarget","thumbnailOptions","thumbnailOptionsValue","Thumbs","swiperOptionsValue","FreeMode","statTargets","stat","dataset","stats","reduce","acc","k","_acc$k","dig","textContent","format","toLocaleString","n","r","d","Symbol","toStringTag","__esModule","create","hasOwnProperty","p","s","concat","u","f","h","S","iterator","w","props","getSourceTypeFromLocalStorageByUrl","handleReceivedSourceTypeForUrl","localStorage","setItem","JSON","stringify","disableLocalStorage","parse","getItem","L","elements","sources","adjustSize","maxSourceWidth","maxSourceHeight","C","collections","sourceSizers","sourceAnimationWrappers","sourceMainWrappers","runActions","removeChild","firstChild","F","handleImageLoad","naturalWidth","naturalHeight","handleVideoLoad","videoWidth","videoHeight","handleNotMetaDatedVideoLoad","handleYoutubeLoad","maxYoutubeDimensions","handleCustomLoad","A","customClasses","I","customAttributes","T","sourceLoadHandlers","onload","E","videosPosters","onloadedmetadata","controls","poster","N","allowFullscreen","W","z","innerHTML","M","sourcesRenderFunctions","core","sourceDisplayFacade","runActionsForSourceTypeAndIndex","displaySourcesWhichShouldBeDisplayed","P","isUrlYoutubeOne","getTypeFromResponseContentType","readyState","getResponseHeader","onreadystatechange","abort","setUrlToCheck","getSourceType","XMLHttpRequest","open","send","H","types","getTypeSetByClientForIndex","retrieveTypeWithXhrForIndex","componentsServices","hideSourceLoaderIfNotYetCollection","sourceWrappersContainer","O","setAttributeNS","R","title","D","fullscreenToggler","enterFullscreen","isFullscreenOpen","exitFullscreen","onclick","lightboxCloser","closeLightbox","container","stageIndexes","setSlideNumber","justifyContent","X","byValue","negative","zero","positive","slideDistance","B","charAt","toUpperCase","U","V","eventsDispatcher","globalEventsController","scrollbarRecompensor","sourcePointerProps","isLightboxFadingOut","removeListeners","exitFullscreenOnClose","isPointering","removeRecompense","dispatch","Y","sourceMainWrappersTransformers","classFacade","slideIndexChanger","stageManager","removeFromEachElementClassIfContains","changeTo","updateStageIndexes","jumpTo","slideChangeFacade","listener","changeToPrevious","changeToNext","q","swipedX","runActionsForEvent","slideSwipingHoverer","screenX","downScreenX","previous","J","G","runPositiveSwipedXActions","runNegativeSwipedXActions","$","K","runNoSwipeActions","isSourceDownEventTarget","Q","Z","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","windowResizeActioner","attachListeners","ne","scrollbarWidth","addRecompense","removeProperty","getPreviousSlideIndex","getNextSlideIndex","sourcesPointerDown","loadOnlyCurrentSource","isSourceInStage","ee","visibility","msOverflowStyle","te","isInitialized","lightboxOpener","oe","re","Reflect","construct","ie","sham","Proxy","setPrototypeOf","__proto__","se","ce","name","TypeError","ae","hasAttribute","fsLightboxInstances","FsLightbox","substring","cloneNode","fsLightbox","createTextNode","head","lightboxUpdater","close","refreshFsLightbox","thumbHashToDataURL","image","round","header24","header16","l_dc","p_dc","q_dc","l_scale","hasAlpha","p_scale","q_scale","isLandscape","lx","ly","a_dc","a_scale","ac_start","ac_index","decodeChannel","nx","ny","scale","ac","cy","cx","l_ac","p_ac","q_ac","a_ac","header","thumbHashToApproximateAspectRatio","rgba","Uint8Array","fx","fy","fy2","thumbHashToRGBA","row","idat","bytes","table","end","btoa","fromCharCode","rgbaToDataURL","backgroundSize","backgroundImage","dataUrl","hashBytes","error","hashValue","atob","charCodeAt"],"mappings":"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","file":"js/site-9d4488a6d25d31003958.chunk.js","sourcesContent":["import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, classesToTokens as h, getTranslate as i, elementTransitionEnd as j, isObject as k, getSlideTransformEl as l, elementStyle as m, nextTick as n, elementNextAll as o, elementPrevAll as p, animateCSSModeScroll as q, showWarning as r, setCSSProperty as s, extend as t, deleteProps as u };","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n module.paths = [];\n // module.parent = undefined by default\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function () {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function () {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n return module;\n};","import { e as elementChildren, c as createElement } from './utils.mjs';\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\nexport { createElementIfNotDefined as c };","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\nexport { Navigation as default };","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\nexport { Autoplay as default };","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { k as isObject, e as elementChildren } from '../shared/utils.mjs';\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\nexport { Thumb as default };","import { d as now, j as elementTransitionEnd } from '../shared/utils.mjs';\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\nexport { freeMode as default };","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\nexport { effectInit as e };","import { l as getSlideTransformEl } from './utils.mjs';\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\nexport { effectTarget as e };","import { j as elementTransitionEnd } from './utils.mjs';\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\nexport { effectVirtualTransitionEnd as e };","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { l as getSlideTransformEl } from '../shared/utils.mjs';\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\nexport { EffectFade as default };","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, m as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, o as elementNextAll, p as elementPrevAll, i as getTranslate, q as animateCSSModeScroll, n as nextTick, r as showWarning, c as createElement, d as now, t as extend, g as elementIndex, u as deleteProps } from './utils.mjs';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n 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 Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n if (gridEnabled) {\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n } else {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n }\n swiper.emitSlidesClasses();\n}\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\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 if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\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 if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\nvar classes = {\n addClasses,\n removeClasses\n};\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport { Swiper as S, defaults as d };","var g;\n\n// This works in non-strict mode\ng = function () {\n return this;\n}();\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;","import { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers'\n\nconst context = require.context('.', true, /\\.js$/)\nStimulus.load(definitionsFromContext(context))\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\nexport { getWindow as a, getDocument as g };","import 'site/controllers'\nrequire('fslightbox')\n","var map = {\n\t\"./detections_carousel_controller.js\": 549,\n\t\"./index.js\": 442,\n\t\"./photo_gallery_controller.js\": 550,\n\t\"./scroller_controller.js\": 551,\n\t\"./stats_controller.js\": 552,\n\t\"./thumbhash_controller.js\": 568\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 548;","import { Controller } from '@hotwired/stimulus'\n\nimport { sampleSize } from 'lodash'\n\nimport Swiper from 'swiper'\nimport { Navigation } from 'swiper/modules'\n\nexport default class extends Controller {\n static values = {\n url: String,\n\n count: {\n type: Number,\n default: 20\n }\n }\n\n static targets = ['swiper', 'container', 'next', 'prev']\n\n static classes = ['wrapper']\n\n connect() {\n fetch(this.urlValue)\n .then(response => response.json())\n .then(data => {\n const ids = sampleSize(data.ids, this.countValue)\n\n ids.forEach(id => {\n const detection = this.createDetection(id)\n this.containerTarget.appendChild(detection)\n })\n })\n .then(() => {\n this.swiper = new Swiper(this.swiperTarget, this.swiperOptions)\n })\n }\n\n createDetection (id) {\n const div = document.createElement('div')\n div.classList.add(...this.wrapperClasses)\n\n const iframe = document.createElement('iframe')\n iframe.classList.add('detection-library-card')\n iframe.src = this.embedUrl(id)\n iframe.loading = 'lazy'\n\n div.appendChild(iframe)\n\n return div\n }\n\n embedUrl (id) {\n return `https://app.birdweather.com/detections/${id}/embed`\n }\n\n get swiperOptions () {\n return {\n modules: [Navigation],\n\n loop: true,\n allowTouchMove: false,\n\n slidesPerView: 1,\n spaceBetween: 12,\n\n breakpoints: {\n 1200: {\n slidesPerView: 4,\n spaceBetween: 20\n },\n\n 992: {\n slidesPerView: 3\n },\n\n 768: {\n slidesPerView: 2\n }\n },\n\n navigation: {\n nextEl: this.nextTarget,\n prevEl: this.prevTarget\n }\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nimport Swiper from 'swiper'\nimport { EffectFade, Thumbs } from 'swiper/modules'\n\nexport default class extends Controller {\n static targets = ['swiper', 'thumbnails']\n static values = {\n swiperOptions: Object,\n thumbnailOptions: Object\n }\n\n connect () {\n if (this.hasThumbnailsTarget) {\n this.thumbnails = new Swiper(this.thumbnailsTarget, this.thumbnailOptions)\n }\n\n this.swiper = new Swiper(this.swiperTarget, this.swiperOptions)\n }\n\n get thumbnailOptions () {\n return {\n slidesPerView: 5,\n watchSlidesProgress: true,\n\n ...this.thumbnailOptionsValue\n }\n }\n\n get swiperOptions () {\n return {\n modules: [EffectFade, Thumbs],\n\n effect: 'fade',\n fadeEffect: {\n crossFade: true\n },\n\n thumbs: {\n swiper: this.thumbnails\n },\n\n ...this.swiperOptionsValue\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nimport Swiper from 'swiper'\nimport { Autoplay, FreeMode } from 'swiper/modules'\n\nexport default class extends Controller {\n connect () {\n this.swiper = new Swiper(this.element, this.swiperOptions)\n }\n\n get swiperOptions () {\n return {\n modules: [Autoplay, FreeMode],\n slidesPerView: 'auto',\n centeredSlides: true,\n loop: true,\n speed: 5000,\n autoplay: {\n enabled: true,\n delay: 0,\n disableOnInteraction: false\n },\n freeMode: {\n enabled: true,\n momentum: false,\n }\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nconst dig = (obj, path) => {\n return path.split(/\\./).reduce((acc, k) => acc?.[k] ?? null, obj)\n}\n\nexport default class extends Controller {\n static targets = [ \"stat\" ]\n static values = { url: String }\n\n connect () {\n fetch(this.urlValue)\n .then(response => response.json())\n .then(data => {\n this.statTargets.forEach(el => {\n const stat = el.dataset.stat\n const value = dig(data.stats, stat)\n\n el.textContent = this.format(value)\n el.classList.remove('loading')\n })\n })\n }\n\n format (value) {\n if (value) {\n return value.toLocaleString()\n } else {\n return '?'\n }\n }\n}\n","!function (e, t) {\n if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = t();else if (\"function\" == typeof define && define.amd) define([], t);else {\n var n = t();\n for (var o in n) (\"object\" == typeof exports ? exports : e)[o] = n[o];\n }\n}(window, function () {\n return function (e) {\n var t = {};\n function n(o) {\n if (t[o]) return t[o].exports;\n var r = t[o] = {\n i: o,\n l: !1,\n exports: {}\n };\n return e[o].call(r.exports, r, r.exports, n), r.l = !0, r.exports;\n }\n return n.m = e, n.c = t, n.d = function (e, t, o) {\n n.o(e, t) || Object.defineProperty(e, t, {\n enumerable: !0,\n get: o\n });\n }, n.r = function (e) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n }, n.t = function (e, t) {\n if (1 & t && (e = n(e)), 8 & t) return e;\n if (4 & t && \"object\" == typeof e && e && e.__esModule) return e;\n var o = Object.create(null);\n if (n.r(o), Object.defineProperty(o, \"default\", {\n enumerable: !0,\n value: e\n }), 2 & t && \"string\" != typeof e) for (var r in e) n.d(o, r, function (t) {\n return e[t];\n }.bind(null, r));\n return o;\n }, n.n = function (e) {\n var t = e && e.__esModule ? function () {\n return e.default;\n } : function () {\n return e;\n };\n return n.d(t, \"a\", t), t;\n }, n.o = function (e, t) {\n return Object.prototype.hasOwnProperty.call(e, t);\n }, n.p = \"\", n(n.s = 0);\n }([function (e, t, n) {\n \"use strict\";\n\n n.r(t);\n var o,\n r = \"fslightbox-\",\n i = \"\".concat(r, \"styles\"),\n s = \"\".concat(r, \"cursor-grabbing\"),\n c = \"\".concat(r, \"full-dimension\"),\n a = \"\".concat(r, \"flex-centered\"),\n l = \"\".concat(r, \"open\"),\n u = \"\".concat(r, \"transform-transition\"),\n d = \"\".concat(r, \"absoluted\"),\n p = \"\".concat(r, \"slide-btn\"),\n f = \"\".concat(p, \"-container\"),\n h = \"\".concat(r, \"fade-in\"),\n m = \"\".concat(r, \"fade-out\"),\n g = h + \"-strong\",\n v = m + \"-strong\",\n b = \"\".concat(r, \"opacity-\"),\n x = \"\".concat(b, \"1\"),\n y = \"\".concat(r, \"source\");\n function S(e) {\n return (S = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) {\n return typeof e;\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n })(e);\n }\n \"object\" === (\"undefined\" == typeof document ? \"undefined\" : S(document)) && ((o = document.createElement(\"style\")).className = i, o.appendChild(document.createTextNode(\".fslightbox-absoluted{position:absolute;top:0;left:0}.fslightbox-fade-in{animation:fslightbox-fade-in .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out{animation:fslightbox-fade-out .3s ease}.fslightbox-fade-in-strong{animation:fslightbox-fade-in-strong .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out-strong{animation:fslightbox-fade-out-strong .3s ease}@keyframes fslightbox-fade-in{from{opacity:.65}to{opacity:1}}@keyframes fslightbox-fade-out{from{opacity:.35}to{opacity:0}}@keyframes fslightbox-fade-in-strong{from{opacity:.3}to{opacity:1}}@keyframes fslightbox-fade-out-strong{from{opacity:1}to{opacity:0}}.fslightbox-cursor-grabbing{cursor:grabbing}.fslightbox-full-dimension{width:100%;height:100%}.fslightbox-open{overflow:hidden;height:100%}.fslightbox-flex-centered{display:flex;justify-content:center;align-items:center}.fslightbox-opacity-0{opacity:0!important}.fslightbox-opacity-1{opacity:1!important}.fslightbox-scrollbarfix{padding-right:17px}.fslightbox-transform-transition{transition:transform .3s}.fslightbox-container{font-family:Arial,sans-serif;position:fixed;top:0;left:0;background:linear-gradient(rgba(30,30,30,.9),#000 1810%);touch-action:pinch-zoom;z-index:1000000000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fslightbox-container *{box-sizing:border-box}.fslightbox-svg-path{transition:fill .15s ease;fill:#ddd}.fslightbox-nav{height:45px;width:100%;position:absolute;top:0;left:0}.fslightbox-slide-number-container{display:flex;justify-content:center;align-items:center;position:relative;height:100%;font-size:15px;color:#d7d7d7;z-index:0;max-width:55px;text-align:left}.fslightbox-slide-number-container .fslightbox-flex-centered{height:100%}.fslightbox-slash{display:block;margin:0 5px;width:1px;height:12px;transform:rotate(15deg);background:#fff}.fslightbox-toolbar{position:absolute;z-index:3;right:0;top:0;height:100%;display:flex;background:rgba(35,35,35,.65)}.fslightbox-toolbar-button{height:100%;width:45px;cursor:pointer}.fslightbox-toolbar-button:hover .fslightbox-svg-path{fill:#fff}.fslightbox-slide-btn-container{display:flex;align-items:center;padding:12px 12px 12px 6px;position:absolute;top:50%;cursor:pointer;z-index:3;transform:translateY(-50%)}@media (min-width:476px){.fslightbox-slide-btn-container{padding:22px 22px 22px 6px}}@media (min-width:768px){.fslightbox-slide-btn-container{padding:30px 30px 30px 6px}}.fslightbox-slide-btn-container:hover .fslightbox-svg-path{fill:#f1f1f1}.fslightbox-slide-btn{padding:9px;font-size:26px;background:rgba(35,35,35,.65)}@media (min-width:768px){.fslightbox-slide-btn{padding:10px}}@media (min-width:1600px){.fslightbox-slide-btn{padding:11px}}.fslightbox-slide-btn-container-previous{left:0}@media (max-width:475.99px){.fslightbox-slide-btn-container-previous{padding-left:3px}}.fslightbox-slide-btn-container-next{right:0;padding-left:12px;padding-right:3px}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-left:22px}}@media (min-width:768px){.fslightbox-slide-btn-container-next{padding-left:30px}}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-right:6px}}.fslightbox-down-event-detector{position:absolute;z-index:1}.fslightbox-slide-swiping-hoverer{z-index:4}.fslightbox-invalid-file-wrapper{font-size:22px;color:#eaebeb;margin:auto}.fslightbox-video{object-fit:cover}.fslightbox-youtube-iframe{border:0}.fslightbox-loader{display:block;margin:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:67px;height:67px}.fslightbox-loader div{box-sizing:border-box;display:block;position:absolute;width:54px;height:54px;margin:6px;border:5px solid;border-color:#999 transparent transparent transparent;border-radius:50%;animation:fslightbox-loader 1.2s cubic-bezier(.5,0,.5,1) infinite}.fslightbox-loader div:nth-child(1){animation-delay:-.45s}.fslightbox-loader div:nth-child(2){animation-delay:-.3s}.fslightbox-loader div:nth-child(3){animation-delay:-.15s}@keyframes fslightbox-loader{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fslightbox-source{position:relative;z-index:2;opacity:0}\")), document.head.appendChild(o));\n function w(e) {\n var t,\n n = e.props,\n o = 0,\n r = {};\n this.getSourceTypeFromLocalStorageByUrl = function (e) {\n return t[e] ? t[e] : i(e);\n }, this.handleReceivedSourceTypeForUrl = function (e, n) {\n !1 === r[n] && (o--, \"invalid\" !== e ? r[n] = e : delete r[n], 0 === o && (!function (e, t) {\n for (var n in t) e[n] = t[n];\n }(t, r), localStorage.setItem(\"fslightbox-types\", JSON.stringify(t))));\n };\n var i = function (e) {\n o++, r[e] = !1;\n };\n n.disableLocalStorage ? (this.getSourceTypeFromLocalStorageByUrl = function () {}, this.handleReceivedSourceTypeForUrl = function () {}) : (t = JSON.parse(localStorage.getItem(\"fslightbox-types\"))) || (t = {}, this.getSourceTypeFromLocalStorageByUrl = i);\n }\n function L(e, t, n, o) {\n var r = e.data,\n i = e.elements.sources,\n s = n / o,\n c = 0;\n this.adjustSize = function () {\n if ((c = r.maxSourceWidth / s) < r.maxSourceHeight) return n < r.maxSourceWidth && (c = o), a();\n c = o > r.maxSourceHeight ? r.maxSourceHeight : o, a();\n };\n var a = function () {\n i[t].style.width = c * s + \"px\", i[t].style.height = c + \"px\";\n };\n }\n function C(e, t) {\n var n = this,\n o = e.collections.sourceSizers,\n r = e.elements,\n i = r.sourceAnimationWrappers,\n s = r.sourceMainWrappers,\n c = r.sources,\n a = e.resolve;\n function l(e, n) {\n o[t] = a(L, [t, e, n]), o[t].adjustSize();\n }\n this.runActions = function (e, o) {\n c[t].classList.add(x), i[t].classList.add(g), s[t].removeChild(s[t].firstChild), l(e, o), n.runActions = l;\n };\n }\n function F(e, t) {\n var n,\n o = this,\n r = e.elements.sources,\n i = e.props,\n s = (0, e.resolve)(C, [t]);\n this.handleImageLoad = function (e) {\n var t = e.target,\n n = t.naturalWidth,\n o = t.naturalHeight;\n s.runActions(n, o);\n }, this.handleVideoLoad = function (e) {\n var t = e.target,\n o = t.videoWidth,\n r = t.videoHeight;\n n = !0, s.runActions(o, r);\n }, this.handleNotMetaDatedVideoLoad = function () {\n n || o.handleYoutubeLoad();\n }, this.handleYoutubeLoad = function () {\n var e = 1920,\n t = 1080;\n i.maxYoutubeDimensions && (e = i.maxYoutubeDimensions.width, t = i.maxYoutubeDimensions.height), s.runActions(e, t);\n }, this.handleCustomLoad = function () {\n setTimeout(function () {\n var e = r[t];\n s.runActions(e.offsetWidth, e.offsetHeight);\n });\n };\n }\n function A(e, t, n) {\n var o = e.elements.sources,\n r = e.props.customClasses,\n i = r[t] ? r[t] : \"\";\n o[t].className = n + \" \" + i;\n }\n function I(e, t) {\n var n = e.elements.sources,\n o = e.props.customAttributes;\n for (var r in o[t]) n[t].setAttribute(r, o[t][r]);\n }\n function T(e, t) {\n var n = e.collections.sourceLoadHandlers,\n o = e.elements,\n r = o.sources,\n i = o.sourceAnimationWrappers,\n s = e.props.sources;\n r[t] = document.createElement(\"img\"), A(e, t, y), r[t].src = s[t], r[t].onload = n[t].handleImageLoad, I(e, t), i[t].appendChild(r[t]);\n }\n function E(e, t) {\n var n = e.collections.sourceLoadHandlers,\n o = e.elements,\n r = o.sources,\n i = o.sourceAnimationWrappers,\n s = e.props,\n c = s.sources,\n a = s.videosPosters;\n r[t] = document.createElement(\"video\"), A(e, t, y), r[t].src = c[t], r[t].onloadedmetadata = function (e) {\n n[t].handleVideoLoad(e);\n }, r[t].controls = !0, I(e, t), a[t] && (r[t].poster = a[t]);\n var l = document.createElement(\"source\");\n l.src = c[t], r[t].appendChild(l), setTimeout(n[t].handleNotMetaDatedVideoLoad, 3e3), i[t].appendChild(r[t]);\n }\n function N(e, t) {\n var n = e.collections.sourceLoadHandlers,\n o = e.elements,\n i = o.sources,\n s = o.sourceAnimationWrappers,\n c = e.props.sources;\n i[t] = document.createElement(\"iframe\"), A(e, t, \"\".concat(y, \" \").concat(r, \"youtube-iframe\")), i[t].src = \"https://www.youtube.com/embed/\".concat(c[t].match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/)[2], \"?enablejsapi=1\"), i[t].allowFullscreen = !0, I(e, t), s[t].appendChild(i[t]), n[t].handleYoutubeLoad();\n }\n function W(e, t) {\n var n = e.collections.sourceLoadHandlers,\n o = e.elements,\n r = o.sources,\n i = o.sourceAnimationWrappers,\n s = e.props.sources;\n r[t] = s[t], A(e, t, \"\".concat(r[t].className, \" \").concat(y)), i[t].appendChild(r[t]), n[t].handleCustomLoad();\n }\n function z(e, t) {\n var n = e.elements,\n o = n.sources,\n i = n.sourceAnimationWrappers,\n s = n.sourceMainWrappers;\n e.props.sources;\n o[t] = document.createElement(\"div\"), o[t].className = \"\".concat(r, \"invalid-file-wrapper \").concat(a), o[t].innerHTML = \"Invalid source\", i[t].classList.add(g), i[t].appendChild(o[t]), s[t].removeChild(s[t].firstChild);\n }\n function M(e) {\n var t = e.collections,\n n = t.sourceLoadHandlers,\n o = t.sourcesRenderFunctions,\n r = e.core.sourceDisplayFacade,\n i = e.resolve;\n this.runActionsForSourceTypeAndIndex = function (t, s) {\n var c;\n switch (\"invalid\" !== t && (n[s] = i(F, [s])), t) {\n case \"image\":\n c = T;\n break;\n case \"video\":\n c = E;\n break;\n case \"youtube\":\n c = N;\n break;\n case \"custom\":\n c = W;\n break;\n default:\n c = z;\n }\n o[s] = function () {\n return c(e, s);\n }, r.displaySourcesWhichShouldBeDisplayed();\n };\n }\n function P() {\n var e,\n t,\n n,\n o = {\n isUrlYoutubeOne: function (e) {\n var t = document.createElement(\"a\");\n return t.href = e, \"www.youtube.com\" === t.hostname;\n },\n getTypeFromResponseContentType: function (e) {\n return e.slice(0, e.indexOf(\"/\"));\n }\n };\n function r() {\n if (4 !== n.readyState) {\n if (2 === n.readyState) {\n var e;\n switch (o.getTypeFromResponseContentType(n.getResponseHeader(\"content-type\"))) {\n case \"image\":\n e = \"image\";\n break;\n case \"video\":\n e = \"video\";\n break;\n default:\n e = \"invalid\";\n }\n n.onreadystatechange = null, n.abort(), t(e);\n }\n } else t(\"invalid\");\n }\n this.setUrlToCheck = function (t) {\n e = t;\n }, this.getSourceType = function (i) {\n if (o.isUrlYoutubeOne(e)) return i(\"youtube\");\n t = i, (n = new XMLHttpRequest()).onreadystatechange = r, n.open(\"GET\", e, !0), n.send();\n };\n }\n function H(e, t, n) {\n var o = e.props,\n r = o.types,\n i = o.type,\n s = o.sources,\n c = e.resolve;\n this.getTypeSetByClientForIndex = function (e) {\n var t;\n return r && r[e] ? t = r[e] : i && (t = i), t;\n }, this.retrieveTypeWithXhrForIndex = function (e) {\n var o = c(P);\n o.setUrlToCheck(s[e]), o.getSourceType(function (o) {\n t.handleReceivedSourceTypeForUrl(o, s[e]), n.runActionsForSourceTypeAndIndex(o, e);\n });\n };\n }\n function k(e, t) {\n var n = e.componentsServices.hideSourceLoaderIfNotYetCollection,\n o = e.elements,\n r = o.sourceWrappersContainer,\n i = o.sourceMainWrappers;\n i[t] = document.createElement(\"div\"), i[t].className = \"\".concat(d, \" \").concat(c, \" \").concat(a), i[t].innerHTML = '
';\n var s = i[t].firstChild;\n n[t] = function () {\n i[t].contains(s) && i[t].removeChild(s);\n }, r.appendChild(i[t]), function (e, t) {\n var n = e.elements,\n o = n.sourceMainWrappers,\n r = n.sourceAnimationWrappers;\n r[t] = document.createElement(\"div\"), o[t].appendChild(r[t]);\n }(e, t);\n }\n function O(e, t, n, o) {\n var i = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n i.setAttributeNS(null, \"width\", t), i.setAttributeNS(null, \"height\", t), i.setAttributeNS(null, \"viewBox\", n);\n var s = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n return s.setAttributeNS(null, \"class\", \"\".concat(r, \"svg-path\")), s.setAttributeNS(null, \"d\", o), i.appendChild(s), e.appendChild(i), i;\n }\n function R(e, t) {\n var n = document.createElement(\"div\");\n return n.className = \"\".concat(r, \"toolbar-button \").concat(a), n.title = t, e.appendChild(n), n;\n }\n function D(e, t) {\n var n = document.createElement(\"div\");\n n.className = \"\".concat(r, \"toolbar\"), t.appendChild(n), function (e, t) {\n var n = e.componentsServices,\n o = e.core.fullscreenToggler,\n r = e.data,\n i = \"M4.5 11H3v4h4v-1.5H4.5V11zM3 7h1.5V4.5H7V3H3v4zm10.5 6.5H11V15h4v-4h-1.5v2.5zM11 3v1.5h2.5V7H15V3h-4z\",\n s = R(t);\n s.title = \"Enter fullscreen\";\n var c = O(s, \"20px\", \"0 0 18 18\", i);\n n.enterFullscreen = function () {\n r.isFullscreenOpen = !0, s.title = \"Exit fullscreen\", c.setAttributeNS(null, \"width\", \"24px\"), c.setAttributeNS(null, \"height\", \"24px\"), c.setAttributeNS(null, \"viewBox\", \"0 0 950 1024\"), c.firstChild.setAttributeNS(null, \"d\", \"M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z\");\n }, n.exitFullscreen = function () {\n r.isFullscreenOpen = !1, s.title = \"Enter fullscreen\", c.setAttributeNS(null, \"width\", \"20px\"), c.setAttributeNS(null, \"height\", \"20px\"), c.setAttributeNS(null, \"viewBox\", \"0 0 18 18\"), c.firstChild.setAttributeNS(null, \"d\", i);\n }, s.onclick = function () {\n r.isFullscreenOpen ? o.exitFullscreen() : o.enterFullscreen();\n };\n }(e, n), function (e, t) {\n var n = R(t, \"Close\");\n n.onclick = e.core.lightboxCloser.closeLightbox, O(n, \"20px\", \"0 0 24 24\", \"M 4.7070312 3.2929688 L 3.2929688 4.7070312 L 10.585938 12 L 3.2929688 19.292969 L 4.7070312 20.707031 L 12 13.414062 L 19.292969 20.707031 L 20.707031 19.292969 L 13.414062 12 L 20.707031 4.7070312 L 19.292969 3.2929688 L 12 10.585938 L 4.7070312 3.2929688 z\");\n }(e, n);\n }\n function j(e) {\n var t = e.props.sources,\n n = e.elements.container,\n o = document.createElement(\"div\");\n o.className = \"\".concat(r, \"nav\"), n.appendChild(o), D(e, o), t.length > 1 && function (e, t) {\n var n = e.componentsServices,\n o = e.props.sources,\n i = (e.stageIndexes, document.createElement(\"div\"));\n i.className = \"\".concat(r, \"slide-number-container\");\n var s = document.createElement(\"div\");\n s.className = a;\n var c = document.createElement(\"span\");\n n.setSlideNumber = function (e) {\n return c.innerHTML = e;\n };\n var l = document.createElement(\"span\");\n l.className = \"\".concat(r, \"slash\");\n var u = document.createElement(\"div\");\n u.innerHTML = o.length, i.appendChild(s), s.appendChild(c), s.appendChild(l), s.appendChild(u), t.appendChild(i), setTimeout(function () {\n s.offsetWidth > 55 && (i.style.justifyContent = \"flex-start\");\n });\n }(e, o);\n }\n function X(e, t) {\n var n = this,\n o = e.elements.sourceMainWrappers,\n r = e.props,\n i = 0;\n this.byValue = function (e) {\n return i = e, n;\n }, this.negative = function () {\n s(-c());\n }, this.zero = function () {\n s(0);\n }, this.positive = function () {\n s(c());\n };\n var s = function (e) {\n o[t].style.transform = \"translateX(\".concat(e + i, \"px)\"), i = 0;\n },\n c = function () {\n return (1 + r.slideDistance) * innerWidth;\n };\n }\n function B(e, t, n, o) {\n var r = e.elements.container,\n i = n.charAt(0).toUpperCase() + n.slice(1),\n s = document.createElement(\"div\");\n s.className = \"\".concat(f, \" \").concat(f, \"-\").concat(n), s.title = \"\".concat(i, \" slide\"), s.onclick = t, function (e, t) {\n var n = document.createElement(\"div\");\n n.className = \"\".concat(p, \" \").concat(a), O(n, \"20px\", \"0 0 20 20\", t), e.appendChild(n);\n }(s, o), r.appendChild(s);\n }\n function U(e, t) {\n var n = e.classList;\n n.contains(t) && n.remove(t);\n }\n function V(e) {\n var t = this,\n n = e.core,\n o = n.eventsDispatcher,\n r = n.fullscreenToggler,\n i = n.globalEventsController,\n s = n.scrollbarRecompensor,\n c = e.data,\n a = e.elements,\n u = e.props,\n d = e.sourcePointerProps;\n this.isLightboxFadingOut = !1, this.runActions = function () {\n t.isLightboxFadingOut = !0, a.container.classList.add(v), i.removeListeners(), u.exitFullscreenOnClose && c.isFullscreenOpen && r.exitFullscreen(), setTimeout(function () {\n t.isLightboxFadingOut = !1, d.isPointering = !1, a.container.classList.remove(v), document.documentElement.classList.remove(l), s.removeRecompense(), document.body.removeChild(a.container), o.dispatch(\"onClose\");\n }, 270);\n };\n }\n function Y(e) {\n var t,\n n,\n o,\n r = e.collections.sourceMainWrappersTransformers,\n i = e.componentsServices,\n s = e.core,\n c = s.classFacade,\n a = s.slideIndexChanger,\n l = s.sourceDisplayFacade,\n d = s.stageManager,\n p = e.elements.sourceAnimationWrappers,\n f = e.stageIndexes,\n v = (t = function () {\n c.removeFromEachElementClassIfContains(\"sourceAnimationWrappers\", m);\n }, n = 300, o = [], function () {\n o.push(!0), setTimeout(function () {\n o.pop(), o.length || t();\n }, n);\n });\n a.changeTo = function (e) {\n f.current = e, d.updateStageIndexes(), i.setSlideNumber(e + 1), l.displaySourcesWhichShouldBeDisplayed();\n }, a.jumpTo = function (e) {\n var t = f.current;\n a.changeTo(e), c.removeFromEachElementClassIfContains(\"sourceMainWrappers\", u), U(p[t], g), U(p[t], h), p[t].classList.add(m), U(p[e], g), U(p[e], m), p[e].classList.add(h), v(), r[e].zero(), setTimeout(function () {\n t !== f.current && r[t].negative();\n }, 270);\n };\n }\n function _(e) {\n var t = e.core,\n n = t.lightboxCloser,\n o = t.fullscreenToggler,\n r = t.slideChangeFacade;\n this.listener = function (e) {\n switch (e.key) {\n case \"Escape\":\n n.closeLightbox();\n break;\n case \"ArrowLeft\":\n r.changeToPrevious();\n break;\n case \"ArrowRight\":\n r.changeToNext();\n break;\n case \"F11\":\n e.preventDefault(), o.enterFullscreen();\n }\n };\n }\n function q(e) {\n var t = e.collections.sourceMainWrappersTransformers,\n n = e.elements,\n o = e.sourcePointerProps,\n r = e.stageIndexes;\n function i(e, n) {\n t[e].byValue(o.swipedX)[n]();\n }\n this.runActionsForEvent = function (e) {\n var t, c, a;\n n.container.contains(n.slideSwipingHoverer) || n.container.appendChild(n.slideSwipingHoverer), t = n.container, c = s, (a = t.classList).contains(c) || a.add(c), o.swipedX = e.screenX - o.downScreenX, i(r.current, \"zero\"), void 0 !== r.previous && o.swipedX > 0 ? i(r.previous, \"negative\") : void 0 !== r.next && o.swipedX < 0 && i(r.next, \"positive\");\n };\n }\n function J(e) {\n var t = e.props.sources,\n n = e.resolve,\n o = e.sourcePointerProps,\n r = n(q);\n 1 === t.length ? this.listener = function () {\n o.swipedX = 1;\n } : this.listener = function (e) {\n o.isPointering && r.runActionsForEvent(e);\n };\n }\n function G(e) {\n var t = e.collections.sourceMainWrappersTransformers,\n n = e.core.slideIndexChanger,\n o = e.elements.sourceMainWrappers,\n r = e.stageIndexes;\n this.runPositiveSwipedXActions = function () {\n void 0 === r.previous || (i(\"positive\"), n.changeTo(r.previous)), i(\"zero\");\n }, this.runNegativeSwipedXActions = function () {\n void 0 === r.next || (i(\"negative\"), n.changeTo(r.next)), i(\"zero\");\n };\n var i = function (e) {\n o[r.current].classList.add(u), t[r.current][e]();\n };\n }\n function $(e, t) {\n e.contains(t) && e.removeChild(t);\n }\n function K(e) {\n var t = e.core.lightboxCloser,\n n = e.elements,\n o = e.resolve,\n r = e.sourcePointerProps,\n i = o(G);\n this.runNoSwipeActions = function () {\n $(n.container, n.slideSwipingHoverer), r.isSourceDownEventTarget || t.closeLightbox(), r.isPointering = !1;\n }, this.runActions = function () {\n r.swipedX > 0 ? i.runPositiveSwipedXActions() : i.runNegativeSwipedXActions(), $(n.container, n.slideSwipingHoverer), n.container.classList.remove(s), r.isPointering = !1;\n };\n }\n function Q(e) {\n var t = e.resolve,\n n = e.sourcePointerProps,\n o = t(K);\n this.listener = function () {\n n.isPointering && (n.swipedX ? o.runActions() : o.runNoSwipeActions());\n };\n }\n function Z(e) {\n var t, n, o;\n n = (t = e).core.classFacade, o = t.elements, n.removeFromEachElementClassIfContains = function (e, t) {\n for (var n = 0; n < o[e].length; n++) U(o[e][n], t);\n }, function (e) {\n var t = e.core.eventsDispatcher,\n n = e.props;\n t.dispatch = function (e) {\n n[e] && n[e]();\n };\n }(e), function (e) {\n var t = e.componentsServices,\n n = e.core.fullscreenToggler;\n n.enterFullscreen = function () {\n t.enterFullscreen();\n var e = document.documentElement;\n e.requestFullscreen ? e.requestFullscreen() : e.mozRequestFullScreen ? e.mozRequestFullScreen() : e.webkitRequestFullscreen ? e.webkitRequestFullscreen() : e.msRequestFullscreen && e.msRequestFullscreen();\n }, n.exitFullscreen = function () {\n t.exitFullscreen(), document.exitFullscreen ? document.exitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen ? document.webkitExitFullscreen() : document.msExitFullscreen && document.msExitFullscreen();\n };\n }(e), function (e) {\n var t = e.core,\n n = t.globalEventsController,\n o = t.windowResizeActioner,\n r = e.resolve,\n i = r(_),\n s = r(J),\n c = r(Q);\n n.attachListeners = function () {\n document.addEventListener(\"pointermove\", s.listener), document.addEventListener(\"pointerup\", c.listener), addEventListener(\"resize\", o.runActions), document.addEventListener(\"keydown\", i.listener);\n }, n.removeListeners = function () {\n document.removeEventListener(\"pointermove\", s.listener), document.removeEventListener(\"pointerup\", c.listener), removeEventListener(\"resize\", o.runActions), document.removeEventListener(\"keydown\", i.listener);\n };\n }(e), function (e) {\n var t = e.core.lightboxCloser,\n n = (0, e.resolve)(V);\n t.closeLightbox = function () {\n n.isLightboxFadingOut || n.runActions();\n };\n }(e), ne(e), function (e) {\n var t = e.data,\n n = e.core.scrollbarRecompensor;\n function o() {\n document.body.offsetHeight > innerHeight && (document.body.style.marginRight = t.scrollbarWidth + \"px\");\n }\n n.addRecompense = function () {\n \"complete\" === document.readyState ? o() : addEventListener(\"load\", function () {\n o(), n.addRecompense = o;\n });\n }, n.removeRecompense = function () {\n document.body.style.removeProperty(\"margin-right\");\n };\n }(e), function (e) {\n var t = e.core,\n n = t.slideChangeFacade,\n o = t.slideIndexChanger,\n r = t.stageManager;\n e.props.sources.length > 1 ? (n.changeToPrevious = function () {\n o.jumpTo(r.getPreviousSlideIndex());\n }, n.changeToNext = function () {\n o.jumpTo(r.getNextSlideIndex());\n }) : (n.changeToPrevious = function () {}, n.changeToNext = function () {});\n }(e), Y(e), function (e) {\n var t = e.core,\n n = t.classFacade,\n o = t.sourcesPointerDown,\n r = e.elements.sources,\n i = e.sourcePointerProps,\n s = e.stageIndexes;\n o.listener = function (e) {\n \"VIDEO\" !== e.target.tagName && e.preventDefault(), i.isPointering = !0, i.downScreenX = e.screenX, i.swipedX = 0;\n var t = r[s.current];\n t && t.contains(e.target) ? i.isSourceDownEventTarget = !0 : i.isSourceDownEventTarget = !1, n.removeFromEachElementClassIfContains(\"sourceMainWrappers\", u);\n };\n }(e), function (e) {\n var t = e.collections.sourcesRenderFunctions,\n n = e.core.sourceDisplayFacade,\n o = e.props,\n r = e.stageIndexes;\n function i(e) {\n t[e] && (t[e](), delete t[e]);\n }\n n.displaySourcesWhichShouldBeDisplayed = function () {\n if (o.loadOnlyCurrentSource) i(r.current);else for (var e in r) i(r[e]);\n };\n }(e), function (e) {\n var t = e.stageIndexes,\n n = e.core.stageManager,\n o = e.props.sources.length - 1;\n n.getPreviousSlideIndex = function () {\n return 0 === t.current ? o : t.current - 1;\n }, n.getNextSlideIndex = function () {\n return t.current === o ? 0 : t.current + 1;\n }, n.updateStageIndexes = 0 === o ? function () {} : 1 === o ? function () {\n 0 === t.current ? (t.next = 1, delete t.previous) : (t.previous = 0, delete t.next);\n } : function () {\n t.previous = n.getPreviousSlideIndex(), t.next = n.getNextSlideIndex();\n }, n.isSourceInStage = o <= 2 ? function () {\n return !0;\n } : function (e) {\n var n = t.current;\n if (0 === n && e === o || n === o && 0 === e) return !0;\n var r = n - e;\n return -1 === r || 0 === r || 1 === r;\n };\n }(e), function (e) {\n var t = e.collections,\n n = t.sourceMainWrappersTransformers,\n o = t.sourceSizers,\n r = e.core.windowResizeActioner,\n i = e.data,\n s = e.elements.sourceMainWrappers,\n c = e.props,\n a = e.stageIndexes;\n r.runActions = function () {\n innerWidth < 992 ? i.maxSourceWidth = innerWidth : i.maxSourceWidth = .9 * innerWidth, i.maxSourceHeight = .9 * innerHeight;\n for (var e = 0; e < c.sources.length; e++) U(s[e], u), e !== a.current && n[e].negative(), o[e] && o[e].adjustSize();\n };\n }(e);\n }\n function ee(e) {\n var t = e.props.disableLocalStorage;\n if (!t) {\n var n = localStorage.getItem(\"fslightbox-scrollbar-width\");\n if (n) return n;\n }\n var o = function () {\n var e = document.createElement(\"div\"),\n t = e.style;\n return t.visibility = \"hidden\", t.width = \"100px\", t.msOverflowStyle = \"scrollbar\", t.overflow = \"scroll\", e;\n }(),\n r = function () {\n var e = document.createElement(\"div\");\n return e.style.width = \"100%\", e;\n }();\n document.body.appendChild(o);\n var i = o.offsetWidth;\n o.appendChild(r);\n var s = r.offsetWidth;\n document.body.removeChild(o);\n var c = i - s;\n return t || localStorage.setItem(\"fslightbox-scrollbar-width\", c.toString()), c;\n }\n function te(e) {\n var t = e.core.eventsDispatcher,\n n = e.data,\n o = e.elements,\n i = e.props.sources;\n n.isInitialized = !0, n.scrollbarWidth = ee(e), function (e) {\n for (var t = e.collections.sourceMainWrappersTransformers, n = e.props.sources, o = e.resolve, r = 0; r < n.length; r++) t[r] = o(X, [r]);\n }(e), Z(e), o.container = document.createElement(\"div\"), o.container.className = \"\".concat(r, \"container \").concat(c, \" \").concat(g), function (e) {\n var t = e.elements;\n t.slideSwipingHoverer = document.createElement(\"div\"), t.slideSwipingHoverer.className = \"\".concat(r, \"slide-swiping-hoverer \").concat(c, \" \").concat(d);\n }(e), j(e), function (e) {\n var t = e.core.sourcesPointerDown,\n n = e.elements,\n o = e.props.sources,\n r = document.createElement(\"div\");\n r.className = \"\".concat(d, \" \").concat(c), n.container.appendChild(r), r.addEventListener(\"pointerdown\", t.listener), n.sourceWrappersContainer = r;\n for (var i = 0; i < o.length; i++) k(e, i);\n }(e), i.length > 1 && function (e) {\n var t = e.core.slideChangeFacade;\n B(e, t.changeToPrevious, \"previous\", \"M18.271,9.212H3.615l4.184-4.184c0.306-0.306,0.306-0.801,0-1.107c-0.306-0.306-0.801-0.306-1.107,0L1.21,9.403C1.194,9.417,1.174,9.421,1.158,9.437c-0.181,0.181-0.242,0.425-0.209,0.66c0.005,0.038,0.012,0.071,0.022,0.109c0.028,0.098,0.075,0.188,0.142,0.271c0.021,0.026,0.021,0.061,0.045,0.085c0.015,0.016,0.034,0.02,0.05,0.033l5.484,5.483c0.306,0.307,0.801,0.307,1.107,0c0.306-0.305,0.306-0.801,0-1.105l-4.184-4.185h14.656c0.436,0,0.788-0.353,0.788-0.788S18.707,9.212,18.271,9.212z\"), B(e, t.changeToNext, \"next\", \"M1.729,9.212h14.656l-4.184-4.184c-0.307-0.306-0.307-0.801,0-1.107c0.305-0.306,0.801-0.306,1.106,0l5.481,5.482c0.018,0.014,0.037,0.019,0.053,0.034c0.181,0.181,0.242,0.425,0.209,0.66c-0.004,0.038-0.012,0.071-0.021,0.109c-0.028,0.098-0.075,0.188-0.143,0.271c-0.021,0.026-0.021,0.061-0.045,0.085c-0.015,0.016-0.034,0.02-0.051,0.033l-5.483,5.483c-0.306,0.307-0.802,0.307-1.106,0c-0.307-0.305-0.307-0.801,0-1.105l4.184-4.185H1.729c-0.436,0-0.788-0.353-0.788-0.788S1.293,9.212,1.729,9.212z\");\n }(e), function (e) {\n for (var t = e.props.sources, n = e.resolve, o = n(w), r = n(M), i = n(H, [o, r]), s = 0; s < t.length; s++) if (\"string\" == typeof t[s]) {\n var c = i.getTypeSetByClientForIndex(s);\n if (c) r.runActionsForSourceTypeAndIndex(c, s);else {\n var a = o.getSourceTypeFromLocalStorageByUrl(t[s]);\n a ? r.runActionsForSourceTypeAndIndex(a, s) : i.retrieveTypeWithXhrForIndex(s);\n }\n } else r.runActionsForSourceTypeAndIndex(\"custom\", s);\n }(e), t.dispatch(\"onInit\");\n }\n function ne(e) {\n var t = e.collections.sourceMainWrappersTransformers,\n n = e.componentsServices,\n o = e.core,\n r = o.eventsDispatcher,\n i = o.lightboxOpener,\n s = o.globalEventsController,\n c = o.scrollbarRecompensor,\n a = o.sourceDisplayFacade,\n u = o.stageManager,\n d = o.windowResizeActioner,\n p = e.data,\n f = e.elements,\n h = e.stageIndexes;\n i.open = function () {\n var o = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\n h.current = o, p.isInitialized ? r.dispatch(\"onShow\") : te(e), u.updateStageIndexes(), a.displaySourcesWhichShouldBeDisplayed(), n.setSlideNumber(o + 1), document.body.appendChild(f.container), document.documentElement.classList.add(l), c.addRecompense(), s.attachListeners(), d.runActions(), t[h.current].zero(), r.dispatch(\"onOpen\");\n };\n }\n function oe(e, t, n) {\n return (oe = re() ? Reflect.construct : function (e, t, n) {\n var o = [null];\n o.push.apply(o, t);\n var r = new (Function.bind.apply(e, o))();\n return n && ie(r, n.prototype), r;\n }).apply(null, arguments);\n }\n function re() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Date.prototype.toString.call(Reflect.construct(Date, [], function () {})), !0;\n } catch (e) {\n return !1;\n }\n }\n function ie(e, t) {\n return (ie = Object.setPrototypeOf || function (e, t) {\n return e.__proto__ = t, e;\n })(e, t);\n }\n function se(e) {\n return function (e) {\n if (Array.isArray(e)) return ce(e);\n }(e) || function (e) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e);\n }(e) || function (e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return ce(e, t);\n var n = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === n && e.constructor && (n = e.constructor.name);\n if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return ce(e, t);\n }(e) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function ce(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var n = 0, o = new Array(t); n < t; n++) o[n] = e[n];\n return o;\n }\n function ae() {\n for (var e = document.getElementsByTagName(\"a\"), t = function (t) {\n if (!e[t].hasAttribute(\"data-fslightbox\")) return \"continue\";\n var n = e[t].getAttribute(\"data-fslightbox\"),\n o = e[t].getAttribute(\"href\");\n fsLightboxInstances[n] || (fsLightboxInstances[n] = new FsLightbox());\n var r = null;\n \"#\" === o.charAt(0) ? (r = document.getElementById(o.substring(1)).cloneNode(!0)).removeAttribute(\"id\") : r = o, fsLightboxInstances[n].props.sources.push(r), fsLightboxInstances[n].elements.a.push(e[t]);\n var i = fsLightboxInstances[n].props.sources.length - 1;\n e[t].onclick = function (e) {\n e.preventDefault(), fsLightboxInstances[n].open(i);\n }, d(\"types\", \"data-type\"), d(\"videosPosters\", \"data-video-poster\"), d(\"customClasses\", \"data-class\"), d(\"customClasses\", \"data-custom-class\");\n for (var s = [\"href\", \"data-fslightbox\", \"data-type\", \"data-video-poster\", \"data-class\", \"data-custom-class\"], c = e[t].attributes, a = fsLightboxInstances[n].props.customAttributes, l = 0; l < c.length; l++) if (-1 === s.indexOf(c[l].name) && \"data-\" === c[l].name.substr(0, 5)) {\n a[i] || (a[i] = {});\n var u = c[l].name.substr(5);\n a[i][u] = c[l].value;\n }\n function d(o, r) {\n e[t].hasAttribute(r) && (fsLightboxInstances[n].props[o][i] = e[t].getAttribute(r));\n }\n }, n = 0; n < e.length; n++) t(n);\n var o = Object.keys(fsLightboxInstances);\n window.fsLightbox = fsLightboxInstances[o[o.length - 1]];\n }\n window.FsLightbox = function () {\n var e = this;\n this.props = {\n sources: [],\n customAttributes: [],\n customClasses: [],\n types: [],\n videosPosters: [],\n slideDistance: .3\n }, this.data = {\n isInitialized: !1,\n isFullscreenOpen: !1,\n maxSourceWidth: 0,\n maxSourceHeight: 0,\n scrollbarWidth: 0\n }, this.sourcePointerProps = {\n downScreenX: null,\n isPointering: !1,\n isSourceDownEventTarget: !1,\n swipedX: 0\n }, this.stageIndexes = {}, this.elements = {\n a: [],\n container: null,\n slideSwipingHoverer: null,\n sourceWrappersContainer: null,\n sources: [],\n sourceMainWrappers: [],\n sourceAnimationWrappers: []\n }, this.componentsServices = {\n enterFullscreen: null,\n exitFullscreen: null,\n hideSourceLoaderIfNotYetCollection: [],\n setSlideNumber: function () {}\n }, this.resolve = function (t) {\n var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n return n.unshift(e), oe(t, se(n));\n }, this.collections = {\n sourceMainWrappersTransformers: [],\n sourceLoadHandlers: [],\n sourcesRenderFunctions: [],\n sourceSizers: []\n }, this.core = {\n classFacade: {},\n eventsDispatcher: {},\n fullscreenToggler: {},\n globalEventsController: {},\n lightboxCloser: {},\n lightboxOpener: {},\n lightboxUpdater: {},\n scrollbarRecompensor: {},\n slideChangeFacade: {},\n slideIndexChanger: {},\n sourcesPointerDown: {},\n sourceDisplayFacade: {},\n stageManager: {},\n windowResizeActioner: {}\n }, ne(this), this.open = function (t) {\n return e.core.lightboxOpener.open(t);\n }, this.close = function () {\n return e.core.lightboxCloser.closeLightbox();\n };\n }, window.fsLightboxInstances = {}, ae(), window.refreshFsLightbox = function () {\n for (var e in fsLightboxInstances) {\n var t = fsLightboxInstances[e].props;\n fsLightboxInstances[e] = new FsLightbox(), fsLightboxInstances[e].props = t, fsLightboxInstances[e].props.sources = [], fsLightboxInstances[e].elements.a = [];\n }\n ae();\n };\n }]);\n});","/**\n * Encodes an RGBA image to a ThumbHash. RGB should not be premultiplied by A.\n *\n * @param w The width of the input image. Must be ≤100px.\n * @param h The height of the input image. Must be ≤100px.\n * @param rgba The pixels in the input image, row-by-row. Must have w*h*4 elements.\n * @returns The ThumbHash as a Uint8Array.\n */\nexport function rgbaToThumbHash(w, h, rgba) {\n // Encoding an image larger than 100x100 is slow with no benefit\n if (w > 100 || h > 100) throw new Error(`${w}x${h} doesn't fit in 100x100`);\n let {\n PI,\n round,\n max,\n cos,\n abs\n } = Math;\n\n // Determine the average color\n let avg_r = 0,\n avg_g = 0,\n avg_b = 0,\n avg_a = 0;\n for (let i = 0, j = 0; i < w * h; i++, j += 4) {\n let alpha = rgba[j + 3] / 255;\n avg_r += alpha / 255 * rgba[j];\n avg_g += alpha / 255 * rgba[j + 1];\n avg_b += alpha / 255 * rgba[j + 2];\n avg_a += alpha;\n }\n if (avg_a) {\n avg_r /= avg_a;\n avg_g /= avg_a;\n avg_b /= avg_a;\n }\n let hasAlpha = avg_a < w * h;\n let l_limit = hasAlpha ? 5 : 7; // Use fewer luminance bits if there's alpha\n let lx = max(1, round(l_limit * w / max(w, h)));\n let ly = max(1, round(l_limit * h / max(w, h)));\n let l = []; // luminance\n let p = []; // yellow - blue\n let q = []; // red - green\n let a = []; // alpha\n\n // Convert the image from RGBA to LPQA (composite atop the average color)\n for (let i = 0, j = 0; i < w * h; i++, j += 4) {\n let alpha = rgba[j + 3] / 255;\n let r = avg_r * (1 - alpha) + alpha / 255 * rgba[j];\n let g = avg_g * (1 - alpha) + alpha / 255 * rgba[j + 1];\n let b = avg_b * (1 - alpha) + alpha / 255 * rgba[j + 2];\n l[i] = (r + g + b) / 3;\n p[i] = (r + g) / 2 - b;\n q[i] = r - g;\n a[i] = alpha;\n }\n\n // Encode using the DCT into DC (constant) and normalized AC (varying) terms\n let encodeChannel = (channel, nx, ny) => {\n let dc = 0,\n ac = [],\n scale = 0,\n fx = [];\n for (let cy = 0; cy < ny; cy++) {\n for (let cx = 0; cx * ny < nx * (ny - cy); cx++) {\n let f = 0;\n for (let x = 0; x < w; x++) fx[x] = cos(PI / w * cx * (x + 0.5));\n for (let y = 0; y < h; y++) for (let x = 0, fy = cos(PI / h * cy * (y + 0.5)); x < w; x++) f += channel[x + y * w] * fx[x] * fy;\n f /= w * h;\n if (cx || cy) {\n ac.push(f);\n scale = max(scale, abs(f));\n } else {\n dc = f;\n }\n }\n }\n if (scale) for (let i = 0; i < ac.length; i++) ac[i] = 0.5 + 0.5 / scale * ac[i];\n return [dc, ac, scale];\n };\n let [l_dc, l_ac, l_scale] = encodeChannel(l, max(3, lx), max(3, ly));\n let [p_dc, p_ac, p_scale] = encodeChannel(p, 3, 3);\n let [q_dc, q_ac, q_scale] = encodeChannel(q, 3, 3);\n let [a_dc, a_ac, a_scale] = hasAlpha ? encodeChannel(a, 5, 5) : [];\n\n // Write the constants\n let isLandscape = w > h;\n let header24 = round(63 * l_dc) | round(31.5 + 31.5 * p_dc) << 6 | round(31.5 + 31.5 * q_dc) << 12 | round(31 * l_scale) << 18 | hasAlpha << 23;\n let header16 = (isLandscape ? ly : lx) | round(63 * p_scale) << 3 | round(63 * q_scale) << 9 | isLandscape << 15;\n let hash = [header24 & 255, header24 >> 8 & 255, header24 >> 16, header16 & 255, header16 >> 8];\n let ac_start = hasAlpha ? 6 : 5;\n let ac_index = 0;\n if (hasAlpha) hash.push(round(15 * a_dc) | round(15 * a_scale) << 4);\n\n // Write the varying factors\n for (let ac of hasAlpha ? [l_ac, p_ac, q_ac, a_ac] : [l_ac, p_ac, q_ac]) for (let f of ac) hash[ac_start + (ac_index >> 1)] |= round(15 * f) << ((ac_index++ & 1) << 2);\n return new Uint8Array(hash);\n}\n\n/**\n * Decodes a ThumbHash to an RGBA image. RGB is not be premultiplied by A.\n *\n * @param hash The bytes of the ThumbHash.\n * @returns The width, height, and pixels of the rendered placeholder image.\n */\nexport function thumbHashToRGBA(hash) {\n let {\n PI,\n min,\n max,\n cos,\n round\n } = Math;\n\n // Read the constants\n let header24 = hash[0] | hash[1] << 8 | hash[2] << 16;\n let header16 = hash[3] | hash[4] << 8;\n let l_dc = (header24 & 63) / 63;\n let p_dc = (header24 >> 6 & 63) / 31.5 - 1;\n let q_dc = (header24 >> 12 & 63) / 31.5 - 1;\n let l_scale = (header24 >> 18 & 31) / 31;\n let hasAlpha = header24 >> 23;\n let p_scale = (header16 >> 3 & 63) / 63;\n let q_scale = (header16 >> 9 & 63) / 63;\n let isLandscape = header16 >> 15;\n let lx = max(3, isLandscape ? hasAlpha ? 5 : 7 : header16 & 7);\n let ly = max(3, isLandscape ? header16 & 7 : hasAlpha ? 5 : 7);\n let a_dc = hasAlpha ? (hash[5] & 15) / 15 : 1;\n let a_scale = (hash[5] >> 4) / 15;\n\n // Read the varying factors (boost saturation by 1.25x to compensate for quantization)\n let ac_start = hasAlpha ? 6 : 5;\n let ac_index = 0;\n let decodeChannel = (nx, ny, scale) => {\n let ac = [];\n for (let cy = 0; cy < ny; cy++) for (let cx = cy ? 0 : 1; cx * ny < nx * (ny - cy); cx++) ac.push(((hash[ac_start + (ac_index >> 1)] >> ((ac_index++ & 1) << 2) & 15) / 7.5 - 1) * scale);\n return ac;\n };\n let l_ac = decodeChannel(lx, ly, l_scale);\n let p_ac = decodeChannel(3, 3, p_scale * 1.25);\n let q_ac = decodeChannel(3, 3, q_scale * 1.25);\n let a_ac = hasAlpha && decodeChannel(5, 5, a_scale);\n\n // Decode using the DCT into RGB\n let ratio = thumbHashToApproximateAspectRatio(hash);\n let w = round(ratio > 1 ? 32 : 32 * ratio);\n let h = round(ratio > 1 ? 32 / ratio : 32);\n let rgba = new Uint8Array(w * h * 4),\n fx = [],\n fy = [];\n for (let y = 0, i = 0; y < h; y++) {\n for (let x = 0; x < w; x++, i += 4) {\n let l = l_dc,\n p = p_dc,\n q = q_dc,\n a = a_dc;\n\n // Precompute the coefficients\n for (let cx = 0, n = max(lx, hasAlpha ? 5 : 3); cx < n; cx++) fx[cx] = cos(PI / w * (x + 0.5) * cx);\n for (let cy = 0, n = max(ly, hasAlpha ? 5 : 3); cy < n; cy++) fy[cy] = cos(PI / h * (y + 0.5) * cy);\n\n // Decode L\n for (let cy = 0, j = 0; cy < ly; cy++) for (let cx = cy ? 0 : 1, fy2 = fy[cy] * 2; cx * ly < lx * (ly - cy); cx++, j++) l += l_ac[j] * fx[cx] * fy2;\n\n // Decode P and Q\n for (let cy = 0, j = 0; cy < 3; cy++) {\n for (let cx = cy ? 0 : 1, fy2 = fy[cy] * 2; cx < 3 - cy; cx++, j++) {\n let f = fx[cx] * fy2;\n p += p_ac[j] * f;\n q += q_ac[j] * f;\n }\n }\n\n // Decode A\n if (hasAlpha) for (let cy = 0, j = 0; cy < 5; cy++) for (let cx = cy ? 0 : 1, fy2 = fy[cy] * 2; cx < 5 - cy; cx++, j++) a += a_ac[j] * fx[cx] * fy2;\n\n // Convert to RGB\n let b = l - 2 / 3 * p;\n let r = (3 * l - b + q) / 2;\n let g = r - q;\n rgba[i] = max(0, 255 * min(1, r));\n rgba[i + 1] = max(0, 255 * min(1, g));\n rgba[i + 2] = max(0, 255 * min(1, b));\n rgba[i + 3] = max(0, 255 * min(1, a));\n }\n }\n return {\n w,\n h,\n rgba\n };\n}\n\n/**\n * Extracts the average color from a ThumbHash. RGB is not be premultiplied by A.\n *\n * @param hash The bytes of the ThumbHash.\n * @returns The RGBA values for the average color. Each value ranges from 0 to 1.\n */\nexport function thumbHashToAverageRGBA(hash) {\n let {\n min,\n max\n } = Math;\n let header = hash[0] | hash[1] << 8 | hash[2] << 16;\n let l = (header & 63) / 63;\n let p = (header >> 6 & 63) / 31.5 - 1;\n let q = (header >> 12 & 63) / 31.5 - 1;\n let hasAlpha = header >> 23;\n let a = hasAlpha ? (hash[5] & 15) / 15 : 1;\n let b = l - 2 / 3 * p;\n let r = (3 * l - b + q) / 2;\n let g = r - q;\n return {\n r: max(0, min(1, r)),\n g: max(0, min(1, g)),\n b: max(0, min(1, b)),\n a\n };\n}\n\n/**\n * Extracts the approximate aspect ratio of the original image.\n *\n * @param hash The bytes of the ThumbHash.\n * @returns The approximate aspect ratio (i.e. width / height).\n */\nexport function thumbHashToApproximateAspectRatio(hash) {\n let header = hash[3];\n let hasAlpha = hash[2] & 0x80;\n let isLandscape = hash[4] & 0x80;\n let lx = isLandscape ? hasAlpha ? 5 : 7 : header & 7;\n let ly = isLandscape ? header & 7 : hasAlpha ? 5 : 7;\n return lx / ly;\n}\n\n/**\n * Encodes an RGBA image to a PNG data URL. RGB should not be premultiplied by\n * A. This is optimized for speed and simplicity and does not optimize for size\n * at all. This doesn't do any compression (all values are stored uncompressed).\n *\n * @param w The width of the input image. Must be ≤100px.\n * @param h The height of the input image. Must be ≤100px.\n * @param rgba The pixels in the input image, row-by-row. Must have w*h*4 elements.\n * @returns A data URL containing a PNG for the input image.\n */\nexport function rgbaToDataURL(w, h, rgba) {\n let row = w * 4 + 1;\n let idat = 6 + h * (5 + row);\n let bytes = [137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, w >> 8, w & 255, 0, 0, h >> 8, h & 255, 8, 6, 0, 0, 0, 0, 0, 0, 0, idat >>> 24, idat >> 16 & 255, idat >> 8 & 255, idat & 255, 73, 68, 65, 84, 120, 1];\n let table = [0, 498536548, 997073096, 651767980, 1994146192, 1802195444, 1303535960, 1342533948, -306674912, -267414716, -690576408, -882789492, -1687895376, -2032938284, -1609899400, -1111625188];\n let a = 1,\n b = 0;\n for (let y = 0, i = 0, end = row - 1; y < h; y++, end += row - 1) {\n bytes.push(y + 1 < h ? 0 : 1, row & 255, row >> 8, ~row & 255, row >> 8 ^ 255, 0);\n for (b = (b + a) % 65521; i < end; i++) {\n let u = rgba[i] & 255;\n bytes.push(u);\n a = (a + u) % 65521;\n b = (b + a) % 65521;\n }\n }\n bytes.push(b >> 8, b & 255, a >> 8, a & 255, 0, 0, 0, 0, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130);\n for (let [start, end] of [[12, 29], [37, 41 + idat]]) {\n let c = ~0;\n for (let i = start; i < end; i++) {\n c ^= bytes[i];\n c = c >>> 4 ^ table[c & 15];\n c = c >>> 4 ^ table[c & 15];\n }\n c = ~c;\n bytes[end++] = c >>> 24;\n bytes[end++] = c >> 16 & 255;\n bytes[end++] = c >> 8 & 255;\n bytes[end++] = c & 255;\n }\n return 'data:image/png;base64,' + btoa(String.fromCharCode(...bytes));\n}\n\n/**\n * Decodes a ThumbHash to a PNG data URL. This is a convenience function that\n * just calls \"thumbHashToRGBA\" followed by \"rgbaToDataURL\".\n *\n * @param hash The bytes of the ThumbHash.\n * @returns A data URL containing a PNG for the rendered ThumbHash.\n */\nexport function thumbHashToDataURL(hash) {\n let image = thumbHashToRGBA(hash);\n return rgbaToDataURL(image.w, image.h, image.rgba);\n}","import { Controller } from '@hotwired/stimulus'\n\nimport { thumbHashToDataURL } from 'thumbhash'\n\nexport default class extends Controller {\n static values = {\n hash: String\n }\n\n connect () {\n this.element.style.backgroundSize = '100% 100%'\n this.element.style.backgroundImage = `url(${this.dataUrl})`\n }\n\n get dataUrl () {\n try {\n return thumbHashToDataURL(this.hashBytes)\n } catch {\n console.error('Invalid thumbhash:', this.hashValue)\n }\n }\n\n get hashBytes () {\n return atob(this.hashValue).split('').map(x => x.charCodeAt(0))\n }\n}\n"],"sourceRoot":""}