{"version":3,"sources":["webpack/bootstrap","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../common/build/helpers/modal-dialog.js","../common/build/helpers/hero-animate.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../common/build/helpers/js-filter.js","../common/build/components/media-carousel.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/mustache/mustache.js","src/js/modules/navigation.js","src/js/modules/core-modules.js","src/js/master.js","../node_modules/@crasman/branch-bar/main.js","../common/build/components/listing-filters.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../common/build/helpers/video.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../common/build/components/quick-search.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../common/build/helpers/toggle.js","../node_modules/@babel/runtime/helpers/typeof.js","../common/build/helpers/media-gallery.js","../common/build/helpers/tabs.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../common/build/helpers/select.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../common/build/helpers/virtual-select.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../common/build/helpers/accordionTabs.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../common/build/helpers/swiper/swiper.js","../common/build/helpers/timeToRead.js","../common/build/index.js","../common/build/helpers/lazyLoadMedia.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../common/build/helpers/utils.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../common/build/components/site-search.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","2","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","Array","isArray","a","TypeError","_createForOfIteratorHelper","require","default","_objectSpread","useNativeDialogAsModal","utils_1","dialog","options","arguments","registerCloseButtons","closeButtonSelector","closeOnBackgroundClick","dialogContentSelector","preventBodyScroll","bodyPreventScrollClass","closeHandler","close","closeButtons","querySelectorAll","forEach","button","addEventListener","closeOnClickHandler","closest","scrollY","observer","MutationObserver","mutationList","_step","_iterator","done","open","body","classList","contains","add","scrollTo","left","scrollX","top","remove","f","observe","attributes","attributeFilter","posTimeout","setScrollPositionAfterBlur","focusableChildren","getFocusableChildren","checkVisibility","child","heroAnimate","init","element","words","getElementsByClassName","index","setInterval","cw","nw","current","previous","newWord","className","animateWordBehind","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","__importDefault","this","mod","mustache_1","jsFilter","el","select","resultsEl","items","filteredItems","filterField","selected","itemTemplate","_el$closest","log","configName","dataset","config","getElementById","template","addEventListeners","renderResults","_this","resultsHtml","item","render","innerHTML","self","filterResults","_this2","filter","_item$_this2$filterFi","includes","swiper_1","mediaGallery","swiper","paginationSeparator","swiperIndex","swiperEl","querySelector","settings","mediaGallerySettings","parseInt","speed","allowTouchMove","keyboard","watchSlidesProgress","slidesPerView","loop","slideToClickedSlide","simulateTouch","preventClicksPropagation","preventClicks","navigation","nextEl","concat","prevEl","pagination","renderCustom","_","total","a11y","prevSlideMessage","prevHelperText","nextSlideMessage","nextHelperText","breakpoints","1056","preventClickDeskop","on","slideChangeTransitionEnd","videos","video","pause","parent","overlay","getAttribute","ol","_typeof","_regeneratorRuntime","iterator","asyncIterator","u","define","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","h","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","then","callInvokeWithMethodAndArg","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","delegateYield","objectToString","toString","isFunction","escapeRegExp","string","replace","hasProperty","obj","propName","regExpTest","RegExp","test","nonSpaceRe","isWhitespace","re","testRegExp","entityMap","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","Scanner","tail","pos","view","parentContext","cache","Writer","templateCache","_cache","set","clear","eos","scan","match","substring","scanUntil","search","lookup","primitive","intermediateValue","names","context","lookupHit","indexOf","split","clearCache","parse","tags","cacheKey","mustache","join","isCacheEnabled","tokens","openingTagRe","closingTagRe","closingCurlyRe","lineHasNonSpace","sections","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","compileTags","tagsToCompile","start","chr","token","openSection","scanner","valueLength","nestedTokens","collector","numTokens","nestTokens","lastToken","squashedTokens","squashTokens","parseTemplate","partials","getConfigTags","renderTokens","originalTemplate","symbol","buffer","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","j","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","escape","getConfigEscape","String","version","defaultWriter","factory","nav","header","navHeight","getBoundingClientRect","height","headerObserver","IntersectionObserver","entries","_slicedToArray","isIntersecting","root","threshold","rootMargin","mobileToggleButton","mobileMenu","megaMenuLinks","nextElementSibling","parentElement","closeAll","toggle","preventDefault","innerWidth","coreModules","branchBar","common","lazyLoadMedia","components","quickSearch","siteSearch","accordionTabs","accordion","mediaCarousels","gallery","mediaCarousel","tabs","tab","timeToRead","listingFilters","mediaGalleries","initMediaGallery","selects","jsFilters","_minifiedClass","_hiddenClass","_storageSettings","_folderId","_settingsKey","_dom","bar","toggles","pageSelects","_isLocalStorageEnabled","localStorage","setItem","removeItem","_isMinified","_getSettings","JSON","getItem","_updateSettings","minified","stringify","_toggleMinified","reg","_initToggles","_initPageSelects","val","location","href","_showBar","style","display","_setCSSVar","documentElement","setProperty","_updateCSSVars","zIndex","bgColor","colorLight","colorDark","shadowColor","_asyncToGenerator","showMoreButton","countEl","submitButton","filterEl","searchDelay","minCharacters","controller","AbortController","timer","freeTextItems","filters","searchValue","searchFields","limit","resultsOffset","page","noResultsTemplate","localizations","option","count","searchMode","listingConfig","preSelections","_this$el$resultsEl","_this$el$filterEl","_this$el$showMoreButt","_this$el$showMoreButt2","lastChild","lastElementChild","insertAdjacentHTML","map","VirtualSelect","optionHeight","alwaysShowSelectedOptionsCount","optionSelectedText","optionsSelectedText","ele","disableSelectAll","disableAllOptionsSelectedText","silentInitialValueSet","selectedValue","searchInput","oldValue","trim","keyCode","abort","_callee","_this2$el$resultsEl","_context","t0","_this$el$resultsEl2","_this3","hasFilters","hasSearch","_loop","some","toLowerCase","_this$el$filterEl2","formData","FormData","append","fetch","signal","response","json","hits","catch","_this3$el$resultsEl","_this3$el$filterEl","_this$el$resultsEl3","_this$el$filterEl3","toPropertyKey","_defineProperties","from","addVideoElement","playVideo","play","focus","removeEventListener","keyPressOnPlay","_unsupportedIterableToArray","_n","F","input","toggleButton","form","results","term","total_hits","showAllResults","templates","processingClickEvent","_document$getElementB","textContent","_this$el$toggleButton","_this$el$input","_this$el$input2","_this$el$body","_this$el$results","currentTarget","closeSearch","_this$el$input3","_this$el$toggleButton2","emptyResults","_this$el$el","_this$el$toggleButton3","shiftKey","_self$el$el","_document$querySelect","_document$querySelect2","_target$dataset","_target$dataset2","_target$dataset3","_target$dataset4","_target$dataset5","searchItem","searchItemUrl","sendClickEvent","url","id","position","searchItemPosition","searchItemTerm","_this2$el$form","_this2$el","_this2$el$form2","_this2$el$form6","URLSearchParams","_this2$el$form3","_this2$el$form4","_renderResults","showResults","_this2$el$form5","locationChanging","loadTargetPath","_this$el$toggleButton4","_this$el$el2","_this$el$input4","_this$el$body2","_this$el$nav","_document$querySelect4","_document$querySelect3","_this$el$toggleButton5","_this$el$el3","_this$el$body3","_this$el$nav2","_this$el$toggleButton6","noFocus","_this$el$results2","_this$el$results3","_arrayLikeToArray","arrayLikeToArray","onClick","_toggle$parentElement","toggleTarget","noHide","toggleHideSelf","toggleContent","isToggledContent","toggleSiblings","sibling","targetId","onKeyPressClick","modal_dialog_1","_x","_init","apply","container","sliderEl","dialogEl","bullets","thumbnails","setHiddenSlidesInert","sliderConfig","slider","toggleButtonHandler","warn","reduce","thumbnail","slide","inert","autoHeight","centeredSlides","effect","crossFade","clickable","renderBullet","update","slideChange","getBreakpoint","renderFraction","currentClass","totalClass","mediaGalleryToggle","showModal","slideTo","Tabs","spaceBetween","asyncGeneratorStep","_next","_throw","_toConsumableArray","arr","_arrayWithoutHoles","iter","_iterableToArray","minLen","_nonIterableSpread","len","arr2","props","descriptor","_toPropertyKey","hint","prim","toPrimitive","res","Number","_toPrimitive","Utils","instance","Constructor","_classCallCheck","protoProps","staticProps","text","defaultValue","result","isEmpty","array","cloneArray","inputArr","splice","max","min","minN","Math","ceil","maxN","floor","random","normalize","tempElement","visibility","whiteSpace","fontSize","getComputedStyle","fontFamily","textWidth","clientWidth","removeChild","dom_utils_typeof","_arrayWithHoles","_i","_s","_e","_r","_arr","_d","_iterableToArrayLimit","dom_utils_unsupportedIterableToArray","_nonIterableRest","dom_utils_toConsumableArray","dom_utils_arrayLikeToArray","dom_utils_arrayWithoutHoles","dom_utils_iterableToArray","dom_utils_nonIterableSpread","dom_utils_defineProperties","dom_utils_toPropertyKey","dom_utils_toPrimitive","DomUtils","dom_utils_classCallCheck","$ele","classNames","classNamesArr","getElements","$this","_$this$classList","_$this$classList2","isAdd","isAdding","Boolean","scrollWidth","offsetWidth","parseFloat","$from","$to","attrList","valueLessProps","attr","attrName","elements","$selector","$parentEle","events","callback","removeArrayEmpty","eventName","bubbles","$eleArray","dispatchEvent","CustomEvent","html","_ref","_ref2","k","prop","newTabIndex","tabIndex","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","virtual_select_toPropertyKey","virtual_select_typeof","virtual_select_slicedToArray","virtual_select_arrayWithHoles","virtual_select_iterableToArrayLimit","virtual_select_unsupportedIterableToArray","virtual_select_nonIterableRest","virtual_select_toConsumableArray","virtual_select_arrayLikeToArray","virtual_select_arrayWithoutHoles","virtual_select_iterableToArray","virtual_select_nonIterableSpread","virtual_select_defineProperties","virtual_select_toPrimitive","attrPropsMapping","keyDownMethodMapping","13","38","40","46","8","nativeProps","dataProps","virtual_select_classCallCheck","createSecureTextElements","setProps","setDisabledOptions","disabledOptions","setOptions","singleEle","eleLength","instances","virtualSelect","tagName","setPropsFromSelect","convertPropToDataAttr","optionsList","getNativeOptions","$container","children","$option","label","disabled","$newEle","setAttrFromEle","parentNode","insertBefore","$form","validate","hasError","formReset","disableChangeEvent","_this$virtualSelect","setValueMethod","_this$virtualSelect2","setOptionsMethod","_this$virtualSelect3","setDisabledOptionsMethod","_this$virtualSelect4","setEnabledOptionsMethod","isSelected","toggleAllOptions","isAllSelected","addOption","getNewValue","getDisplayValue","params","getSelectedOptions","getDisabledOptions","openDropbox","closeDropbox","enable","disable","destroy","isRequired","toggleRequired","onResize","uniqueId","wrapperClasses","valueTooltip","showValueAsTags","getTooltipAttrText","placeholder","clearButtonTooltip","clearButtonText","ariaLabelledbyText","ariaLabelledby","ariaLabelText","ariaLabelClearBtnTxt","ariaLabelClearButtonText","isExpanded","additionalClasses","multiple","hideClearButton","keepAlwaysOpen","showAsPopup","textDirection","popupPosition","renderDropbox","$body","$wrapper","hasDropboxWrapper","$allWrappers","$dropboxWrapper","$dropboxContainer","addClass","$toggleButton","$clearButton","$valueText","$hiddenInput","$dropbox","$dropboxCloseButton","$dropboxContainerBottom","$dropboxContainerTop","$search","$optionsContainer","$optionsList","$options","$noOptions","$noSearchResults","afterRenderWrapper","dropboxWrapper","noOptionsText","noSearchResultsText","searchRegex","visibleOptions","getVisibleOptions","checkboxHtml","newOptionIconHtml","markSearchResults","labelRenderer","disableOptionGroupCheckbox","searchGroup","hasLabelRenderer","convertToBoolean","groupName","regexEscape","allowNewOption","newOptionTooltip","optionLabel","optionClasses","optionTooltip","leftSection","rightSection","description","groupIndexText","ariaLabel","tabIndexValue","ariaDisabledText","isFocused","isDisabled","isGroupTitle","isGroupOption","optionDesc","groupIndex","customData","group_name","isCurrentNew","visibleIndex","$visibleOptions","afterRenderOptions","hasSearchContainer","selectAllText","searchFormLabel","searchPlaceholderText","$searchInput","$searchClear","$toggleAllButton","$toggleAllCheckbox","addEvent","addMutationObserver","eventsKey","removeEvent","removeMutationObserver","$eleToKeepOpen","isOpened","which","activeElement","focusFirstVisibleOption","selectFocusedOption","focusOption","direction","selectedValues","$target","removeValue","toggleDropbox","code","stopPropagation","setVisibleOptions","hasClass","onGroupTitleClick","selectOption","toggleGroupTitleCheckbox","toggleGroupOptions","removeOptionFocus","setSearchValue","focusSearchInput","setOptionsContainerHeight","_this4","$vscompEle","mutationObserver","mutations","isAdded","isRemoved","mutation","addedNodes","removedNodes","childList","subtree","disconnect","isReset","toggleAllOptionsClass","_this5","newOption","getNewOption","newIndex","newValues","setOptionProp","renderSearch","setEleStyles","setDropboxStyles","setOptionsHeight","addEvents","setEleProps","initDropboxPopover","initialSelectedValue","autoSelectFirstOption","showOptionsOnlyOnSearch","initialDisabled","autofocus","hasNoOptions","hasServerSearch","hasNoSearchResults","toggleClass","setAttr","setOptionAttr","setOptionsPosition","setOptionsTooltip","focusedOption","getElementsBySelector","_this6","clearInterval","serverSearchTimeout","serverSearch","setVisibleOptionsCount","selectAllOnlyVisible","focusFirst","scrollToTop","updatePosition","renderOptions","keepValue","setSelectedProp","setDefaultProps","setPropsFromElementAttr","valueKey","labelKey","descriptionKey","aliasKey","optionHeightText","searchByStartsWith","hasOptionDescription","showSelectedOptionsFirst","showDropboxAsPopup","hideValueTooltipOnSelectAll","alwaysShowSelectedOptionsLabel","enableSecureText","setValueAsArray","disableValidation","required","useGroupValue","focusSelectedOptionOnOpen","searchNormalize","allOptionsSelectedText","moreText","dropboxWidth","tooltipFontSize","tooltipAlignment","tooltipMaxWidth","updatePositionThrottle","noOfDisplayValues","maxValues","minValues","secureText","popupDropboxBreakpoint","onServerSearch","emptyValue","maxWidth","selectedOptions","tooltipEnterDelay","searchValueOriginal","optionsCount","getOptionsCount","halfOptionsCount","optionsHeight","getOptionsHeight","getUniqueId","defaultOptions","assign","setValue","setEnabledOptions","toggleSelectAll","addOptionMethod","getNewValueMethod","getDisplayValueMethod","getSelectedOptionsMethod","getDisabledOptionsMethod","openMethod","closeMethod","focusMethod","enableMethod","disableMethod","destroyMethod","validateMethod","toggleRequiredMethod","newValue","silentChange","valuesMapping","valuesOrder","validValues","isMultiSelect","setGroupOptionsValue","setNewOptionsFromValue","hasOptionGroup","setGroupsSelectedProp","sort","b","_validValues2","beforeValueSet","disableEvent","afterValueSet","preparedValues","selectedGroups","isAllGroupOptionsSelected","afterSetOptions","setOptionsProp","disabledOptionsArr","disabledOptionsMapping","enabledOptions","enabledOptionsMapping","_this7","preparedOptions","hasDisabledOptions","getString","getAlias","hasEmptyValueOption","prepareOption","_d2","childOptions","labelNormalized","normalizeString","alias","isVisible","isNew","childData","optionsLength","visibleOptionsCount","lastOptionIndex","setSortedOptions","_this8","newOptions","optionsUpdated","newOptionsValueMapping","hasExactOption","setNewOption","setValueText","removeClass","sortedOptions","sortOptionsGroup","sortOptions","maxOptionsToShow","startIndex","getVisibleStartIndex","endIndex","inView","transform","setData","_this9","$optionEle","_ref2$disableEvent","_ref2$disableValidati","isValidValue","getValue","getInputValue","isMaxValuesSelected","isNotEmpty","_this10","valueText","selectedLength","selectedValuesCount","showAllText","fullDetails","keepSelectionOrder","valueTooltipForTags","willTextOverflow","valueTagHtml","moreSelectedOptions","aggregatedValueText","hasEllipsis","countText","$valueTags","setValueTagAttr","tooltipText","skipInputSet","forceSet","afterSetSearchValue","visibleOptionGroupsMapping","isOptionVisible","getVisibleOptionGroupsMapping","removeNewOption","afterSetVisibleOptionsCount","setStyle","afterSetOptionsContainerHeight","availableValuesMapping","width","styles","setStyles","containerStyles","getData","optionDetails","$valueTag","selectedOptionIndex","scrollTop","getGroupValue","preparedValue","getFirstVisibleOptionIndex","ellipsisOnly","allowHtml","tootltipText","containsHTML","replaceDoubleQuotesWithHTML","getAttributesText","lastOption","displayValues","_ref3","_ref3$fullDetails","_ref3$keepSelectionOr","_data","disabledOptionsValueMapping","_ref4","_result$push","structureOptionGroup","availableHeight","innerHeight","$sibling","getRandomInt","margin","transitionDistance","hideArrowIcon","disableManualAction","disableUpdatePosition","afterShow","afterShowPopper","afterHide","afterHidePopper","dropboxPopover","PopoverComponent","isSilent","isSilentOpen","setAria","setDropboxWrapperWidth","changeTabIndex","show","moveSelectedOptionsFirst","setScrollTop","isPopupActive","focusElementOnOpen","isSilentClose","hide","removeAttribute","$focusableEle","getSibling","$newFocusedEle","_ref5","$focusedEle","firstVisibleOptionIndex","toggleOptionFocusedState","toggleFocusedProp","moveFocusedOptionToView","newScrollTop","containerRect","optionRect","containerTop","containerBottom","bottom","containerHeight","optionTop","optionBottom","optionOffsetTop","offsetTop","optionsTop","_ref6","selectedIndex","isNewOption","shouldSelectRange","lastSelectedOptionIndex","toggleSelectedProp","toggleGroupOptionsParent","getOptionIndex","$prevSelectedOption","toggleOptionSelectedState","removeItemFromArray","beforeSelectNewValue","selectRangeOptions","_this11","groupIndexes","toggleGroupTitleProp","selectAll","selectingAll","isAllVisibleSelected","isAllOptionsSelected","visibleOnly","$group","_this12","focusedOptionIndex","isClosed","rerender","getOptionObj","removeOption","aIsSelected","isAnySelected","bIsSelected","structuredOptions","destructureOptionGroup","_ref7","startsWith","childArray","setSelectedOptions","blur","removeEvents","$secureDiv","$secureText","createTextNode","nodeValue","onFormReset","onFormSubmit","onResizeMethod","getAttrProps","NodeList","horizontal","vertical","pageXOffset","pageYOffset","right","overflow","$popperEle","$triggerEle","setPosition","$arrowEle","offset","enterDelay","exitDelay","showDuration","hideDuration","afterShowCallback","afterHideCallback","hasArrow","secondaryPosition","getAbsoluteCoords","w","E","$","D","S","C","P","O","T","A","x","I","H","L","R","getMoreVisibleSides","z","M","U","B","q","N","W","K","V","resetPosition","exitDelayTimeout","hideDurationTimeout","enterDelayTimeout","getCoords","showDurationTimeout","PopperComponent","Date","getTime","addOrRemoveEvent","27","popComp","popper","$popover","setElementProps","renderArrow","initPopper","showOnHover","getEvents","action","addOrRemoveEvents","removeScrollEventListeners","removeResizeEventListeners","throttle","$scrollableElems","getScrollableParents","hideOnOuterClick","beforeShowCallback","beforeShow","beforeHideCallback","beforeHide","getElement","showMethod","hideMethod","updatePositionMethod","isShown","isShownForOtherTrigger","showAfterOtherHide","getOtherTriggerPopComp","addScrollEventListeners","addResizeEventListeners","isMobile","hash","closeAllTabs","scrollToTab","navigator","userAgent","summary","hasAttribute","content","contentPosition","behavior","arrayWithHoles","iterableToArrayLimit","nonIterableRest","_createClass","Swiper","isObject$1","extend$1","ssrDocument","nodeName","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","host","hostname","origin","pathname","protocol","getDocument","doc","support","deviceCached","browser","ssrWindow","history","replaceState","pushState","go","back","getPropertyValue","Image","screen","matchMedia","requestAnimationFrame","cancelAnimationFrame","getWindow","win","classesToTokens","classes","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isObject","isNode","node","HTMLElement","nodeType","extend","to","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","__swiper__","setCSSProperty","varName","varValue","animateCSSModeScroll","time","targetPosition","side","startPosition","translate","startTime","duration","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","animate","progress","easeProgress","cos","PI","currentPosition","getSlideTransformEl","slideEl","shadowRoot","elementChildren","selector","matches","showWarning","tag","_el$classList","elementOffset","box","clientTop","clientLeft","scrollLeft","elementStyle","elementIndex","previousSibling","elementParents","parents","elementTransitionEnd","fireCallBack","elementOuterSize","size","includeMargins","makeElementsArray","getSupport","smoothScroll","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","_ua$split$1$split$0$s","num","_ua$split$1$split$0$s2","major","minor","isWebView","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","handler","priority","eventsListeners","destroyed","once","onceHandler","off","__emitterProxy","_len","args","_key","onAny","eventsAnyListeners","offAny","eventHandler","emit","_len2","_key2","unshift","eventsArray","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","preload","amount","lazyPreloadPrevNext","slidesPerViewDynamic","activeIndex","grid","rows","activeColumn","preloadColumns","column","slideIndexLastInView","rewind","realIndex","transitionEmit","runCallbacks","step","previousIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","onTouchStart","originalEvent","touchEventsData","pointerId","targetTouches","touchId","identifier","touches","enabled","pointerType","animating","preventInteractionOnTransition","cssMode","loopFix","targetEl","touchEventsTarget","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","rtl","rtlTranslate","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","previousX","previousY","diffX","diffY","sqrt","pow","touchAngle","isHorizontal","atan2","abs","cancelable","touchMoveStopPropagation","nested","diff","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowSlideNext","allowSlidePrev","startTranslate","setTransition","evt","allowMomentumBounce","grabCursor","setGrabCursor","currentTranslate","loopSwapReset","disableParentSwiper","resistanceRatio","slidesSizesGrid","setTranslate","activeSlideIndex","resistance","followFinger","updateActiveIndex","updateSlidesClasses","updateProgress","onTouchEnd","slidesGrid","currentPos","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","swipeToLast","stopIndex","groupSize","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","isBeginning","virtual","isEnd","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","setBreakpoint","snapGrid","isVirtual","updateSlides","isVirtualLoop","slideToLoop","autoplay","running","paused","resizeTimeout","resume","watchOverflow","checkOverflow","stopImmediatePropagation","onScroll","previousTranslate","translatesDiff","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","swiperElementNodeName","initialSlide","resizeObserver","createElements","eventsPrefix","setWrapperSize","virtualTranslate","breakpointsBase","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","uniqueNavElements","loopAddBlankSlides","loopAdditionalSlides","loopPreventsSliding","passiveListeners","maxBackfaceHiddenSlides","containerModifierClass","slideBlankClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","clientHeight","getDirectionPropertyValue","getDirectionLabel","slidesEl","swiperSize","wrongRTL","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","slideSize","gridEnabled","initSlides","unsetSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","_slide2","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","multiplier","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","activeSlide","prevSlide","nextSlide","getFilteredSlide","nextEls","elementNextAll","prevEls","previousElementSibling","elementPrevAll","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","initialized","pathEl","slideFound","clickedSlide","clickedIndex","byController","translateTo","translateBounds","internal","newTranslate","isH","onTranslateToWrapperTransitionEnd","transition","transitionDuration","transitionDelay","transitionStart","transitionEnd","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_cssModeVirtualInitialSet","onSlideToWrapperTransitionEnd","targetSlideIndex","cols","needLoopFix","slideRealIndex","slideNext","perGroup","_clientLeft","slidePrev","prevSnapIndex","normalizedSnapGrid","prevSnap","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","recalcSlides","_ref4$slideTo","byMousewheel","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","points","point","minRatio","substr","_points$i","wasLocked","lastSlideRightEdge","addClasses","_el$classList2","suffixes","prefix","resultClasses","prepareClasses","removeClasses","_el$classList3","extendedDefaults","swipers","newParams","_swiper$modules","__modules__","extendParams","swiperParams","passedParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","cls","updates","getSlideClasses","exact","spv","breakLoop","translated","translateValue","newDirection","needUpdate","currentDirection","mounted","toUpperCase","getWrapperSelector","slideSlots","hostEl","mount","lazyElements","deleteInstance","cleanStyles","deleteProps","newDefaults","installModule","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","requireUpdateOnVirtual","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","use","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","WebkitMutationObserver","observerUpdate","characterData","observeParents","observeSlideChildren","containerParents","cssModeTimeout","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","force","_swiper$params","_swiper$params$virtua","_swiper$virtual","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","_loop2","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","kc","charCode","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","altKey","ctrlKey","metaKey","onlyInViewport","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","releaseScroll","getEl","toggleEl","subEl","_subEl$classList","disabledClass","lockClass","_swiper$navigation","onPrevClick","onNextClick","initButton","_el$classList4","_swiper$navigation2","destroyButton","_el$classList5","hideOnClick","hiddenClass","navigationDisabledClass","_swiper$navigation3","_swiper$navigation4","isHidden","_swiper$el$classList2","_swiper$el$classList","bulletSize","pfx","bulletElement","renderProgressbar","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","firstIndex","midIndex","_bulletEl$classList","classesToRemove","flat","bullet","_bullet$classList","bulletIndex","_bullet$classList2","_bullet$classList3","firstDisplayedBullet","lastDisplayedBullet","_bullets$i$classList","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","paginationHTML","numberOfBullets","_swiper$pagination$bu","_subEl$classList2","_subEl$classList3","_subEl$classList4","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","opacity","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","_el$classList6","dragClass","draggable","_el$classList7","scrollbarDisabledClass","_el$classList8","_swiper$el$classList4","_swiper$scrollbar$el$2","_swiper$el$classList3","_swiper$scrollbar$el$","parallax","elementsSelector","setTransform","rotate","currentOpacity","currentScale","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","_getScaleOrigin","getScaleOrigin","_getScaleOrigin2","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","_getListeners","_getListeners2","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","i1","i3","binarySearch","maxIndex","minIndex","guess","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlledTranslate","controlled","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","notificationClass","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","live","addElLive","_swiper$navigation5","updateNavigation","updatePagination","keepQuery","paths","slugify","getPathValues","urlOverride","pathArray","URL","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","newThumbsSlide","watchForThumbsToAppear","thumbsElement","onThumbsSwiper","getThumbsElementAndInit","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","_swiper$params$grid","swiperSlideGridSet","newSlideOrderIndex","row","_swiper$params$grid2","slideIndexInGroup","columnsInGroup","order","_swiper$params2","fadeEffect","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","isCenteredSlides","_loop3","custom","getTranslateValue","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","_swiper$touchEventsDa","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","innerText","loc","accordionTabs_1","lazyLoadMedia_1","media_carousel_1","toggle_1","quick_search_1","tabs_1","timeToRead_1","video_1","media_gallery_1","site_search_1","listing_filters_1","select_1","hero_animate_1","js_filter_1","OBSERVER_SETTINGS","loadLazyMedia","sourceEl","lazySrc","load","videoCanPlay","lazyLoadEls","lazyPlayEls","lazyPlayObserver","entry","offsetParent","readyState","lazyLoadObserver","selectors","focusOptions","checkHidden","checkDisabled","checkTabIndex","hidden","tabindex","getClientRects","baseFormProps","customFields","searchTabs","loadMoreForm","acc","cur","submit","getResults","inputs","saveFilters","checked","customField","_tabButton$textConten","tabButton","finally"],"mappings":"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","file":"js/master.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"hashed/\" + ({\"0\":\"gmaps-map\",\"1\":\"highcharts-chart\",\"4\":\"vendors~gmaps-map\",\"5\":\"vendors~highcharts-chart\"}[chunkId]||chunkId) + \".\" + {\"0\":\"972c16a0\",\"1\":\"86723520\",\"4\":\"85de4071\",\"5\":\"9d975838\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/studio/pub/web/corporate/master/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useNativeDialogAsModal = void 0;\nconst utils_1 = require(\"./utils\");\n/**\n * Improves native dialog element by providing following features:\n *\n * - Default close button logic\n * - Close modal by clicking the background\n * - Scroll-lock on html body when modal is opened\n *\n * @param {HTMLDialogElement} dialog Dialog element.\n * @param {object} [options] Dialog options.\n * @param {boolean} [options.closeOnBackgroundClick=true] Whether dialog is closed when background is clicked. Default is true.\n * @param {string} [options.dialogContentSelector] Set selector which is used to check if click was out of bounds. Default is `[data-dialog-content]`.\n * @param {boolean} [options.registerCloseButtons=true] Whether default logic for close buttons is used. Default is true.\n * @param {string} [options.closeButtonSelector] HTML query selector for close buttons. Default is `[data-dialog-close]`.\n * @param {boolean} [options.preventBodyScroll=true] Whether body scrolling is diabled. Default is true.\n * @param {string} [options.bodyPreventScrollClass] CSS class that is added to body when scrolling is prevented. Default is `dialog-open`.\n */\nfunction useNativeDialogAsModal(dialog, options = {}) {\n options = {\n registerCloseButtons: true,\n closeButtonSelector: '[data-dialog-close]',\n closeOnBackgroundClick: true,\n dialogContentSelector: '[data-dialog-content]',\n preventBodyScroll: true,\n bodyPreventScrollClass: 'dialog-open',\n ...options\n };\n // Close modal when user clicks close button inside modal\n if (options.registerCloseButtons) {\n const closeHandler = () => {\n dialog.close();\n };\n const closeButtons = dialog.querySelectorAll(options.closeButtonSelector);\n closeButtons.forEach(button => {\n button.addEventListener('click', closeHandler);\n });\n }\n // Close modal when user clicks outside dialog content area\n if (options.closeOnBackgroundClick) {\n const closeOnClickHandler = (e) => {\n if (!e.target.closest(options.dialogContentSelector)) {\n dialog.close();\n }\n };\n dialog.addEventListener('click', closeOnClickHandler);\n }\n // Prevent body scroll when dialog is open\n if (options.preventBodyScroll) {\n let scrollY = null;\n const observer = new MutationObserver((mutationList, observer) => {\n for (const mutation of mutationList) {\n if (mutation.type === 'attributes') {\n if (dialog.open) {\n if (!document.body.classList.contains(options.bodyPreventScrollClass)) {\n scrollY = window.scrollY;\n document.body.classList.add(options.bodyPreventScrollClass);\n window.scrollTo({ left: window.scrollX, top: scrollY });\n }\n }\n else {\n if (scrollY && document.body.classList.contains(options.bodyPreventScrollClass)) {\n document.body.classList.remove(options.bodyPreventScrollClass);\n window.scrollTo({ left: window.scrollX, top: scrollY });\n scrollY = null;\n }\n }\n }\n }\n });\n observer.observe(dialog, { attributes: true, attributeFilter: ['open'] });\n // If focus moves from opened dialog to other element on page, scrollY value seems to reset to 0\n // As a workaround, always reset scroll position after blur event occures in dialog inputs\n let posTimeout = null;\n const setScrollPositionAfterBlur = (e) => {\n if (posTimeout) {\n clearTimeout(posTimeout);\n }\n posTimeout = setTimeout(() => {\n if (scrollY && document.body.classList.contains(options.bodyPreventScrollClass)) {\n window.scrollTo({ left: window.scrollX, top: scrollY });\n }\n }, 0);\n };\n const focusableChildren = (0, utils_1.getFocusableChildren)(dialog, { checkVisibility: false });\n focusableChildren.forEach(child => {\n child.addEventListener('blur', setScrollPositionAfterBlur);\n });\n }\n}\nexports.useNativeDialogAsModal = useNativeDialogAsModal;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst heroAnimate = {\n init: function () {\n const container = document.querySelectorAll(\".js-hero-animate\");\n container.forEach((element) => {\n let words = element.getElementsByClassName(\"word\");\n let index = 0; //will store the index of the currently displayed word;\n if (words?.length) {\n //words[index].style.opacity = 1;\n const animateWordOut = (cw) => {\n setTimeout(function () {\n cw.className = \"word out\";\n }, 80);\n };\n const animateWordIn = (nw) => {\n setTimeout(function () {\n nw.className = \"word in\";\n }, 80);\n };\n const animateWordBehind = (nw) => {\n nw.className = \"word behind\";\n };\n const changeWord = () => {\n let current = words[index];\n let previous = index > 0 ? words[index - 1] : words[words.length - 1];\n let newWord = index == words.length - 1 ? words[0] : words[index + 1];\n animateWordOut(current);\n animateWordIn(newWord);\n animateWordBehind(previous);\n //update index index.\n index = index === words.length - 1 ? 0 : index + 1;\n };\n //changeWord(); //initial call\n setInterval(changeWord, 2000); //call every 4s bac\n }\n });\n },\n};\nexports.default = heroAnimate;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mustache_1 = __importDefault(require(\"mustache\"));\n/**\n * Simple filtering with dropdown\n *\n * Virtual select drops data-attributes so config-data-property needs to be defined in parent el. Like\n *\n * select name is the field that is used to filter items, which have this in the property (array)\n *\n *
\n * \n *\n *
\n * ...\n *
\n *
\n *\n * \n *\n */\nconst jsFilter = {\n el: {\n select: null,\n resultsEl: null,\n },\n items: [],\n filteredItems: [],\n filterField: false,\n selected: \"\",\n itemTemplate: \"\",\n /**\n * Initialises the functionality.\n * Attaches event handlers to toggle elements\n */\n init: function (el) {\n console.log(\"jsFilter init\");\n const configName = el.closest(\"[data-config]\")?.dataset.config;\n const config = window[configName];\n this.el = {\n select: el,\n resultsEl: document.getElementById(config.resultsEl),\n };\n this.itemTemplate = config.template;\n this.items = config.items || [];\n this.filterField = el.name;\n if (!this.filterField || !this.items.length) {\n console.log(\"jsFilter, no filterField or items found\");\n return;\n }\n this.addEventListeners(el);\n },\n renderResults() {\n const resultsEl = this.el.resultsEl;\n if (resultsEl) {\n let resultsHtml = \"\";\n this.filteredItems.forEach((item) => {\n resultsHtml = resultsHtml + mustache_1.default.render(this.itemTemplate, item);\n });\n resultsEl.innerHTML = resultsHtml;\n }\n },\n addEventListeners(el) {\n const select = el;\n const self = this;\n select.addEventListener(\"change\", function () {\n if (this.value.length) {\n self.selected = this.value;\n }\n else {\n self.selected = \"\";\n }\n self.filterResults();\n });\n },\n filterResults() {\n if (this.selected) {\n this.filteredItems = this.items.filter((item) => item[this.filterField]?.includes(this.selected));\n }\n else {\n this.filteredItems = this.items;\n }\n this.renderResults();\n },\n};\nexports.default = jsFilter;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst swiper_1 = __importDefault(require(\"../helpers/swiper/swiper\"));\n/**\n * Media gallery swiper\n *\n * @param {HTMLElement} el - js-media-carousel\n * @returns {void}\n *\n * @example\n * \n *\n */\nconst mediaGallery = {\n swiper: null,\n paginationSeparator: ' / ',\n swiperIndex: 0,\n init(el) {\n console.log('Init mediaGallery');\n this.el = el;\n this.swiperEl = el.querySelector('.js-swiper-container');\n const settings = window.mediaGallerySettings || {};\n if (settings) {\n this.paginationSeparator = settings.paginationSeparator;\n }\n if (el.dataset.swiperIndex) {\n this.swiperIndex = parseInt(el.dataset.swiperIndex);\n }\n if (this.swiperEl) {\n const self = this;\n const swiper = new swiper_1.default(this.swiperEl, {\n speed: 500,\n allowTouchMove: true,\n keyboard: true,\n watchSlidesProgress: true,\n slidesPerView: \"auto\",\n loop: false,\n slideToClickedSlide: true,\n simulateTouch: true,\n preventClicksPropagation: false,\n preventClicks: true,\n navigation: {\n nextEl: `.js-swiper-next-${self.swiperIndex}`,\n prevEl: `.js-swiper-prev-${self.swiperIndex}`\n },\n pagination: {\n el: `.js-swiper-pagination-${self.swiperIndex}`,\n type: 'custom',\n renderCustom: function (_, current, total) {\n return current + self.paginationSeparator + total;\n }\n },\n a11y: {\n prevSlideMessage: settings.prevHelperText,\n nextSlideMessage: settings.nextHelperText,\n },\n breakpoints: {\n // when window width is >= 1056px disable touch swipe\n 1056: {\n allowTouchMove: false,\n slideToClickedSlide: !!el.dataset.preventClickDeskop ? false : true\n },\n },\n on: {\n slideChangeTransitionEnd(_) {\n const videos = el.querySelectorAll('video');\n Array.prototype.forEach.call(videos, function (video) {\n video.pause();\n const parent = video.closest('.swiper-slide');\n const overlay = parent.querySelectorAll('.video__overlay');\n if (video.getAttribute('tabindex') === '-1' && parent.classList.contains('swiper-slide-active')) {\n video.setAttribute('tabindex', '0');\n // logic for overlay\n if (overlay.length) {\n overlay.forEach(ol => ol.classList.add('js-video-active'));\n }\n }\n else if (video.getAttribute('tabindex') === '0') {\n video.setAttribute('tabindex', '-1');\n if (overlay.length) {\n overlay.forEach(ol => ol.classList.remove('js-video-active'));\n }\n }\n });\n },\n }\n });\n }\n }\n};\nexports.default = mediaGallery;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Mustache = factory());\n}(this, (function () { 'use strict';\n\n /*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n /**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\n function primitiveHasOwnProperty (primitive, propName) {\n return (\n primitive != null\n && typeof primitive !== 'object'\n && primitive.hasOwnProperty\n && primitive.hasOwnProperty(propName)\n );\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n var lineHasNonSpace = false;\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n var indentation = ''; // Tracks indentation for tags that use it\n var tagIndex = 0; // Stores a count of number of tags encountered on a line\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n indentation += chr;\n } else {\n nonSpace = true;\n lineHasNonSpace = true;\n indentation += ' ';\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n') {\n stripSpace();\n indentation = '';\n tagIndex = 0;\n lineHasNonSpace = false;\n }\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n if (type == '>') {\n token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n } else {\n token = [ type, value, start, scanner.pos ];\n }\n tagIndex++;\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n stripSpace();\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, intermediateValue, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n intermediateValue = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n *\n * In the case where dot notation is used, we consider the lookup\n * to be successful even if the last \"object\" in the path is\n * not actually an object but a primitive (e.g., a string, or an\n * integer), because it is sometimes useful to access a property\n * of an autoboxed primitive, such as the length of a string.\n **/\n while (intermediateValue != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = (\n hasProperty(intermediateValue, names[index])\n || primitiveHasOwnProperty(intermediateValue, names[index])\n );\n\n intermediateValue = intermediateValue[names[index++]];\n }\n } else {\n intermediateValue = context.view[name];\n\n /**\n * Only checking against `hasProperty`, which always returns `false` if\n * `context.view` is not an object. Deliberately omitting the check\n * against `primitiveHasOwnProperty` if dot notation is not used.\n *\n * Consider this example:\n * ```\n * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n * ```\n *\n * If we were to check also against `primitiveHasOwnProperty`, as we do\n * in the dot notation case, then render call would return:\n *\n * \"The length of a football field is 9.\"\n *\n * rather than the expected:\n *\n * \"The length of a football field is 100 yards.\"\n **/\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit) {\n value = intermediateValue;\n break;\n }\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.templateCache = {\n _cache: {},\n set: function set (key, value) {\n this._cache[key] = value;\n },\n get: function get (key) {\n return this._cache[key];\n },\n clear: function clear () {\n this._cache = {};\n }\n };\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n if (typeof this.templateCache !== 'undefined') {\n this.templateCache.clear();\n }\n };\n\n /**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted, and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.templateCache;\n var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n var isCacheEnabled = typeof cache !== 'undefined';\n var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n\n if (tokens == undefined) {\n tokens = parseTemplate(template, tags);\n isCacheEnabled && cache.set(cacheKey, tokens);\n }\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\n Writer.prototype.render = function render (template, view, partials, config) {\n var tags = this.getConfigTags(config);\n var tokens = this.parse(template, tags);\n var context = (view instanceof Context) ? view : new Context(view, undefined);\n return this.renderTokens(tokens, context, partials, template, config);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, config);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context, config);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials, config);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate, config);\n };\n\n Writer.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n var partialByNl = partial.split('\\n');\n for (var i = 0; i < partialByNl.length; i++) {\n if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n partialByNl[i] = filteredIndentation + partialByNl[i];\n }\n }\n return partialByNl.join('\\n');\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials, config) {\n if (!partials) return;\n var tags = this.getConfigTags(config);\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null) {\n var lineHasNonSpace = token[6];\n var tagIndex = token[5];\n var indentation = token[4];\n var indentedValue = value;\n if (tagIndex == 0 && indentation) {\n indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n }\n var tokens = this.parse(indentedValue, tags);\n return this.renderTokens(tokens, context, partials, indentedValue, config);\n }\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context, config) {\n var escape = this.getConfigEscape(config) || mustache.escape;\n var value = context.lookup(token[1]);\n if (value != null)\n return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n Writer.prototype.getConfigTags = function getConfigTags (config) {\n if (isArray(config)) {\n return config;\n }\n else if (config && typeof config === 'object') {\n return config.tags;\n }\n else {\n return undefined;\n }\n };\n\n Writer.prototype.getConfigEscape = function getConfigEscape (config) {\n if (config && typeof config === 'object' && !isArray(config)) {\n return config.escape;\n }\n else {\n return undefined;\n }\n };\n\n var mustache = {\n name: 'mustache.js',\n version: '4.2.0',\n tags: [ '{{', '}}' ],\n clearCache: undefined,\n escape: undefined,\n parse: undefined,\n render: undefined,\n Scanner: undefined,\n Context: undefined,\n Writer: undefined,\n /**\n * Allows a user to override the default caching strategy, by providing an\n * object with set, get and clear methods. This can also be used to disable\n * the cache by setting it to the literal `undefined`.\n */\n set templateCache (cache) {\n defaultWriter.templateCache = cache;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache () {\n return defaultWriter.templateCache;\n }\n };\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\n mustache.render = function render (template, view, partials, config) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials, config);\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n\n})));\n","const nav = document.querySelector('.navigation');\nconst body = document.querySelector('body');\nconst header = document.querySelector('.header');\nconst navHeight = nav.getBoundingClientRect().height;\n\nfunction updateNavClass(entries) {\n const [entry] = entries;\n if (!entry.isIntersecting) {\n nav.classList.remove('navigation--transparent');\n } else {\n nav.classList.add('navigation--transparent');\n }\n}\n\nconst headerObserver = new IntersectionObserver(updateNavClass, {\n root: null,\n threshold: 0,\n rootMargin: `${navHeight}px`,\n});\n\nconst navigation = {\n mobileToggleButton: null,\n mobileMenu: null,\n megaMenuLinks: null,\n\n init: function () {\n const self = this;\n if (nav.classList.contains('js-navigation-transparency')) {\n headerObserver.observe(header);\n }\n\n nav.classList.add('navigation--js-enabled');\n\n this.mobileToggleButton = document.querySelector(\n '.js-megamenu-mobile-toggle'\n );\n this.mobileMenu = document.getElementById('megamenu-mobile');\n this.megaMenuLinks = document.querySelectorAll('.js-megamenu-link');\n\n this.megaMenuLinks.forEach((button) => {\n button.addEventListener('click', function (event) {\n const megamenu = button.nextElementSibling;\n if (\n megamenu.classList.contains('megamenu') &&\n !button.parentElement.classList.contains('open')\n ) {\n self.closeAll();\n button.parentElement.classList.add('open');\n button.setAttribute('aria-expanded', 'true');\n nav.classList.toggle('navigation--open');\n } else {\n button.parentElement.classList.remove('open');\n button.setAttribute('aria-expanded', 'false');\n nav.classList.toggle('navigation--open');\n }\n event.preventDefault();\n return false;\n });\n });\n\n document.body.addEventListener('click', function (e) {\n if (window.innerWidth < 1056) return;\n if (!nav.classList.contains('navigation--open')) return;\n if (\n document.querySelector('.navigation__links').contains(e.target) ||\n document.querySelector('.megamenu').contains(e.target)\n ) {\n //console.log(e.target)\n } else {\n self.closeAll();\n }\n });\n\n /* let timer;\n document.querySelectorAll('li.megamenu__link').forEach(el => {\n el.addEventListener(\"mouseover\", function(event){\n self.closeAll();\n el.querySelector('.js-megamenu-link').setAttribute('aria-expanded', 'true');\n this.classList.add('open');\n clearTimeout(timer);\n });\n el.addEventListener(\"mouseout\", function(event){\n timer = setTimeout(function(event){\n self.closeAll();\n }, 300);\n });\n }) */\n\n this.mobileToggleButton.addEventListener('click', function (event) {\n self.mobileMenu.classList.toggle('d-none');\n self.mobileToggleButton.classList.toggle('open');\n nav.classList.toggle('navigation--open');\n body.classList.toggle('js-no-scroll');\n });\n },\n\n closeAll() {\n const self = this;\n document\n .querySelectorAll('li.megamenu__link.open')\n .forEach((el) => el.classList.remove('open'));\n self.megaMenuLinks.forEach((el) =>\n el.setAttribute('aria-expanded', 'false')\n );\n nav.classList.remove('navigation--open');\n },\n};\n\nexport default navigation;\n","import navigation from './navigation';\n\nconst coreModules = {\n init() {\n navigation.init();\n }\n};\n\nexport default coreModules;\n","import '@crasman/branch-bar/styles.css';\nimport { branchBar } from '@crasman/branch-bar';\n\nimport { common, components } from '@nt-workspace/common';\nimport coreModules from './modules/core-modules';\n\n// See https://www.npmjs.com/package/@crasman/branch-bar for settings\nbranchBar.init();\n\nconsole.log('Init core modules');\ncoreModules.init();\n\ncommon.toggle.init();\ncommon.video.init();\ncommon.lazyLoadMedia.init();\n\ncomponents.quickSearch.init();\ncomponents.siteSearch.init();\n\nconst accordionTabs = document.querySelectorAll('.js-accordion-tabs');\nif (accordionTabs.length) {\n accordionTabs.forEach((accordion) => {\n common.accordionTabs.init(accordion);\n });\n}\n\nconst mediaCarousels = document.querySelectorAll('.js-media-carousel');\nif (mediaCarousels.length) {\n mediaCarousels.forEach((gallery) => {\n components.mediaCarousel.init(gallery);\n });\n}\n\nconst tabs = document.querySelectorAll('.js-tabs');\nif (tabs.length) {\n tabs.forEach((tab) => {\n common.tabs.init(tab);\n });\n}\n\nconst timeToRead = document.querySelectorAll('.js-time-to-read');\nif (timeToRead.length) {\n timeToRead.forEach((el) => {\n common.timeToRead.init(el);\n });\n}\n\nconst listingFilters = document.getElementById('listing-filters');\nif (listingFilters) {\n components.listingFilters.init(listingFilters);\n}\n\n// Media gallery elements\nconst mediaGalleries = document.querySelectorAll('[data-media-gallery]');\nif (mediaGalleries.length > 0) {\n for (let el of mediaGalleries) {\n common.initMediaGallery(el);\n }\n}\n\n// Virtual select\nconst selects = document.querySelectorAll('[data-virtual-select]');\nif (selects.length > 0) {\n selects.forEach((select) => {\n common.select.init(select);\n });\n}\n\n// JS filter\nconst jsFilters = document.querySelectorAll('.js-filter');\nif (jsFilters.length > 0) {\n jsFilters.forEach((select) => {\n common.jsFilter.init(select);\n });\n}\n\n// CSR charts\nif (document.querySelectorAll('.highcharts-chart').length) {\n import(\n /* webpackChunkName: \"highcharts-chart\", webpackMode: \"lazy\" */ '../../../common/js/helpers/charts'\n ).then((m) => {\n // jshint ignore:line\n m.default.init();\n });\n}\n\nconst heroAnimate = document.querySelectorAll('.js-hero-animate');\nif (heroAnimate.length) {\n common.heroAnimate.init();\n}\n\n// Contact point/locations map\nif (document.querySelectorAll('.map').length) {\n import(\n /* webpackChunkName: \"gmaps-map\", webpackMode: \"lazy\" */ '../../../nt-corporate/src/js/modules/maps'\n ).then((m) => {\n // jshint ignore:line\n m.default.init();\n });\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst branchBar = {\n\t_minifiedClass: 'branch-bar--minified',\n\t_hiddenClass: 'branch-bar--hidden',\n\t_storageSettings: null,\n\t_folderId: null,\n\t_settingsKey: null,\n\t_dom: {\n\t\tbar: null,\n\t\ttoggles: null,\n\t\tpageSelects: null,\n\t},\n\t_isLocalStorageEnabled: function () {\n\t\tvar test = 'branch-bar-test';\n\n\t\ttry {\n\t\t\tlocalStorage.setItem(test, test);\n\t\t\tlocalStorage.removeItem(test);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t},\n\t_isMinified: function () {\n\t\treturn this._dom.bar.className.split(' ').indexOf(this._minifiedClass) >= 0;\n\t},\n\t_getSettings: function () {\n\t\tvar settings = null;\n\n\t\tif (!this._isLocalStorageEnabled()) {\n\t\t\treturn null;\n\t\t}\n\t\tthis._folderId = this._dom.bar.getAttribute('data-folder-id');\n\t\tthis._settingsKey = 'branch-bar--' + this._folderId;\n\t\tif (this._settingsKey) {\n\t\t\ttry {\n\t\t\t\tsettings = JSON.parse(localStorage.getItem(this._settingsKey));\n\t\t\t\treturn settings;\n\t\t\t} catch (e) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn settings;\n\t},\n\t_updateSettings: function () {\n\t\tif (!this._isLocalStorageEnabled()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this._storageSettings) {\n\t\t\tthis._storageSettings = {};\n\t\t}\n\n\t\tthis._storageSettings.minified = this._isMinified();\n\n\t\ttry {\n\t\t\tlocalStorage.setItem(\n\t\t\t\tthis._settingsKey,\n\t\t\t\tJSON.stringify(this._storageSettings)\n\t\t\t);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t},\n\t_toggleMinified: function () {\n\t\tif (this._isMinified()) {\n\t\t\tvar reg = new RegExp('(\\\\s|^)' + this._minifiedClass + '(\\\\s|$)');\n\t\t\tthis._dom.bar.className = this._dom.bar.className.replace(reg, ' ');\n\t\t} else {\n\t\t\tthis._dom.bar.className += ' ' + this._minifiedClass;\n\t\t}\n\t},\n\t_initToggles: function () {\n\t\tvar self = this;\n\n\t\tthis._dom.toggles = this._dom.bar.getElementsByClassName(\n\t\t\t'js-branch-bar__toggle'\n\t\t);\n\n\t\tfor (var i = 0, l = this._dom.toggles.length; i < l; i++) {\n\t\t\tthis._dom.toggles[i].addEventListener(\n\t\t\t\t'click',\n\t\t\t\tfunction () {\n\t\t\t\t\tself._toggleMinified();\n\t\t\t\t\tself._updateSettings();\n\t\t\t\t},\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\t},\n\t_initPageSelects: function () {\n\t\tthis._dom.pageSelects = this._dom.bar.getElementsByClassName(\n\t\t\t'js-branch-bar__page-select'\n\t\t);\n\n\t\tfor (var i = 0, l = this._dom.pageSelects.length; i < l; i++) {\n\t\t\tthis._dom.pageSelects[i].addEventListener(\n\t\t\t\t'change',\n\t\t\t\tfunction (e) {\n\t\t\t\t\tvar val = e.target.value;\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\twindow.location.href = val;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\t},\n\t_showBar: function () {\n\t\tvar reg = new RegExp('(\\\\s|^)' + this._hiddenClass + '(\\\\s|$)');\n\t\tvar self = this;\n\n\t\tself._dom.bar.className = self._dom.bar.className.replace(reg, ' ');\n\n\t\t// Remove inline display:none style\n\t\tif (self._dom.bar.style.display === 'none') {\n\t\t\tself._dom.bar.style.display = '';\n\t\t}\n\t},\n\t_setCSSVar(name, value) {\n\t\tvar prefix = '--branch-bar-';\n\n\t\tdocument.documentElement.style.setProperty(prefix + name, value);\n\t},\n\t_updateCSSVars: function (settings) {\n\t\tif (settings.zIndex) {\n\t\t\tthis._setCSSVar('z-index', settings.zIndex);\n\t\t}\n\n\t\tif (settings.bgColor) {\n\t\t\tthis._setCSSVar('bg-color', settings.bgColor);\n\t\t}\n\n\t\tif (settings.colorLight) {\n\t\t\tthis._setCSSVar('color-light', settings.colorLight);\n\t\t}\n\n\t\tif (settings.colorDark) {\n\t\t\tthis._setCSSVar('color-dark', settings.colorDark);\n\t\t}\n\n\t\tif (settings.shadowColor) {\n\t\t\tthis._setCSSVar('shadow-color', settings.shadowColor);\n\t\t}\n\t},\n\tinit: function (options) {\n\t\tvar settings = options || {};\n\n\t\tthis._updateCSSVars(settings);\n\n\t\tthis._dom.bar = document.getElementById('js-branch-bar'); // Assumes only one bar per page\n\n\t\tif (this._dom.bar) {\n\t\t\tthis._storageSettings = this._getSettings();\n\n\t\t\t// If user left the bar open\n\t\t\tif (this._storageSettings && !this._storageSettings.minified) {\n\t\t\t\tthis._toggleMinified();\n\t\t\t}\n\n\t\t\tthis._initToggles();\n\t\t\tthis._initPageSelects();\n\n\t\t\tthis._showBar();\n\t\t}\n\t},\n};\n\nexports.branchBar = branchBar;\nexports[\"default\"] = branchBar;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mustache_1 = __importDefault(require(\"mustache\"));\nrequire(\"../helpers/virtual-select\");\n/**\n * Filtering dropdowns for listing pages and other components that filter from results\n * @module listingFilters\n * @param {Object} el - The element to attach the filters to\n * @param {Object} options - The options for the filters\n * @param {Array} items - The items to filter\n * @param {Object} filters - The preselected filters\n * @param {String} itemTemplate - The template for the items\n * @param {Array} searchFields - The fields to search from, e.g. ['title', 'description']\n * @param {Number} limit - The number of items to show at once\n * @param {Number} resultsOffset - The offset for the results, For example on Our stories on CPT where one item is displayed as highlight, but \"show more\" should only show next [{limit} amount of items\n * @param {String} noResultsTemplate - The template for no results\n * @param {Object} localizations - The localizations for the filters\n * @returns {Object} listingFilters\n\n *\n */\nconst listingFilters = {\n el: {\n resultsEl: null,\n showMoreButton: null,\n countEl: null,\n submitButton: null,\n filterEl: null,\n },\n searchDelay: 700,\n minCharacters: 3,\n controller: new AbortController(),\n timer: null,\n items: [],\n filteredItems: [],\n freeTextItems: [],\n itemTemplate: \"\",\n filters: {},\n searchValue: \"\",\n searchFields: [],\n options: {},\n limit: 10,\n resultsOffset: 0,\n page: 1,\n noResultsTemplate: \"\",\n localizations: {\n option: \"option\",\n options: \"options\",\n count: \"%count% results\",\n },\n searchMode: \"browser\",\n /**\n * Initialises the functionality.\n * Attaches event handlers to toggle elements\n */\n init: function (el) {\n console.log(\"listingFilters init\");\n this.el = {\n resultsEl: document.getElementById(\"listing-results\"),\n showMoreButton: document.getElementById(\"listing-show-more\"),\n countEl: document.getElementById(\"section-listing-count\"),\n submitButton: document.getElementById(\"listing-search-submit\"),\n filterEl: document.getElementById(\"listing-filters\"),\n };\n const config = window.listingConfig;\n if (config) {\n this.options = config.options;\n this.items = config.items;\n if (config.preSelections) {\n this.filters = config.preSelections;\n }\n this.filteredItems = config.filteredItems || config.items;\n this.itemTemplate = config.itemTemplate || \"\";\n this.searchFields = config.searchFields || [];\n this.limit = config.limit || 10;\n this.resultsOffset = config.resultsOffset || 0;\n this.noResultsTemplate = config.noResultsTemplate || \"\";\n if (config.localizations) {\n this.localizations = config.localizations;\n }\n if (config.resultsEl) {\n this.el.resultsEl = document.getElementById(config.resultsEl);\n }\n this.searchMode = config.searchMode || \"browser\";\n }\n this.addEventListeners(el);\n },\n renderResults(page = 1) {\n const resultsEl = this.el.resultsEl;\n if (resultsEl) {\n let resultsHtml = \"\";\n // Clear and reset results for the first page\n if (page === 1) {\n this.page = 1;\n this.filteredItems.slice(0, this.limit).forEach((item) => {\n resultsHtml = resultsHtml + mustache_1.default.render(this.itemTemplate, item);\n });\n resultsEl.innerHTML = resultsHtml;\n }\n else {\n const lastChild = resultsEl.lastElementChild;\n lastChild?.insertAdjacentHTML(\"afterend\", this.filteredItems\n .slice((page - 1) * this.limit + this.resultsOffset, this.limit * page + this.resultsOffset)\n .map((item) => mustache_1.default.render(this.itemTemplate, item))\n .join(\"\"));\n }\n // Adjust the visibility of \"Show more\" button\n if (this.filteredItems.length >\n this.limit * this.page + this.resultsOffset) {\n this.el.showMoreButton?.classList.remove(\"hidden\");\n }\n else {\n this.el.showMoreButton?.classList.add(\"hidden\");\n }\n // Handle no results\n if (this.filteredItems.length === 0) {\n console.log(\"no results\");\n resultsEl.innerHTML = \"\" + mustache_1.default.render(this.noResultsTemplate, {});\n }\n // Update the count display\n if (this.el.countEl) {\n this.el.countEl.innerHTML = this.localizations.count.replace(\"%count%\", this.filteredItems.length);\n }\n // Remove loading classes\n this.el.resultsEl?.classList.remove(\"loading\");\n this.el.filterEl?.classList.remove(\"loading\");\n }\n },\n addEventListeners(el) {\n const selects = el.querySelectorAll(\".listing-filters-select\");\n const self = this;\n selects.forEach((select) => {\n if (this.options[select.dataset.name]) {\n window.VirtualSelect.init({\n optionHeight: 48,\n alwaysShowSelectedOptionsCount: true,\n optionSelectedText: this.localizations.option || \"\",\n optionsSelectedText: this.localizations.options || \"\",\n ele: select,\n disableSelectAll: true,\n disableAllOptionsSelectedText: true,\n silentInitialValueSet: true,\n selectedValue: this.filters[select.dataset.name],\n options: this.options[select.dataset.name],\n });\n select.addEventListener(\"change\", function () {\n if (this.value.length) {\n self.filters[this.dataset.name] = this.value;\n }\n else {\n delete self.filters[this.dataset.name];\n }\n if (self.searchMode === \"browser\") {\n self.filterResults();\n }\n });\n }\n });\n const searchInput = el.querySelector(\".listing-filters-search\");\n if (searchInput) {\n // Handle search input events\n let oldValue = searchInput?.value.trim();\n searchInput?.addEventListener(\"keyup\", (e) => {\n const value = searchInput.value.trim() || \"\";\n // Submit on enter\n if (e.key === \"Enter\" || e.keyCode === 13) {\n if (value.length >= this.minCharacters) {\n this.searchValue = value;\n }\n self.filterResults();\n }\n else {\n this.controller.abort();\n this.controller = new AbortController();\n clearTimeout(this.timer);\n this.timer = setTimeout(async () => {\n if (oldValue === value) {\n return;\n }\n // Search value is too short\n if (value.length < this.minCharacters) {\n this.searchValue = value;\n if (this.searchMode === \"browser\") {\n self.filterResults();\n }\n return;\n }\n oldValue = value;\n try {\n this.el.resultsEl?.classList.add(\"loading\");\n this.searchValue = value;\n if (this.searchMode === \"browser\") {\n self.filterResults();\n }\n return true;\n }\n catch (err) {\n if (err instanceof Error && err.name !== \"AbortError\") {\n console.log(err);\n }\n }\n }, this.searchDelay);\n }\n });\n }\n if (this.el.showMoreButton) {\n this.el.showMoreButton.addEventListener(\"click\", (e) => {\n if (this.filteredItems.length >\n this.limit * this.page + this.resultsOffset) {\n this.page++;\n this.renderResults(this.page);\n }\n });\n }\n if (this.el.submitButton) {\n this.el.submitButton.addEventListener(\"click\", (e) => {\n self.filterResults();\n });\n }\n },\n search(value) {\n try {\n this.el.resultsEl?.classList.add(\"loading\");\n this.searchValue = value;\n this.filterResults(true);\n return true;\n }\n catch (err) {\n if (err instanceof Error && err.name !== \"AbortError\") {\n console.log(err);\n }\n }\n },\n filterResults() {\n if (this.searchMode === \"browser\") {\n this.resultsOffset = 0;\n const hasFilters = Object.keys(this.filters).length > 0;\n const hasSearch = this.searchValue.length > 2;\n if (hasFilters || hasSearch) {\n if (hasFilters) {\n this.filteredItems = this.items.filter((item) => {\n let match = true;\n for (const key in this.filters) {\n if (match && this.filters[key].length) {\n if (item[key] &&\n item[key].some((value) => this.filters[key].includes(value))) {\n match = true;\n }\n else {\n match = false;\n }\n }\n }\n return match;\n });\n }\n if (hasSearch) {\n this.filteredItems = (!hasFilters ? this.items : this.filteredItems).filter((item) => {\n let match = false;\n for (const key of this.searchFields) {\n if (item[key].toLowerCase().includes(this.searchValue)) {\n match = true;\n }\n }\n return match;\n });\n }\n }\n else if (!hasSearch && !hasFilters) {\n this.filteredItems = this.items;\n }\n }\n else if (this.searchMode === \"ajax\") {\n this.el.filterEl?.classList.add(\"loading\");\n const formData = new FormData();\n for (const key in this.filters) {\n if (this.filters[key]) {\n formData.append(key, JSON.stringify(this.filters[key]));\n }\n }\n if (this.searchValue.length &&\n this.searchValue.length > this.minCharacters) {\n formData.append(\"search\", this.searchValue);\n }\n try {\n fetch(`/stage-ajax/siteSearch/?stage-language=${document.body.getAttribute(\"data-language\")}&context=releases`, {\n method: \"POST\",\n body: formData,\n signal: this.controller.signal,\n })\n .then((response) => response.json())\n .then((response) => {\n this.filteredItems = response.hits;\n this.renderResults();\n })\n .catch((err) => {\n if (err instanceof Error && err.name !== \"AbortError\") {\n console.log(\"Error fetching releases\");\n console.log(err);\n }\n this.el.resultsEl?.classList.remove(\"loading\");\n this.el.filterEl?.classList.remove(\"loading\");\n });\n return true;\n }\n catch (err) {\n if (err instanceof Error && err.name !== \"AbortError\") {\n console.log(err);\n }\n this.el.resultsEl?.classList.remove(\"loading\");\n this.el.filterEl?.classList.remove(\"loading\");\n }\n }\n this.page = 1;\n this.renderResults(this.page);\n },\n};\nexports.default = listingFilters;\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Video\n *\n * @description:\n * This module is responsible for handling video elements.\n * It adds event listeners to video elements to play the video when overlay is clicked.\n *\n * js-video-active is helper class which is needed to prevent clicks, when the video is in a slider for example.\n * If only showing video, add this class as default\n *\n * @example:\n *
\n * \n *
\n *
\n */\nconst video = {\n addVideoElement: function (element) {\n console.log('addVideoElement()');\n const video = element.querySelector('video');\n const overlay = element.querySelector('[data-video-element-overlay]');\n const playVideo = () => {\n if (overlay.classList.contains('js-video-active')) {\n video.play();\n video.focus();\n video.setAttribute('controls', '');\n overlay.remove();\n video.removeEventListener('click', playVideo);\n video.removeEventListener('keyup', keyPressOnPlay);\n overlay.removeEventListener('click', playVideo);\n }\n };\n const keyPressOnPlay = (e) => {\n if (e.key === 'Enter') {\n playVideo();\n }\n };\n video.addEventListener('click', playVideo);\n video.addEventListener('keyup', keyPressOnPlay);\n overlay.addEventListener('click', playVideo);\n },\n init: function () {\n document.querySelectorAll('[data-video-element]').forEach(video => {\n this.addVideoElement(video);\n });\n }\n};\nexports.default = video;\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nexport { _createForOfIteratorHelper as default };","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mustache_1 = __importDefault(require(\"mustache\"));\n/**\n * Quick search functionality for navigation bar\n *\n */\nconst quickSearch = {\n el: {\n body: null,\n el: null,\n input: null,\n toggleButton: null,\n form: null,\n results: null,\n nav: null\n },\n results: {\n term: '',\n page: 1,\n total_hits: 0,\n hits: [],\n showAllResults: ''\n },\n templates: {\n results: ''\n },\n searchDelay: 500,\n minCharacters: 3,\n controller: new AbortController(),\n timer: null,\n processingClickEvent: null,\n /**\n * Initialises the functionality.\n * Attaches event handlers to toggle elements\n */\n init: function () {\n this.el = {\n body: document.querySelector('body'),\n el: document.getElementById('site-quick-search'),\n results: document.getElementById('site-quick-search-results'),\n toggleButton: document.querySelector('button[aria-controls=\"site-quick-search\"]'),\n input: document.querySelector('[data-site-search-form] [name=\"search\"]'),\n form: document.querySelector('[data-site-search-form]'),\n nav: document.querySelector('.navigation')\n };\n this.templates.results = document.getElementById('template-site-search-results')?.textContent || '';\n this.addEventListeners();\n },\n addEventListeners() {\n const self = this;\n this.el.toggleButton?.addEventListener('click', (e) => {\n const target = e.currentTarget;\n if (target?.getAttribute('aria-expanded') === 'false') {\n this.open();\n }\n else {\n this.closeSearch(false);\n }\n });\n // Handle search input events\n let oldValue = this.el.input?.value.trim();\n this.el.input?.addEventListener('keyup', (e) => {\n if (e.key === 'Escape') {\n this.closeSearch(false);\n this.el.toggleButton?.focus();\n }\n const value = this.el.input?.value.trim() || '';\n if (oldValue === value) {\n return;\n }\n // Search value is too short\n if (value.length < this.minCharacters) {\n if (!value) {\n this.emptyResults();\n }\n return;\n }\n oldValue = value;\n this.search(value);\n });\n // Close search when focus moves outside of search element\n this.el.body?.addEventListener('keyup', (e) => {\n if (e.key === 'Tab' && !this.el.el?.contains(e.target) && this.el.toggleButton?.getAttribute('aria-expanded') === 'true') {\n this.closeSearch(!e.shiftKey);\n }\n });\n window.addEventListener('click', function (e) {\n if (self.el.el?.classList.contains('hidden'))\n return;\n if (document.querySelector('.site-quick-search')?.contains(e.target) || document.querySelector('.js-search-toggle')?.contains(e.target)) {\n // Clicked in box\n }\n else {\n self.closeSearch(true);\n }\n });\n this.el.results?.addEventListener('click', (e) => {\n const target = e.target.classList.contains('site-quick-search-result') ? e.target : e.target.closest('.site-quick-search-result');\n if (target && target.dataset?.searchItem && target.dataset?.searchItemUrl === target.getAttribute('href')) {\n e.preventDefault();\n self.sendClickEvent({\n url: target.getAttribute('href'),\n id: target.dataset?.searchItem,\n position: target.dataset?.searchItemPosition,\n term: target.dataset?.searchItemTerm,\n });\n return false;\n }\n });\n },\n search(value) {\n this.controller.abort();\n this.controller = new AbortController();\n clearTimeout(this.timer);\n this.timer = setTimeout(async () => {\n try {\n this.el.form?.classList.add('loading');\n fetch('/stage-ajax/siteSearch/?' + new URLSearchParams({\n 'stage-language': this.el?.form?.getAttribute('data-lang') || '',\n context: 'quick_search',\n search: value\n }).toString(), {\n method: 'POST',\n signal: this.controller.signal,\n })\n .then(response => response.json())\n .then((response) => {\n response.showAllResults = this.el.form?.getAttribute('action') + '?search=' + response.term;\n this.results = response;\n this._renderResults();\n this.showResults();\n this.el.form?.classList.remove('loading');\n })\n .catch((err) => {\n console.error(`Search err error: ${err.message}`);\n this.el.form?.classList.remove('loading');\n });\n return true;\n }\n catch (err) {\n if (err instanceof Error && err.name !== 'AbortError') {\n console.log(err);\n this.el.form?.classList.remove('loading');\n }\n }\n finally {\n }\n }, this.searchDelay);\n },\n sendClickEvent(data) {\n if (this.processingClickEvent) {\n return;\n }\n this.processingClickEvent = data.id;\n let locationChanging = false;\n const loadTargetPath = () => {\n if (data.url && !locationChanging) {\n locationChanging = true;\n window.location = data.url;\n }\n };\n const formData = new FormData();\n formData.append('id', data.id);\n formData.append('position', data.position);\n formData.append('term', data.term);\n try {\n fetch(`/stage-ajax/siteSearch/?stage-language=${document.body.getAttribute('data-language')}&context=reportClick`, {\n method: 'POST',\n signal: this.controller.signal,\n body: formData,\n }).then(() => {\n loadTargetPath();\n }).catch((err) => {\n loadTargetPath();\n });\n return true;\n }\n catch (err) {\n if (err instanceof Error && err.name !== 'AbortError') {\n console.log(err);\n }\n }\n // Navigate to new url after small delay, even if ajax request has not completed\n setTimeout(loadTargetPath, 500);\n },\n open() {\n this.el.toggleButton?.setAttribute('aria-expanded', 'true');\n this.el.el?.classList.remove('hidden');\n this.el.input?.focus();\n this.el.body?.classList.add('js-no-scroll');\n this.el.nav?.classList.add('navigation--search--open');\n // make sure mobilemenu gets closed\n const mobileMenu = document.getElementById('megamenu-mobile');\n if (mobileMenu) {\n document.querySelector('.js-megamenu-mobile-toggle');\n mobileMenu.classList.add(\"d-none\");\n document.querySelector('.js-megamenu-mobile-toggle')?.classList.remove(\"open\");\n }\n document.querySelectorAll(\"li.megamenu__link.open\").forEach(el => el.classList.remove('open'));\n const megaMenuLinks = document.querySelectorAll('.js-megamenu-link');\n megaMenuLinks.forEach(el => el.setAttribute('aria-expanded', 'false'));\n document.querySelector('.navigation')?.classList.remove('navigation--open');\n },\n closeSearch(noFocus = false) {\n this.el.toggleButton?.setAttribute('aria-expanded', 'false');\n this.el.el?.classList.add('hidden');\n this.el.body?.classList.remove('js-no-scroll');\n this.el.nav?.classList.remove('navigation--search--open');\n if (!noFocus) {\n this.el.toggleButton?.focus();\n }\n },\n emptyResults() {\n if (this.el.results) {\n this.el.results.innerHTML = '';\n this.el.results?.classList.remove('open');\n }\n },\n /**\n * Render results view with current results.\n * @private\n */\n _renderResults() {\n const results = { ...this.results };\n if (this.el.results) {\n this.el.results.innerHTML = mustache_1.default.render(this.templates.results, results);\n }\n },\n /**\n * Shows results.\n */\n showResults() {\n if (!this.results.term) {\n return;\n }\n this.el.results?.classList.add('open');\n },\n};\nexports.default = quickSearch;\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","\"use strict\";\n/**\n * A generic toggle that controls another element's visibility\n *\n * sample usage:\n *\n * \n *
I am initially hidden
\n *\n * If you want to toggle only once and hide the button afterwards, use:\n *\n * \n *
I am initially hidden
\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Handles toggling another element's visibility when toggle element is clicked\n *\n * @param {Event} e - Event object\n */\nconst onClick = (e) => {\n const toggle = e.currentTarget;\n if (toggle.dataset.toggleTarget) {\n const target = document.getElementById(toggle.dataset.toggleTarget);\n if (target && (toggle.dataset.noHide !== 'true' || (toggle.dataset.noHide === 'true' && !toggle.classList.contains('is-toggled')))) {\n target.classList.toggle('hidden');\n toggle.classList.toggle('is-toggled');\n toggle.setAttribute('aria-expanded', 'true');\n if (typeof toggle.dataset.toggleHideSelf !== 'undefined') {\n toggle.classList.add('hidden');\n }\n // Show/hide content in toggle button based on current state\n const toggleContent = toggle.querySelectorAll('.js-toggle__toggle');\n const isToggledContent = toggle.querySelectorAll('.js-toggle__is-toggled');\n if (toggle.classList.contains('is-toggled')) {\n toggleContent.forEach(el => el.classList.add('hidden'));\n isToggledContent.forEach(el => el.classList.remove('hidden'));\n }\n else {\n toggleContent.forEach(el => el.classList.remove('hidden'));\n isToggledContent.forEach(el => el.classList.add('hidden'));\n }\n }\n }\n if (toggle.dataset.toggleSiblings && toggle.parentElement) {\n const siblings = toggle.parentElement?.querySelectorAll('.js-toggle');\n siblings.forEach((sibling) => {\n if (sibling !== toggle) {\n sibling.classList.remove('is-toggled');\n const targetId = sibling.dataset.toggleTarget;\n if (targetId) {\n const target = document.getElementById(targetId);\n target?.classList.add('hidden');\n }\n sibling.setAttribute('aria-expanded', 'false');\n }\n });\n }\n};\nconst onKeyPressClick = (e) => {\n if (e.key === 'Enter') {\n onClick(e);\n }\n};\nconst toggle = {\n /**\n * Initialises the functionality.\n * Attaches event handlers to toggle elements\n */\n init: function () {\n const toggles = document.querySelectorAll('.js-toggle');\n for (const toggle of toggles) {\n toggle.addEventListener('click', onClick);\n toggle.addEventListener('keyup', onKeyPressClick);\n }\n },\n};\nexports.default = toggle;\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.init = void 0;\nconst swiper_1 = __importDefault(require(\"./swiper/swiper\"));\nconst modal_dialog_1 = require(\"./modal-dialog\");\nconst utils_1 = require(\"./utils\");\n/**\n * Media gallery is a grid of interactive images that can be viewed in native dialog.\n * Opened dialog contains a slider that allows user to change active slide.\n * Slides can display any kind of content, but currently only images are supported.\n *\n * @param {HTMLElement} container Media gallery container. Must contain dialog and slider elements.\n */\nasync function init(container) {\n const sliderEl = container.querySelector('[data-media-gallery-slider]');\n const dialogEl = container.querySelector('dialog');\n if (!dialogEl || !sliderEl) {\n console.warn('Media gallery could not be initialized, slider or dialog is missing.');\n return;\n }\n console.log('init media gallery with modals');\n (0, modal_dialog_1.useNativeDialogAsModal)(dialogEl);\n const bullets = container.querySelectorAll('.swiper-pagination-bullet');\n const thumbnails = Array.from(bullets).reduce((value, item) => {\n value[parseInt(item.dataset.index)] = item.dataset.thumbnail;\n return value;\n }, {});\n const paginationSeparator = container.dataset.paginationSeparator;\n const swiperIndex = container.dataset.swiperIndex;\n // Swiper hidden slides are focusable which breaks the slider\n // https://github.com/nolimits4web/swiper/issues/4006\n //\n // Set all but visible slide to inert to avoid slider breakdown\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inert\n const setHiddenSlidesInert = () => {\n const slides = dialogEl.querySelectorAll('.swiper-slide');\n slides.forEach(slide => {\n slide.inert = !slide.classList.contains('swiper-slide-active');\n });\n };\n const sliderConfig = {\n navigation: {\n nextEl: '.js-swiper-next',\n prevEl: '.js-swiper-prev',\n },\n autoHeight: true,\n centeredSlides: true,\n slidesPerView: 1,\n effect: 'fade',\n speed: 300,\n crossFade: true,\n pagination: paginationSeparator ? {\n el: `.js-swiper-pagination--${swiperIndex}`,\n type: 'custom',\n renderCustom: function (_, current, total) {\n return current + paginationSeparator + total;\n }\n } : {\n el: '.swiper-pagination',\n type: 'bullets',\n clickable: true,\n renderBullet: function (index, className) {\n return ``;\n }\n },\n //loop: true,\n on: {\n update() {\n setTimeout(setHiddenSlidesInert, 0);\n },\n slideChange() {\n setTimeout(setHiddenSlidesInert, 0);\n },\n },\n };\n // Set mobile to use page numbers instead of image previews\n const isMobile = ['xs', 'sm'].includes((0, utils_1.getBreakpoint)());\n if (isMobile && !paginationSeparator) {\n sliderConfig.pagination = {\n el: '.swiper-pagination',\n type: 'fraction',\n renderFraction: function (currentClass, totalClass) {\n return ` of `;\n }\n };\n }\n const slider = new swiper_1.default(sliderEl, sliderConfig);\n const onKeyPressClick = (e) => {\n if (e.key === 'Enter') {\n toggleButtonHandler(e);\n }\n };\n // Handler for gallery buttons that open selected media item in modal\n const toggleButtonHandler = (e) => {\n const button = e.target.closest('button') || e.target.closest('[role=\"button\"]');\n const index = parseInt(button.dataset.mediaGalleryToggle) || 0;\n dialogEl.showModal();\n slider.update();\n slider.slideTo(index);\n };\n const toggleButtons = container.querySelectorAll('[data-media-gallery-toggle]');\n toggleButtons.forEach(button => {\n button.addEventListener('click', toggleButtonHandler);\n button.addEventListener('keyup', onKeyPressClick);\n });\n}\nexports.init = init;\nexports.default = init;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst swiper_1 = __importDefault(require(\"../helpers/swiper/swiper\"));\n/**\n * Add swiping to tabs element, like Highlight with tabs\n *\n * @param {HTMLElement} el - js-tabs\n * @returns {void}\n *\n *\n */\nconst Tabs = {\n swiper: null,\n swiperIndex: 0,\n init(el) {\n console.log('Init Tabs');\n this.el = el;\n this.swiperEl = el.querySelector('.js-swiper-container');\n if (el.dataset.swiperIndex) {\n this.swiperIndex = parseInt(el.dataset.swiperIndex);\n }\n if (this.swiperEl) {\n const self = this;\n const swiper = new swiper_1.default(this.swiperEl, {\n speed: 500,\n allowTouchMove: true,\n keyboard: true,\n spaceBetween: 1,\n watchSlidesProgress: true,\n slidesPerView: \"auto\",\n navigation: {\n nextEl: `.js-swiper-next-${self.swiperIndex}`,\n prevEl: `.js-swiper-prev-${self.swiperIndex}`\n },\n });\n }\n }\n};\nexports.default = Tabs;\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"./virtual-select\");\nconst select = {\n /**\n * Initialises the functionality.\n */\n init: function (el) {\n window.VirtualSelect.init({\n ele: el,\n optionHeight: 48\n });\n },\n};\nexports.default = select;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\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}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n/*!\n * Virtual Select v1.0.44\n * https://sa-si-dev.github.io/virtual-select\n * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE)\n */ /******/ (function () {\n var __webpack_exports__ = {};\n // This entry need to be wrapped in an IIFE because it need to be in strict mode.\n !function () {\n \"use strict\";\n // UNUSED EXPORTS: VirtualSelect\n ; // CONCATENATED MODULE: ./src/utils/utils.js\n function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n function _nonIterableSpread() { 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 function _unsupportedIterableToArray(o, minLen) { if (!o)\n return; if (typeof o === \"string\")\n return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor)\n n = o.constructor.name; if (n === \"Map\" || n === \"Set\")\n return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray(o, minLen); }\n function _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\n return Array.from(iter); }\n function _arrayWithoutHoles(arr) { if (Array.isArray(arr))\n return _arrayLikeToArray(arr); }\n function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length)\n len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n } return arr2; }\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj);\n }\n function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n } }\n function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n } }\n function _createClass(Constructor, protoProps, staticProps) { if (protoProps)\n _defineProperties(Constructor.prototype, protoProps); if (staticProps)\n _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n function _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\n function _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null)\n return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\")\n return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n } return (hint === \"string\" ? String : Number)(input); }\n var Utils = /*#__PURE__*/ function () {\n function Utils() {\n _classCallCheck(this, Utils);\n }\n _createClass(Utils, null, [{\n key: \"getString\",\n value: \n /**\n * @param {any} text\n * @returns {string}\n * @memberof Utils\n */\n function getString(text) {\n return text || text === 0 ? text.toString() : '';\n }\n /**\n * @param {any} value\n * @param {boolean} defaultValue\n * @returns {boolean}\n * @memberof Utils\n */\n }, {\n key: \"convertToBoolean\",\n value: function convertToBoolean(value) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var result;\n if (value === true || value === 'true') {\n result = true;\n }\n else if (value === false || value === 'false') {\n result = false;\n }\n else {\n result = defaultValue;\n }\n return result;\n }\n /**\n * @param {any} value\n * @returns {boolean}\n * @memberof Utils\n */\n }, {\n key: \"isEmpty\",\n value: function isEmpty(value) {\n var result = false;\n if (!value) {\n result = true;\n }\n else if (Array.isArray(value)) {\n if (value.length === 0) {\n result = true;\n }\n }\n else if (_typeof(value) === 'object' && Object.keys(value).length === 0) {\n result = true;\n }\n return result;\n }\n /**\n * @param {any} value\n * @returns {boolean}\n * @memberof Utils\n */\n }, {\n key: \"isNotEmpty\",\n value: function isNotEmpty(value) {\n return !this.isEmpty(value);\n }\n /**\n * @param {any[]} array\n * @param {any} value\n * @param {boolean} cloneArray\n * @returns {any[]}\n * @memberof Utils\n */\n }, {\n key: \"removeItemFromArray\",\n value: function removeItemFromArray(array, value) {\n var cloneArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!Array.isArray(array) || !array.length) {\n return array;\n }\n var inputArr = cloneArray ? _toConsumableArray(array) : array;\n var index = inputArr.indexOf(value);\n if (index !== -1) {\n inputArr.splice(index, 1);\n }\n return inputArr;\n }\n /**\n * @param {any[]} array\n * @returns {any[]}\n * @memberof Utils\n */\n }, {\n key: \"removeArrayEmpty\",\n value: function removeArrayEmpty(array) {\n if (!Array.isArray(array) || !array.length) {\n return [];\n }\n return array.filter(function (d) {\n return !!d;\n });\n }\n /**\n * @param {number} max\n * @param {number} max\n * @returns {number}\n * @memberof Utils\n */\n }, {\n key: \"getRandomInt\",\n value: function getRandomInt(max) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var minN = Math.ceil(min);\n var maxN = Math.floor(max);\n return Math.floor(Math.random() * (maxN - minN - 1)) + minN;\n }\n /**\n * @param {string} text\n * @return {string}\n * @memberof Utils\n */\n }, {\n key: \"regexEscape\",\n value: function regexEscape(text) {\n var ESC_REGEX = /[-/\\\\^$*+?.()|[\\]{}]/g;\n return text.replace(ESC_REGEX, '\\\\$&');\n }\n /**\n * @param {string} text\n * @return {string}\n * @memberof Utils\n */\n }, {\n key: \"normalizeString\",\n value: function normalizeString(text) {\n var NON_WORD_REGEX = /[^\\w]/g;\n return text.normalize('NFD').replace(NON_WORD_REGEX, '');\n }\n /**\n * @static\n * @param {*} container\n * @param {string} text\n * @return {boolean}\n * @memberof Utils\n */\n }, {\n key: \"willTextOverflow\",\n value: function willTextOverflow(container, text) {\n var tempElement = document.createElement('div');\n tempElement.style.position = 'absolute';\n tempElement.style.visibility = 'hidden';\n tempElement.style.whiteSpace = 'nowrap';\n tempElement.style.fontSize = window.getComputedStyle(container).fontSize;\n tempElement.style.fontFamily = window.getComputedStyle(container).fontFamily;\n tempElement.textContent = text;\n document.body.appendChild(tempElement);\n var textWidth = tempElement.clientWidth;\n document.body.removeChild(tempElement);\n return textWidth > container.clientWidth;\n }\n /**\n * @static\n * @param {string} text\n * @return {string}\n * @memberof Utils\n */\n }, {\n key: \"replaceDoubleQuotesWithHTML\",\n value: function replaceDoubleQuotesWithHTML(text) {\n return text.replace(/\"/g, '"');\n }\n /**\n * @static\n * @param {string} text\n * @return {boolean}\n * @memberof Utils\n */\n }, {\n key: \"containsHTML\",\n value: function containsHTML(text) {\n return /<[a-z][\\s\\S]*>/i.test(text);\n }\n }]);\n return Utils;\n }();\n ; // CONCATENATED MODULE: ./src/utils/dom-utils.js\n function dom_utils_typeof(obj) {\n \"@babel/helpers - typeof\";\n return dom_utils_typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, dom_utils_typeof(obj);\n }\n function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || dom_utils_unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) {\n var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i)\n return;\n _n = !1;\n }\n else\n for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n }\n catch (err) {\n _d = !0, _e = err;\n }\n finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r))\n return;\n }\n finally {\n if (_d)\n throw _e;\n }\n }\n return _arr;\n } }\n function _arrayWithHoles(arr) { if (Array.isArray(arr))\n return arr; }\n function dom_utils_toConsumableArray(arr) { return dom_utils_arrayWithoutHoles(arr) || dom_utils_iterableToArray(arr) || dom_utils_unsupportedIterableToArray(arr) || dom_utils_nonIterableSpread(); }\n function dom_utils_nonIterableSpread() { 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 function dom_utils_unsupportedIterableToArray(o, minLen) { if (!o)\n return; if (typeof o === \"string\")\n return dom_utils_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor)\n n = o.constructor.name; if (n === \"Map\" || n === \"Set\")\n return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return dom_utils_arrayLikeToArray(o, minLen); }\n function dom_utils_iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\n return Array.from(iter); }\n function dom_utils_arrayWithoutHoles(arr) { if (Array.isArray(arr))\n return dom_utils_arrayLikeToArray(arr); }\n function dom_utils_arrayLikeToArray(arr, len) { if (len == null || len > arr.length)\n len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n } return arr2; }\n function dom_utils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n } }\n function dom_utils_defineProperties(target, props) { for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, dom_utils_toPropertyKey(descriptor.key), descriptor);\n } }\n function dom_utils_createClass(Constructor, protoProps, staticProps) { if (protoProps)\n dom_utils_defineProperties(Constructor.prototype, protoProps); if (staticProps)\n dom_utils_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n function dom_utils_toPropertyKey(arg) { var key = dom_utils_toPrimitive(arg, \"string\"); return dom_utils_typeof(key) === \"symbol\" ? key : String(key); }\n function dom_utils_toPrimitive(input, hint) { if (dom_utils_typeof(input) !== \"object\" || input === null)\n return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (dom_utils_typeof(res) !== \"object\")\n return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n } return (hint === \"string\" ? String : Number)(input); }\n var DomUtils = /*#__PURE__*/ function () {\n function DomUtils() {\n dom_utils_classCallCheck(this, DomUtils);\n }\n dom_utils_createClass(DomUtils, null, [{\n key: \"addClass\",\n value: \n /**\n * @param {HTMLElement | NodeListOf} $ele\n * @param {string} classNames\n */\n function addClass($ele, classNames) {\n if (!$ele) {\n return;\n }\n var classNamesArr = classNames.split(' ');\n DomUtils.getElements($ele).forEach(function ($this) {\n var _$this$classList;\n (_$this$classList = $this.classList).add.apply(_$this$classList, dom_utils_toConsumableArray(classNamesArr));\n });\n }\n /**\n * @param {HTMLElement | NodeListOf} $ele\n * @param {string} classNames\n */\n }, {\n key: \"removeClass\",\n value: function removeClass($ele, classNames) {\n if (!$ele) {\n return;\n }\n var classNamesArr = classNames.split(' ');\n DomUtils.getElements($ele).forEach(function ($this) {\n var _$this$classList2;\n (_$this$classList2 = $this.classList).remove.apply(_$this$classList2, dom_utils_toConsumableArray(classNamesArr));\n });\n }\n /**\n * @param {HTMLElement | NodeListOf} $ele\n * @param {string} classNames\n * @param {boolean} [isAdd]\n */\n }, {\n key: \"toggleClass\",\n value: function toggleClass($ele, classNames, isAdd) {\n if (!$ele) {\n return;\n }\n /** @type {boolean | undefined} */\n var isAdding;\n if (isAdd !== undefined) {\n isAdding = Boolean(isAdd);\n }\n DomUtils.getElements($ele).forEach(function ($this) {\n $this.classList.toggle(classNames, isAdding);\n });\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} className\n * @returns {boolean}\n */\n }, {\n key: \"hasClass\",\n value: function hasClass($ele, className) {\n if (!$ele) {\n return false;\n }\n return $ele.classList.contains(className);\n }\n /**\n * @param {HTMLElement} $ele\n * @returns {boolean}\n */\n }, {\n key: \"hasEllipsis\",\n value: function hasEllipsis($ele) {\n if (!$ele) {\n return false;\n }\n return $ele.scrollWidth > $ele.offsetWidth;\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} name\n * @param {string} [type]\n * @returns {any}\n */\n }, {\n key: \"getData\",\n value: function getData($ele, name, type) {\n if (!$ele) {\n return undefined;\n }\n /** @type {any} */\n var value = $ele ? $ele.dataset[name] : '';\n if (type === 'number') {\n value = parseFloat(value) || 0;\n }\n else if (value === 'true') {\n value = true;\n }\n else if (value === 'false') {\n value = false;\n }\n return value;\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} name\n * @param {string} value\n */\n }, {\n key: \"setData\",\n value: function setData($ele, name, value) {\n if (!$ele) {\n return;\n }\n // eslint-disable-next-line no-param-reassign\n $ele.dataset[name] = value;\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} name\n * @param {string} value\n */\n }, {\n key: \"setAttr\",\n value: function setAttr($ele, name, value) {\n if (!$ele) {\n return;\n }\n $ele.setAttribute(name, value);\n }\n /**\n * @param {HTMLElement} $from\n * @param {HTMLElement} $to\n * @param {string[]} attrList\n * @param {string[]} valueLessProps\n */\n }, {\n key: \"setAttrFromEle\",\n value: function setAttrFromEle($from, $to, attrList, valueLessProps) {\n /** @type {any} */\n var values = {};\n attrList.forEach(function (attr) {\n values[attr] = $from.getAttribute(attr);\n });\n attrList.forEach(function (attr) {\n var value = values[attr];\n if (value || valueLessProps.indexOf(attr) !== -1 && value === '') {\n $to.setAttribute(attr, value);\n }\n });\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} name\n * @param {string} value\n */\n }, {\n key: \"setStyle\",\n value: function setStyle($ele, name, value) {\n if (!$ele) {\n return;\n }\n // @ts-ignore\n // eslint-disable-next-line no-param-reassign\n $ele.style[name] = value;\n }\n /**\n * @param {HTMLElement} $ele\n * @param {any} props\n */\n }, {\n key: \"setStyles\",\n value: function setStyles($ele, props) {\n if (!$ele || !props) {\n return;\n }\n Object.keys(props).forEach(function (name) {\n // @ts-ignore\n // eslint-disable-next-line no-param-reassign\n $ele.style[name] = props[name];\n });\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} name\n * @param {string} value\n */\n }, {\n key: \"setAria\",\n value: function setAria($ele, name, value) {\n var attrName = name;\n if (attrName !== 'role') {\n attrName = \"aria-\".concat(attrName);\n }\n $ele.setAttribute(attrName, value);\n }\n /**\n * @param {any} $ele\n * @returns {any[]}\n */\n }, {\n key: \"getElements\",\n value: function getElements($ele) {\n if (!$ele) {\n return [];\n }\n return $ele.forEach === undefined ? [$ele] : $ele;\n }\n /**\n * @static\n * @param {string} [$selector='']\n * @param {*} [$parentEle=undefined]\n * @return {*}\n * @memberof DomUtils\n */\n }, {\n key: \"getElementsBySelector\",\n value: function getElementsBySelector() {\n var $selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var $parentEle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n var elements;\n var parent = $parentEle !== undefined ? $parentEle : document;\n if ($selector !== '') {\n elements = parent.querySelectorAll($selector);\n }\n return elements !== undefined ? Array.from(elements) : [];\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} events\n * @param {Function} callback\n */\n }, {\n key: \"addEvent\",\n value: function addEvent($ele, events, callback) {\n if (!$ele) {\n return;\n }\n var eventsArray = Utils.removeArrayEmpty(events.split(' '));\n eventsArray.forEach(function (event) {\n var $eleArray = DomUtils.getElements($ele);\n $eleArray.forEach(function ($this) {\n $this.addEventListener(event, callback);\n });\n });\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} eventName\n * @param {boolean} [bubbles]\n */\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent($ele, eventName) {\n var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!$ele) {\n return;\n }\n var $eleArray = DomUtils.getElements($ele);\n /** using setTimeout to trigger asynchronous event */\n setTimeout(function () {\n $eleArray.forEach(function ($this) {\n $this.dispatchEvent(new CustomEvent(eventName, {\n bubbles: bubbles\n }));\n });\n }, 0);\n }\n /**\n * convert object to dom attributes\n * @param {ObjectString} data\n */\n }, {\n key: \"getAttributesText\",\n value: function getAttributesText(data) {\n var html = '';\n if (!data) {\n return html;\n }\n // @ts-ignore\n Object.entries(data).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2), k = _ref2[0], v = _ref2[1];\n if (v !== undefined) {\n html += \" \".concat(k, \"=\\\"\").concat(v, \"\\\" \");\n }\n });\n return html;\n }\n /**\n * convert \"maxValue\" to \"data-max-value\"\n * @param {string} prop\n */\n }, {\n key: \"convertPropToDataAttr\",\n value: function convertPropToDataAttr(prop) {\n return prop ? \"data-\".concat(prop).replace(/([A-Z])/g, '-$1').toLowerCase() : '';\n }\n /**\n * Changes the tab index of an element passed as an input\n * @static\n * @param {HTMLElement | NodeListOf} $ele\n * @param {number} newTabIndex\n * @memberof DomUtils\n */\n }, {\n key: \"changeTabIndex\",\n value: function changeTabIndex($ele, newTabIndex) {\n if (!$ele) {\n // eslint-disable-next-line no-console\n console.log($ele, 'Invalid element provided.');\n return;\n }\n DomUtils.getElements($ele).forEach(function ($this) {\n // eslint-disable-next-line no-param-reassign\n $this.tabIndex = newTabIndex;\n });\n }\n /**\n * @param {HTMLElement} $ele\n * @param {string} event\n * @param {Function} callback\n */\n }, {\n key: \"removeEvent\",\n value: function removeEvent($ele, event, callback) {\n if (!$ele) {\n return;\n }\n var $eleArray = DomUtils.getElements($ele);\n $eleArray.forEach(function ($this) {\n $this.removeEventListener(event, callback);\n });\n }\n }]);\n return DomUtils;\n }();\n ; // CONCATENATED MODULE: ./src/virtual-select.js\n function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols);\n } return keys; }\n function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\n } return target; }\n function _defineProperty(obj, key, value) { key = virtual_select_toPropertyKey(key); if (key in obj) {\n Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });\n }\n else {\n obj[key] = value;\n } return obj; }\n function virtual_select_typeof(obj) {\n \"@babel/helpers - typeof\";\n return virtual_select_typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, virtual_select_typeof(obj);\n }\n function virtual_select_slicedToArray(arr, i) { return virtual_select_arrayWithHoles(arr) || virtual_select_iterableToArrayLimit(arr, i) || virtual_select_unsupportedIterableToArray(arr, i) || virtual_select_nonIterableRest(); }\n function virtual_select_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n function virtual_select_iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) {\n var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i)\n return;\n _n = !1;\n }\n else\n for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n }\n catch (err) {\n _d = !0, _e = err;\n }\n finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r))\n return;\n }\n finally {\n if (_d)\n throw _e;\n }\n }\n return _arr;\n } }\n function virtual_select_arrayWithHoles(arr) { if (Array.isArray(arr))\n return arr; }\n function virtual_select_toConsumableArray(arr) { return virtual_select_arrayWithoutHoles(arr) || virtual_select_iterableToArray(arr) || virtual_select_unsupportedIterableToArray(arr) || virtual_select_nonIterableSpread(); }\n function virtual_select_nonIterableSpread() { 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 function virtual_select_unsupportedIterableToArray(o, minLen) { if (!o)\n return; if (typeof o === \"string\")\n return virtual_select_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor)\n n = o.constructor.name; if (n === \"Map\" || n === \"Set\")\n return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return virtual_select_arrayLikeToArray(o, minLen); }\n function virtual_select_iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\n return Array.from(iter); }\n function virtual_select_arrayWithoutHoles(arr) { if (Array.isArray(arr))\n return virtual_select_arrayLikeToArray(arr); }\n function virtual_select_arrayLikeToArray(arr, len) { if (len == null || len > arr.length)\n len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n } return arr2; }\n function virtual_select_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n } }\n function virtual_select_defineProperties(target, props) { for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, virtual_select_toPropertyKey(descriptor.key), descriptor);\n } }\n function virtual_select_createClass(Constructor, protoProps, staticProps) { if (protoProps)\n virtual_select_defineProperties(Constructor.prototype, protoProps); if (staticProps)\n virtual_select_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n function virtual_select_toPropertyKey(arg) { var key = virtual_select_toPrimitive(arg, \"string\"); return virtual_select_typeof(key) === \"symbol\" ? key : String(key); }\n function virtual_select_toPrimitive(input, hint) { if (virtual_select_typeof(input) !== \"object\" || input === null)\n return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (virtual_select_typeof(res) !== \"object\")\n return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n } return (hint === \"string\" ? String : Number)(input); }\n /** cSpell:ignore nocheck, Labelledby, vscomp, tabindex, combobox, haspopup, listbox, activedescendant */\n /* eslint-disable class-methods-use-this */\n // @ts-nocheck\n var dropboxCloseButtonFullHeight = 48;\n var searchHeight = 40;\n var keyDownMethodMapping = {\n 13: 'onEnterPress',\n 38: 'onUpArrowPress',\n 40: 'onDownArrowPress',\n 46: 'onBackspaceOrDeletePress',\n // Delete\n 8: 'onBackspaceOrDeletePress' // Backspace\n };\n var valueLessProps = ['autofocus', 'disabled', 'multiple', 'required'];\n var nativeProps = ['autofocus', 'class', 'disabled', 'id', 'multiple', 'name', 'placeholder', 'required'];\n var attrPropsMapping;\n var dataProps = ['additionalClasses', 'aliasKey', 'allOptionsSelectedText', 'allowNewOption', 'alwaysShowSelectedOptionsCount', 'alwaysShowSelectedOptionsLabel', 'ariaLabelledby', 'ariaLabelText', 'ariaLabelClearButtonText', 'autoSelectFirstOption', 'clearButtonText', 'descriptionKey', 'disableAllOptionsSelectedText', 'disableOptionGroupCheckbox', 'disableSelectAll', 'disableValidation', 'dropboxWidth', 'dropboxWrapper', 'emptyValue', 'enableSecureText', 'focusSelectedOptionOnOpen', 'hasOptionDescription', 'hideClearButton', 'hideValueTooltipOnSelectAll', 'keepAlwaysOpen', 'labelKey', 'markSearchResults', 'maxValues', 'maxWidth', 'minValues', 'moreText', 'noOfDisplayValues', 'noOptionsText', 'noSearchResultsText', 'optionHeight', 'optionSelectedText', 'optionsCount', 'optionsSelectedText', 'popupDropboxBreakpoint', 'popupPosition', 'position', 'search', 'searchByStartsWith', 'searchDelay', 'searchFormLabel', 'searchGroup', 'searchNormalize', 'searchPlaceholderText', 'selectAllOnlyVisible', 'selectAllText', 'setValueAsArray', 'showDropboxAsPopup', 'showOptionsOnlyOnSearch', 'showSelectedOptionsFirst', 'showValueAsTags', 'silentInitialValueSet', 'textDirection', 'tooltipAlignment', 'tooltipFontSize', 'tooltipMaxWidth', 'updatePositionThrottle', 'useGroupValue', 'valueKey', 'zIndex'];\n /** Class representing VirtualSelect */\n var VirtualSelect = /*#__PURE__*/ function () {\n /**\n * @param {virtualSelectOptions} options\n */\n function VirtualSelect(options) {\n virtual_select_classCallCheck(this, VirtualSelect);\n try {\n this.createSecureTextElements();\n this.setProps(options);\n this.setDisabledOptions(options.disabledOptions);\n this.setOptions(options.options);\n this.render();\n }\n catch (e) {\n // eslint-disable-next-line no-console\n console.warn(\"Couldn't initiate Virtual Select\");\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n /** render methods - start */\n virtual_select_createClass(VirtualSelect, [{\n key: \"render\",\n value: function render() {\n if (!this.$ele) {\n return;\n }\n var uniqueId = this.uniqueId;\n var wrapperClasses = 'vscomp-wrapper';\n var valueTooltip = this.showValueAsTags ? '' : this.getTooltipAttrText(this.placeholder, true, true);\n var clearButtonTooltip = this.getTooltipAttrText(this.clearButtonText);\n var ariaLabelledbyText = this.ariaLabelledby ? \"aria-labelledby=\\\"\".concat(this.ariaLabelledby, \"\\\"\") : '';\n var ariaLabelText = this.ariaLabelText ? \"aria-label=\\\"\".concat(this.ariaLabelText, \"\\\"\") : '';\n var ariaLabelClearBtnTxt = this.ariaLabelClearButtonText ? \"aria-label=\\\"\".concat(this.ariaLabelClearButtonText, \"\\\"\") : '';\n var isExpanded = false;\n if (this.additionalClasses) {\n wrapperClasses += \" \".concat(this.additionalClasses);\n }\n if (this.multiple) {\n wrapperClasses += ' multiple';\n if (!this.disableSelectAll) {\n wrapperClasses += ' has-select-all';\n }\n }\n if (!this.hideClearButton) {\n wrapperClasses += ' has-clear-button';\n }\n if (this.keepAlwaysOpen) {\n wrapperClasses += ' keep-always-open';\n isExpanded = true;\n }\n else {\n wrapperClasses += ' closed';\n }\n if (this.showAsPopup) {\n wrapperClasses += ' show-as-popup';\n }\n if (this.hasSearch) {\n wrapperClasses += ' has-search-input';\n }\n if (this.showValueAsTags) {\n wrapperClasses += ' show-value-as-tags';\n }\n if (this.textDirection) {\n wrapperClasses += \" text-direction-\".concat(this.textDirection);\n }\n if (this.popupPosition) {\n wrapperClasses += \" popup-position-\".concat(this.popupPosition.toLowerCase());\n }\n // eslint-disable-next-line no-trailing-spaces\n var html = \"
\\n \\n
\\n
\\n \").concat(this.placeholder, \"\\n
\\n
\\n
\\n \\n
\\n
\\n\\n \").concat(this.renderDropbox({\n wrapperClasses: wrapperClasses\n }), \"\\n
\");\n this.$ele.innerHTML = html;\n this.$body = document.querySelector('body');\n this.$wrapper = this.$ele.querySelector('.vscomp-wrapper');\n if (this.hasDropboxWrapper) {\n this.$allWrappers = [this.$wrapper, this.$dropboxWrapper];\n this.$dropboxContainer = this.$dropboxWrapper.querySelector('.vscomp-dropbox-container');\n DomUtils.addClass(this.$dropboxContainer, 'pop-comp-wrapper');\n }\n else {\n this.$allWrappers = [this.$wrapper];\n this.$dropboxContainer = this.$wrapper.querySelector('.vscomp-dropbox-container');\n }\n this.$toggleButton = this.$ele.querySelector('.vscomp-toggle-button');\n this.$clearButton = this.$ele.querySelector('.vscomp-clear-button');\n this.$valueText = this.$ele.querySelector('.vscomp-value');\n this.$hiddenInput = this.$ele.querySelector('.vscomp-hidden-input');\n this.$dropbox = this.$dropboxContainer.querySelector('.vscomp-dropbox');\n this.$dropboxCloseButton = this.$dropboxContainer.querySelector('.vscomp-dropbox-close-button');\n this.$dropboxContainerBottom = this.$dropboxContainer.querySelector('.vscomp-dropbox-container-bottom');\n this.$dropboxContainerTop = this.$dropboxContainer.querySelector('.vscomp-dropbox-container-top');\n this.$search = this.$dropboxContainer.querySelector('.vscomp-search-wrapper');\n this.$optionsContainer = this.$dropboxContainer.querySelector('.vscomp-options-container');\n this.$optionsList = this.$dropboxContainer.querySelector('.vscomp-options-list');\n this.$options = this.$dropboxContainer.querySelector('.vscomp-options');\n this.$noOptions = this.$dropboxContainer.querySelector('.vscomp-no-options');\n this.$noSearchResults = this.$dropboxContainer.querySelector('.vscomp-no-search-results');\n this.afterRenderWrapper();\n }\n }, {\n key: \"renderDropbox\",\n value: function renderDropbox(_ref) {\n var wrapperClasses = _ref.wrapperClasses;\n var $wrapper = this.dropboxWrapper !== 'self' ? document.querySelector(this.dropboxWrapper) : null;\n // eslint-disable-next-line no-trailing-spaces\n var html = \"
\\n
 
\\n
\\n
\\n\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n\\n
\\n
\").concat(this.noOptionsText, \"
\\n
\").concat(this.noSearchResultsText, \"
\\n\\n \\n
\\n
 
\\n
\");\n if ($wrapper) {\n var $dropboxWrapper = document.createElement('div');\n this.$dropboxWrapper = $dropboxWrapper;\n this.hasDropboxWrapper = true;\n $dropboxWrapper.innerHTML = html;\n $wrapper.appendChild($dropboxWrapper);\n DomUtils.addClass($dropboxWrapper, \"vscomp-dropbox-wrapper \".concat(wrapperClasses));\n return '';\n }\n this.hasDropboxWrapper = false;\n return html;\n }\n }, {\n key: \"renderOptions\",\n value: function renderOptions() {\n var _this = this;\n var html = '';\n var visibleOptions = this.getVisibleOptions();\n var checkboxHtml = '';\n var newOptionIconHtml = '';\n var markSearchResults = !!(this.markSearchResults && this.searchValue);\n var searchRegex;\n var labelRenderer = this.labelRenderer, disableOptionGroupCheckbox = this.disableOptionGroupCheckbox, uniqueId = this.uniqueId, searchGroup = this.searchGroup;\n var hasLabelRenderer = typeof labelRenderer === 'function';\n var convertToBoolean = Utils.convertToBoolean;\n var groupName = '';\n if (markSearchResults) {\n searchRegex = new RegExp(\"(\".concat(Utils.regexEscape(this.searchValue), \")(?!([^<]+)?>)\"), 'gi');\n }\n if (this.multiple) {\n checkboxHtml = '';\n }\n if (this.allowNewOption) {\n var newOptionTooltip = this.getTooltipAttrText('New Option');\n newOptionIconHtml = \"\");\n }\n visibleOptions.forEach(function (d) {\n var index = d.index;\n var optionLabel;\n var optionClasses = 'vscomp-option';\n var optionTooltip = _this.getTooltipAttrText('', true, true);\n var leftSection = checkboxHtml;\n var rightSection = '';\n var description = '';\n var groupIndexText = '';\n var ariaLabel = '';\n var tabIndexValue = '-1';\n var isSelected = convertToBoolean(d.isSelected);\n var ariaDisabledText = '';\n if (d.classNames) {\n optionClasses += \" \".concat(d.classNames);\n }\n if (d.isFocused) {\n tabIndexValue = '0';\n optionClasses += ' focused';\n }\n if (d.isDisabled) {\n optionClasses += ' disabled';\n ariaDisabledText = 'aria-disabled=\"true\"';\n }\n if (d.isGroupTitle) {\n groupName = d.label;\n optionClasses += ' group-title';\n if (disableOptionGroupCheckbox) {\n leftSection = '';\n }\n }\n if (isSelected) {\n optionClasses += ' selected';\n }\n if (d.isGroupOption) {\n var optionDesc = '';\n optionClasses += ' group-option';\n groupIndexText = \"data-group-index=\\\"\".concat(d.groupIndex, \"\\\"\");\n if (d.customData) {\n groupName = d.customData.group_name !== undefined ? \"\".concat(d.customData.group_name, \", \") : '';\n optionDesc = d.customData.description !== undefined ? \" \".concat(d.customData.description, \",\") : '';\n ariaLabel = \"aria-label=\\\"\".concat(groupName, \" \").concat(d.label, \", \").concat(optionDesc, \"\\\"\");\n }\n else {\n ariaLabel = \"aria-label=\\\"\".concat(groupName, \", \").concat(d.label, \"\\\"\");\n }\n }\n if (hasLabelRenderer) {\n optionLabel = labelRenderer(d);\n }\n else {\n optionLabel = d.label;\n }\n if (d.description) {\n description = \"
\").concat(d.description, \"
\");\n }\n if (d.isCurrentNew) {\n optionClasses += ' current-new';\n rightSection += newOptionIconHtml;\n }\n else if (markSearchResults && (!d.isGroupTitle || searchGroup)) {\n optionLabel = optionLabel.replace(searchRegex, '$1');\n }\n html += \"
\\n \").concat(leftSection, \"\\n \\n \").concat(optionLabel, \"\\n \\n \").concat(description, \"\\n \").concat(rightSection, \"\\n
\");\n });\n groupName = '';\n this.$options.innerHTML = html;\n this.$visibleOptions = this.$options.querySelectorAll('.vscomp-option');\n this.afterRenderOptions();\n }\n }, {\n key: \"renderSearch\",\n value: function renderSearch() {\n if (!this.hasSearchContainer) {\n return;\n }\n var checkboxHtml = '';\n var searchInput = '';\n if (this.multiple && !this.disableSelectAll) {\n checkboxHtml = \"\\n \\n \".concat(this.selectAllText, \"\\n \");\n }\n if (this.hasSearch) {\n searchInput = \"\\n \\n ×\");\n }\n var html = \"
\\n \".concat(checkboxHtml, \"\\n \").concat(searchInput, \"\\n
\");\n this.$search.innerHTML = html;\n this.$searchInput = this.$dropboxContainer.querySelector('.vscomp-search-input');\n this.$searchClear = this.$dropboxContainer.querySelector('.vscomp-search-clear');\n this.$toggleAllButton = this.$dropboxContainer.querySelector('.vscomp-toggle-all-button');\n this.$toggleAllCheckbox = this.$dropboxContainer.querySelector('.vscomp-toggle-all-checkbox');\n this.addEvent(this.$searchInput, 'input', 'onSearch');\n this.addEvent(this.$searchClear, 'click', 'onSearchClear');\n this.addEvent(this.$toggleAllButton, 'click', 'onToggleAllOptions');\n this.addEvent(this.$dropboxContainerBottom, 'focus', 'onDropboxContainerTopOrBottomFocus');\n this.addEvent(this.$dropboxContainerTop, 'focus', 'onDropboxContainerTopOrBottomFocus');\n }\n /** render methods - end */\n /** dom event methods - start */\n }, {\n key: \"addEvents\",\n value: function addEvents() {\n this.addEvent(document, 'click', 'onDocumentClick');\n this.addEvent(this.$allWrappers, 'keydown', 'onKeyDown');\n this.addEvent(this.$toggleButton, 'click', 'onToggleButtonClick');\n this.addEvent(this.$clearButton, 'click keydown', 'onClearButtonClick');\n this.addEvent(this.$dropboxContainer, 'click', 'onDropboxContainerClick');\n this.addEvent(this.$dropboxCloseButton, 'click', 'onDropboxCloseButtonClick');\n this.addEvent(this.$optionsContainer, 'scroll', 'onOptionsScroll');\n this.addEvent(this.$options, 'click', 'onOptionsClick');\n this.addEvent(this.$options, 'mouseover', 'onOptionsMouseOver');\n this.addEvent(this.$options, 'touchmove', 'onOptionsTouchMove');\n this.addMutationObserver();\n }\n }, {\n key: \"addEvent\",\n value: function addEvent($ele, events, method) {\n var _this2 = this;\n if (!$ele) {\n return;\n }\n var eventsArray = Utils.removeArrayEmpty(events.split(' '));\n eventsArray.forEach(function (event) {\n var eventsKey = \"\".concat(method, \"-\").concat(event);\n var callback = _this2.events[eventsKey];\n if (!callback) {\n callback = _this2[method].bind(_this2);\n _this2.events[eventsKey] = callback;\n }\n DomUtils.addEvent($ele, event, callback);\n });\n }\n /** dom event methods - start */\n }, {\n key: \"removeEvents\",\n value: function removeEvents() {\n this.removeEvent(document, 'click', 'onDocumentClick');\n this.removeEvent(this.$allWrappers, 'keydown', 'onKeyDown');\n this.removeEvent(this.$toggleButton, 'click', 'onToggleButtonClick');\n this.removeEvent(this.$clearButton, 'click keydown', 'onClearButtonClick');\n this.removeEvent(this.$dropboxContainer, 'click', 'onDropboxContainerClick');\n this.removeEvent(this.$dropboxCloseButton, 'click', 'onDropboxCloseButtonClick');\n this.removeEvent(this.$optionsContainer, 'scroll', 'onOptionsScroll');\n this.removeEvent(this.$options, 'click', 'onOptionsClick');\n this.removeEvent(this.$options, 'mouseover', 'onOptionsMouseOver');\n this.removeEvent(this.$options, 'touchmove', 'onOptionsTouchMove');\n this.removeMutationObserver();\n }\n }, {\n key: \"removeEvent\",\n value: function removeEvent($ele, events, method) {\n var _this3 = this;\n if (!$ele) {\n return;\n }\n var eventsArray = Utils.removeArrayEmpty(events.split(' '));\n eventsArray.forEach(function (event) {\n var eventsKey = \"\".concat(method, \"-\").concat(event);\n var callback = _this3.events[eventsKey];\n if (callback) {\n DomUtils.removeEvent($ele, event, callback);\n }\n });\n }\n }, {\n key: \"onDocumentClick\",\n value: function onDocumentClick(e) {\n var $eleToKeepOpen = e.target.closest('.vscomp-wrapper');\n if ($eleToKeepOpen !== this.$wrapper && $eleToKeepOpen !== this.$dropboxWrapper && this.isOpened()) {\n this.closeDropbox();\n }\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(e) {\n var key = e.which || e.keyCode;\n var method = keyDownMethodMapping[key];\n if (document.activeElement === this.$searchInput && e.shiftKey && key === 9) {\n e.preventDefault();\n this.$dropboxContainerTop.focus();\n return;\n }\n if (document.activeElement === this.$searchInput && key === 9) {\n e.preventDefault();\n this.focusFirstVisibleOption();\n return;\n }\n // Handle the Escape key when showing the dropdown as a popup, closing it\n if (document.activeElement === this.$wrapper && (key === 27 || e.key === 'Escape') && this.showAsPopup) {\n this.closeDropbox();\n return;\n }\n if (method) {\n this[method](e);\n }\n }\n }, {\n key: \"onEnterPress\",\n value: function onEnterPress(e) {\n e.preventDefault();\n if (this.isOpened()) {\n this.selectFocusedOption();\n }\n else if (this.$ele.disabled === false) {\n this.openDropbox();\n }\n }\n }, {\n key: \"onDownArrowPress\",\n value: function onDownArrowPress(e) {\n e.preventDefault();\n if (this.isOpened()) {\n this.focusOption({\n direction: 'next'\n });\n }\n else {\n this.openDropbox();\n }\n }\n }, {\n key: \"onUpArrowPress\",\n value: function onUpArrowPress(e) {\n e.preventDefault();\n if (this.isOpened()) {\n this.focusOption({\n direction: 'previous'\n });\n }\n else {\n this.openDropbox();\n }\n }\n }, {\n key: \"onBackspaceOrDeletePress\",\n value: function onBackspaceOrDeletePress(e) {\n if (e.target === this.$wrapper) {\n e.preventDefault();\n if (this.selectedValues.length > 0) {\n this.reset();\n }\n }\n }\n }, {\n key: \"onToggleButtonClick\",\n value: function onToggleButtonClick(e) {\n var $target = e.target;\n if ($target.closest('.vscomp-value-tag-clear-button')) {\n this.removeValue($target.closest('.vscomp-value-tag'));\n }\n else if (!$target.closest('.toggle-button-child')) {\n this.toggleDropbox();\n }\n }\n }, {\n key: \"onClearButtonClick\",\n value: function onClearButtonClick(e) {\n if (e.type === 'click') {\n this.reset();\n }\n else if (e.type === 'keydown' && (e.code === 'Enter' || e.code === 'Space')) {\n e.stopPropagation();\n this.reset();\n }\n }\n }, {\n key: \"onOptionsScroll\",\n value: function onOptionsScroll() {\n this.setVisibleOptions();\n }\n }, {\n key: \"onOptionsClick\",\n value: function onOptionsClick(e) {\n var $option = e.target.closest('.vscomp-option');\n if ($option && !DomUtils.hasClass($option, 'disabled')) {\n if (DomUtils.hasClass($option, 'group-title')) {\n this.onGroupTitleClick($option);\n }\n else {\n this.selectOption($option, {\n event: e\n });\n }\n }\n }\n }, {\n key: \"onGroupTitleClick\",\n value: function onGroupTitleClick($ele) {\n if (!$ele || !this.multiple || this.disableOptionGroupCheckbox) {\n return;\n }\n var isAdding = !DomUtils.hasClass($ele, 'selected');\n this.toggleGroupTitleCheckbox($ele, isAdding);\n this.toggleGroupOptions($ele, isAdding);\n }\n }, {\n key: \"onDropboxContainerClick\",\n value: function onDropboxContainerClick(e) {\n if (!e.target.closest('.vscomp-dropbox')) {\n this.closeDropbox();\n }\n }\n }, {\n key: \"onDropboxCloseButtonClick\",\n value: function onDropboxCloseButtonClick() {\n this.closeDropbox();\n }\n }, {\n key: \"onOptionsMouseOver\",\n value: function onOptionsMouseOver(e) {\n var $ele = e.target.closest('.vscomp-option');\n if ($ele && this.isOpened()) {\n if (DomUtils.hasClass($ele, 'disabled') || DomUtils.hasClass($ele, 'group-title')) {\n this.removeOptionFocus();\n }\n else {\n this.focusOption({\n $option: $ele\n });\n }\n }\n }\n }, {\n key: \"onOptionsTouchMove\",\n value: function onOptionsTouchMove() {\n this.removeOptionFocus();\n }\n }, {\n key: \"onSearch\",\n value: function onSearch(e) {\n e.stopPropagation();\n this.setSearchValue(e.target.value, true);\n }\n }, {\n key: \"onSearchClear\",\n value: function onSearchClear() {\n this.setSearchValue('');\n this.focusSearchInput();\n }\n }, {\n key: \"onToggleAllOptions\",\n value: function onToggleAllOptions() {\n this.toggleAllOptions();\n }\n }, {\n key: \"onDropboxContainerTopOrBottomFocus\",\n value: function onDropboxContainerTopOrBottomFocus() {\n this.closeDropbox();\n }\n }, {\n key: \"onResize\",\n value: function onResize() {\n this.setOptionsContainerHeight(true);\n }\n /** to remove dropboxWrapper on removing vscomp-ele when it is rendered outside of vscomp-ele */\n }, {\n key: \"addMutationObserver\",\n value: function addMutationObserver() {\n var _this4 = this;\n if (!this.hasDropboxWrapper) {\n return;\n }\n var $vscompEle = this.$ele;\n this.mutationObserver = new MutationObserver(function (mutations) {\n var isAdded = false;\n var isRemoved = false;\n mutations.forEach(function (mutation) {\n if (!isAdded) {\n isAdded = virtual_select_toConsumableArray(mutation.addedNodes).some(function ($ele) {\n return !!($ele === $vscompEle || $ele.contains($vscompEle));\n });\n }\n if (!isRemoved) {\n isRemoved = virtual_select_toConsumableArray(mutation.removedNodes).some(function ($ele) {\n return !!($ele === $vscompEle || $ele.contains($vscompEle));\n });\n }\n });\n if (isRemoved && !isAdded) {\n _this4.destroy();\n }\n });\n this.mutationObserver.observe(document.querySelector('body'), {\n childList: true,\n subtree: true\n });\n }\n }, {\n key: \"removeMutationObserver\",\n value: function removeMutationObserver() {\n this.mutationObserver.disconnect();\n }\n /** dom event methods - end */\n /** before event methods - start */\n }, {\n key: \"beforeValueSet\",\n value: function beforeValueSet(isReset) {\n this.toggleAllOptionsClass(isReset ? false : undefined);\n }\n }, {\n key: \"beforeSelectNewValue\",\n value: function beforeSelectNewValue() {\n var _this5 = this;\n var newOption = this.getNewOption();\n var newIndex = newOption.index;\n this.newValues.push(newOption.value);\n this.setOptionProp(newIndex, 'isCurrentNew', false);\n this.setOptionProp(newIndex, 'isNew', true);\n /** using setTimeout to fix the issue of dropbox getting closed on select */\n setTimeout(function () {\n _this5.setSearchValue('');\n _this5.focusSearchInput();\n }, 0);\n }\n /** before event methods - end */\n /** after event methods - start */\n }, {\n key: \"afterRenderWrapper\",\n value: function afterRenderWrapper() {\n DomUtils.addClass(this.$ele, 'vscomp-ele');\n this.renderSearch();\n this.setEleStyles();\n this.setDropboxStyles();\n this.setOptionsHeight();\n this.setVisibleOptions();\n this.setOptionsContainerHeight();\n this.addEvents();\n this.setEleProps();\n if (!this.keepAlwaysOpen && !this.showAsPopup) {\n this.initDropboxPopover();\n }\n if (this.initialSelectedValue) {\n this.setValueMethod(this.initialSelectedValue, this.silentInitialValueSet);\n }\n else if (this.autoSelectFirstOption && this.visibleOptions.length) {\n this.setValueMethod(this.visibleOptions[0].value, this.silentInitialValueSet);\n }\n if (this.showOptionsOnlyOnSearch) {\n this.setSearchValue('', false, true);\n }\n if (this.initialDisabled) {\n this.disable();\n }\n if (this.autofocus) {\n this.focus();\n }\n }\n }, {\n key: \"afterRenderOptions\",\n value: function afterRenderOptions() {\n var visibleOptions = this.getVisibleOptions();\n var hasNoOptions = !this.options.length && !this.hasServerSearch;\n var hasNoSearchResults = !hasNoOptions && !visibleOptions.length;\n if (!this.allowNewOption || this.hasServerSearch || this.showOptionsOnlyOnSearch) {\n DomUtils.toggleClass(this.$allWrappers, 'has-no-search-results', hasNoSearchResults);\n if (hasNoSearchResults) {\n DomUtils.setAttr(this.$noSearchResults, 'tabindex', '0');\n DomUtils.setAttr(this.$noSearchResults, 'aria-hidden', 'false');\n }\n else {\n DomUtils.setAttr(this.$noSearchResults, 'tabindex', '-1');\n DomUtils.setAttr(this.$noSearchResults, 'aria-hidden', 'true');\n }\n }\n DomUtils.toggleClass(this.$allWrappers, 'has-no-options', hasNoOptions);\n if (hasNoOptions) {\n DomUtils.setAttr(this.$noOptions, 'tabindex', '0');\n DomUtils.setAttr(this.$noOptions, 'aria-hidden', 'false');\n }\n else {\n DomUtils.setAttr(this.$noOptions, 'tabindex', '-1');\n DomUtils.setAttr(this.$noOptions, 'aria-hidden', 'true');\n }\n this.setOptionAttr();\n this.setOptionsPosition();\n this.setOptionsTooltip();\n if (document.activeElement !== this.$searchInput) {\n var focusedOption = DomUtils.getElementsBySelector('.focused', this.$dropboxContainer)[0];\n if (focusedOption !== undefined) {\n focusedOption.focus();\n }\n }\n }\n }, {\n key: \"afterSetOptionsContainerHeight\",\n value: function afterSetOptionsContainerHeight(reset) {\n if (reset && this.showAsPopup) {\n this.setVisibleOptions();\n }\n }\n }, {\n key: \"afterSetSearchValue\",\n value: function afterSetSearchValue() {\n var _this6 = this;\n if (this.hasServerSearch) {\n clearInterval(this.serverSearchTimeout);\n this.serverSearchTimeout = setTimeout(function () {\n _this6.serverSearch();\n }, this.searchDelay);\n }\n else {\n this.setVisibleOptionsCount();\n }\n if (this.selectAllOnlyVisible) {\n this.toggleAllOptionsClass();\n }\n this.focusOption({\n focusFirst: true\n });\n }\n }, {\n key: \"afterSetVisibleOptionsCount\",\n value: function afterSetVisibleOptionsCount() {\n this.scrollToTop();\n this.setOptionsHeight();\n this.setVisibleOptions();\n this.updatePosition();\n }\n }, {\n key: \"afterValueSet\",\n value: function afterValueSet() {\n this.scrollToTop();\n this.setSearchValue('');\n this.renderOptions();\n }\n }, {\n key: \"afterSetOptions\",\n value: function afterSetOptions(keepValue) {\n if (keepValue) {\n this.setSelectedProp();\n }\n this.setOptionsHeight();\n this.setVisibleOptions();\n if (this.showOptionsOnlyOnSearch) {\n this.setSearchValue('', false, true);\n }\n if (!keepValue) {\n this.reset();\n }\n }\n /** after event methods - end */\n /** set methods - start */\n /**\n * @param {virtualSelectOptions} params\n */\n }, {\n key: \"setProps\",\n value: function setProps(params) {\n var options = this.setDefaultProps(params);\n this.setPropsFromElementAttr(options);\n var convertToBoolean = Utils.convertToBoolean;\n this.$ele = options.ele;\n this.dropboxWrapper = options.dropboxWrapper;\n this.valueKey = options.valueKey;\n this.labelKey = options.labelKey;\n this.descriptionKey = options.descriptionKey;\n this.aliasKey = options.aliasKey;\n this.optionHeightText = options.optionHeight;\n this.optionHeight = parseFloat(this.optionHeightText);\n this.multiple = convertToBoolean(options.multiple);\n this.hasSearch = convertToBoolean(options.search);\n this.searchByStartsWith = convertToBoolean(options.searchByStartsWith);\n this.searchGroup = convertToBoolean(options.searchGroup);\n this.hideClearButton = convertToBoolean(options.hideClearButton);\n this.autoSelectFirstOption = convertToBoolean(options.autoSelectFirstOption);\n this.hasOptionDescription = convertToBoolean(options.hasOptionDescription);\n this.silentInitialValueSet = convertToBoolean(options.silentInitialValueSet);\n this.allowNewOption = convertToBoolean(options.allowNewOption);\n this.markSearchResults = convertToBoolean(options.markSearchResults);\n this.showSelectedOptionsFirst = convertToBoolean(options.showSelectedOptionsFirst);\n this.disableSelectAll = convertToBoolean(options.disableSelectAll);\n this.keepAlwaysOpen = convertToBoolean(options.keepAlwaysOpen);\n this.showDropboxAsPopup = convertToBoolean(options.showDropboxAsPopup);\n this.hideValueTooltipOnSelectAll = convertToBoolean(options.hideValueTooltipOnSelectAll);\n this.showOptionsOnlyOnSearch = convertToBoolean(options.showOptionsOnlyOnSearch);\n this.selectAllOnlyVisible = convertToBoolean(options.selectAllOnlyVisible);\n this.alwaysShowSelectedOptionsCount = convertToBoolean(options.alwaysShowSelectedOptionsCount);\n this.alwaysShowSelectedOptionsLabel = convertToBoolean(options.alwaysShowSelectedOptionsLabel);\n this.disableAllOptionsSelectedText = convertToBoolean(options.disableAllOptionsSelectedText);\n this.showValueAsTags = convertToBoolean(options.showValueAsTags);\n this.disableOptionGroupCheckbox = convertToBoolean(options.disableOptionGroupCheckbox);\n this.enableSecureText = convertToBoolean(options.enableSecureText);\n this.setValueAsArray = convertToBoolean(options.setValueAsArray);\n this.disableValidation = convertToBoolean(options.disableValidation);\n this.initialDisabled = convertToBoolean(options.disabled);\n this.required = convertToBoolean(options.required);\n this.autofocus = convertToBoolean(options.autofocus);\n this.useGroupValue = convertToBoolean(options.useGroupValue);\n this.focusSelectedOptionOnOpen = convertToBoolean(options.focusSelectedOptionOnOpen);\n this.noOptionsText = options.noOptionsText;\n this.noSearchResultsText = options.noSearchResultsText;\n this.selectAllText = options.selectAllText;\n this.searchNormalize = options.searchNormalize;\n this.searchPlaceholderText = options.searchPlaceholderText;\n this.searchFormLabel = options.searchFormLabel;\n this.optionsSelectedText = options.optionsSelectedText;\n this.optionSelectedText = options.optionSelectedText;\n this.allOptionsSelectedText = options.allOptionsSelectedText;\n this.clearButtonText = options.clearButtonText;\n this.moreText = options.moreText;\n this.placeholder = options.placeholder;\n this.position = options.position;\n this.textDirection = options.textDirection;\n this.dropboxWidth = options.dropboxWidth;\n this.tooltipFontSize = options.tooltipFontSize;\n this.tooltipAlignment = options.tooltipAlignment;\n this.tooltipMaxWidth = options.tooltipMaxWidth;\n this.updatePositionThrottle = options.updatePositionThrottle;\n this.noOfDisplayValues = parseInt(options.noOfDisplayValues);\n this.zIndex = parseInt(options.zIndex);\n this.maxValues = parseInt(options.maxValues);\n this.minValues = parseInt(options.minValues);\n this.name = this.secureText(options.name);\n this.additionalClasses = options.additionalClasses;\n this.popupDropboxBreakpoint = options.popupDropboxBreakpoint;\n this.popupPosition = options.popupPosition;\n this.onServerSearch = options.onServerSearch;\n this.labelRenderer = options.labelRenderer;\n this.initialSelectedValue = options.selectedValue === 0 ? '0' : options.selectedValue;\n this.emptyValue = options.emptyValue;\n this.ariaLabelledby = options.ariaLabelledby;\n this.ariaLabelText = options.ariaLabelText;\n this.ariaLabelClearButtonText = options.ariaLabelClearButtonText;\n this.maxWidth = options.maxWidth;\n this.searchDelay = options.searchDelay;\n /** @type {string[]} */\n this.selectedValues = [];\n /** @type {virtualSelectOption[]} */\n this.selectedOptions = [];\n this.newValues = [];\n this.events = {};\n this.tooltipEnterDelay = 200;\n this.searchValue = '';\n this.searchValueOriginal = '';\n this.isAllSelected = false;\n if (options.search === undefined && this.multiple || this.allowNewOption || this.showOptionsOnlyOnSearch) {\n this.hasSearch = true;\n }\n this.hasServerSearch = typeof this.onServerSearch === 'function';\n if (this.maxValues || this.hasServerSearch || this.showOptionsOnlyOnSearch) {\n this.disableSelectAll = true;\n this.disableOptionGroupCheckbox = true;\n }\n if (this.keepAlwaysOpen) {\n this.dropboxWrapper = 'self';\n }\n this.showAsPopup = this.showDropboxAsPopup && !this.keepAlwaysOpen && window.innerWidth <= parseFloat(this.popupDropboxBreakpoint);\n this.hasSearchContainer = this.hasSearch || this.multiple && !this.disableSelectAll;\n this.optionsCount = this.getOptionsCount(options.optionsCount);\n this.halfOptionsCount = Math.ceil(this.optionsCount / 2);\n this.optionsHeight = this.getOptionsHeight();\n this.uniqueId = this.getUniqueId();\n }\n /**\n * @param {virtualSelectOptions} options\n */\n }, {\n key: \"setDefaultProps\",\n value: function setDefaultProps(options) {\n var defaultOptions = {\n dropboxWrapper: 'self',\n valueKey: 'value',\n labelKey: 'label',\n descriptionKey: 'description',\n aliasKey: 'alias',\n ariaLabelText: 'Options list',\n ariaLabelClearButtonText: 'Clear button',\n optionsCount: 5,\n noOfDisplayValues: 50,\n optionHeight: '40px',\n noOptionsText: 'No options found',\n noSearchResultsText: 'No results found',\n selectAllText: 'Select All',\n searchNormalize: false,\n searchPlaceholderText: 'Search...',\n searchFormLabel: 'Search',\n clearButtonText: 'Clear',\n moreText: 'more...',\n optionsSelectedText: 'options selected',\n optionSelectedText: 'option selected',\n allOptionsSelectedText: 'All',\n placeholder: 'Select',\n position: 'bottom left',\n zIndex: options.keepAlwaysOpen ? 1 : 2,\n tooltipFontSize: '14px',\n tooltipAlignment: 'center',\n tooltipMaxWidth: '300px',\n updatePositionThrottle: 100,\n name: '',\n additionalClasses: '',\n maxValues: 0,\n showDropboxAsPopup: true,\n popupDropboxBreakpoint: '576px',\n popupPosition: 'center',\n hideValueTooltipOnSelectAll: true,\n emptyValue: '',\n searchDelay: 300,\n focusSelectedOptionOnOpen: true\n };\n if (options.hasOptionDescription) {\n defaultOptions.optionsCount = 4;\n defaultOptions.optionHeight = '50px';\n }\n return Object.assign(defaultOptions, options);\n }\n }, {\n key: \"setPropsFromElementAttr\",\n value: function setPropsFromElementAttr(options) {\n var $ele = options.ele;\n Object.keys(attrPropsMapping).forEach(function (k) {\n var value = $ele.getAttribute(k);\n if (valueLessProps.indexOf(k) !== -1 && (value === '' || value === 'true')) {\n value = true;\n }\n if (value) {\n // eslint-disable-next-line no-param-reassign\n options[attrPropsMapping[k]] = value;\n }\n });\n }\n }, {\n key: \"setEleProps\",\n value: function setEleProps() {\n var $ele = this.$ele;\n $ele.virtualSelect = this;\n $ele.value = this.multiple ? [] : '';\n $ele.name = this.name;\n $ele.disabled = false;\n $ele.required = this.required;\n $ele.autofocus = this.autofocus;\n $ele.multiple = this.multiple;\n $ele.form = $ele.closest('form');\n $ele.reset = VirtualSelect.reset;\n $ele.setValue = VirtualSelect.setValueMethod;\n $ele.setOptions = VirtualSelect.setOptionsMethod;\n $ele.setDisabledOptions = VirtualSelect.setDisabledOptionsMethod;\n $ele.setEnabledOptions = VirtualSelect.setEnabledOptionsMethod;\n $ele.toggleSelectAll = VirtualSelect.toggleSelectAll;\n $ele.isAllSelected = VirtualSelect.isAllSelected;\n $ele.addOption = VirtualSelect.addOptionMethod;\n $ele.getNewValue = VirtualSelect.getNewValueMethod;\n $ele.getDisplayValue = VirtualSelect.getDisplayValueMethod;\n $ele.getSelectedOptions = VirtualSelect.getSelectedOptionsMethod;\n $ele.getDisabledOptions = VirtualSelect.getDisabledOptionsMethod;\n $ele.open = VirtualSelect.openMethod;\n $ele.close = VirtualSelect.closeMethod;\n $ele.focus = VirtualSelect.focusMethod;\n $ele.enable = VirtualSelect.enableMethod;\n $ele.disable = VirtualSelect.disableMethod;\n $ele.destroy = VirtualSelect.destroyMethod;\n $ele.validate = VirtualSelect.validateMethod;\n $ele.toggleRequired = VirtualSelect.toggleRequiredMethod;\n if (this.hasDropboxWrapper) {\n this.$dropboxWrapper.virtualSelect = this;\n }\n }\n }, {\n key: \"setValueMethod\",\n value: function setValueMethod(newValue, silentChange) {\n var valuesMapping = {};\n var valuesOrder = {};\n var validValues = [];\n var isMultiSelect = this.multiple;\n var value = newValue;\n if (value) {\n if (!Array.isArray(value)) {\n value = [value];\n }\n if (isMultiSelect) {\n var maxValues = this.maxValues;\n if (maxValues && value.length > maxValues) {\n value.splice(maxValues);\n }\n }\n else if (value.length > 1) {\n value = [value[0]];\n }\n /** converting value to string */\n value = value.map(function (v) {\n return v || v === 0 ? v.toString() : '';\n });\n if (this.useGroupValue) {\n value = this.setGroupOptionsValue(value);\n }\n value.forEach(function (d, i) {\n valuesMapping[d] = true;\n valuesOrder[d] = i;\n });\n if (this.allowNewOption && value) {\n this.setNewOptionsFromValue(value);\n }\n }\n this.options.forEach(function (d) {\n if (valuesMapping[d.value] === true && !d.isDisabled && !d.isGroupTitle) {\n // eslint-disable-next-line no-param-reassign\n d.isSelected = true;\n validValues.push(d.value);\n }\n else {\n // eslint-disable-next-line no-param-reassign\n d.isSelected = false;\n }\n });\n if (isMultiSelect) {\n if (this.hasOptionGroup) {\n this.setGroupsSelectedProp();\n }\n /** sorting validValues in the given values order */\n validValues.sort(function (a, b) {\n return valuesOrder[a] - valuesOrder[b];\n });\n }\n else {\n /** taking first value for single select */\n var _validValues = validValues;\n var _validValues2 = virtual_select_slicedToArray(_validValues, 1);\n validValues = _validValues2[0];\n }\n this.beforeValueSet();\n this.setValue(validValues, {\n disableEvent: silentChange\n });\n this.afterValueSet();\n }\n }, {\n key: \"setGroupOptionsValue\",\n value: function setGroupOptionsValue(preparedValues) {\n var selectedValues = [];\n var selectedGroups = {};\n var valuesMapping = {};\n preparedValues.forEach(function (d) {\n valuesMapping[d] = true;\n });\n this.options.forEach(function (d) {\n var value = d.value;\n var isSelected = valuesMapping[value] === true;\n if (d.isGroupTitle) {\n if (isSelected) {\n selectedGroups[d.index] = true;\n }\n }\n else if (isSelected || selectedGroups[d.groupIndex]) {\n selectedValues.push(value);\n }\n });\n return selectedValues;\n }\n }, {\n key: \"setGroupsSelectedProp\",\n value: function setGroupsSelectedProp() {\n var isAllGroupOptionsSelected = this.isAllGroupOptionsSelected.bind(this);\n this.options.forEach(function (d) {\n if (d.isGroupTitle) {\n // eslint-disable-next-line no-param-reassign\n d.isSelected = isAllGroupOptionsSelected(d.index);\n }\n });\n }\n }, {\n key: \"setOptionsMethod\",\n value: function setOptionsMethod(options, keepValue) {\n this.setOptions(options);\n this.afterSetOptions(keepValue);\n }\n }, {\n key: \"setDisabledOptionsMethod\",\n value: function setDisabledOptionsMethod(disabledOptions) {\n var keepValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.setDisabledOptions(disabledOptions, true);\n if (!keepValue) {\n this.setValueMethod(null);\n this.toggleAllOptionsClass();\n }\n this.setVisibleOptions();\n }\n }, {\n key: \"setDisabledOptions\",\n value: function setDisabledOptions(disabledOptions) {\n var setOptionsProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var disabledOptionsArr = [];\n if (!disabledOptions) {\n if (setOptionsProp) {\n this.options.forEach(function (d) {\n // eslint-disable-next-line no-param-reassign\n d.isDisabled = false;\n return d;\n });\n }\n }\n else if (disabledOptions === true) {\n if (setOptionsProp) {\n this.options.forEach(function (d) {\n // eslint-disable-next-line no-param-reassign\n d.isDisabled = true;\n disabledOptionsArr.push(d.value);\n return d;\n });\n }\n }\n else {\n disabledOptionsArr = disabledOptions.map(function (d) {\n return d.toString();\n });\n var disabledOptionsMapping = {};\n disabledOptionsArr.forEach(function (d) {\n disabledOptionsMapping[d] = true;\n });\n if (setOptionsProp) {\n this.options.forEach(function (d) {\n // eslint-disable-next-line no-param-reassign\n d.isDisabled = disabledOptionsMapping[d.value] === true;\n return d;\n });\n }\n }\n this.disabledOptions = disabledOptionsArr;\n }\n }, {\n key: \"setEnabledOptionsMethod\",\n value: function setEnabledOptionsMethod(disabledOptions) {\n var keepValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.setEnabledOptions(disabledOptions);\n if (!keepValue) {\n this.setValueMethod(null);\n this.toggleAllOptionsClass();\n }\n this.setVisibleOptions();\n }\n }, {\n key: \"setEnabledOptions\",\n value: function setEnabledOptions(enabledOptions) {\n if (enabledOptions === undefined) {\n return;\n }\n var disabledOptionsArr = [];\n if (enabledOptions === true) {\n this.options.forEach(function (d) {\n // eslint-disable-next-line no-param-reassign\n d.isDisabled = false;\n return d;\n });\n }\n else {\n var enabledOptionsMapping = {};\n enabledOptions.forEach(function (d) {\n enabledOptionsMapping[d] = true;\n });\n this.options.forEach(function (d) {\n var isDisabled = enabledOptionsMapping[d.value] !== true;\n // eslint-disable-next-line no-param-reassign\n d.isDisabled = isDisabled;\n if (isDisabled) {\n disabledOptionsArr.push(d.value);\n }\n return d;\n });\n }\n this.disabledOptions = disabledOptionsArr;\n }\n }, {\n key: \"setOptions\",\n value: function setOptions() {\n var _this7 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var preparedOptions = [];\n var hasDisabledOptions = this.disabledOptions.length;\n var valueKey = this.valueKey, labelKey = this.labelKey, descriptionKey = this.descriptionKey, aliasKey = this.aliasKey, hasOptionDescription = this.hasOptionDescription;\n var getString = Utils.getString, convertToBoolean = Utils.convertToBoolean;\n var secureText = this.secureText.bind(this);\n var getAlias = this.getAlias.bind(this);\n var index = 0;\n var hasOptionGroup = false;\n var disabledOptionsMapping = {};\n var hasEmptyValueOption = false;\n this.disabledOptions.forEach(function (d) {\n disabledOptionsMapping[d] = true;\n });\n var prepareOption = function prepareOption(d) {\n if (virtual_select_typeof(d) !== 'object') {\n var _d2;\n // eslint-disable-next-line no-param-reassign\n d = (_d2 = {}, _defineProperty(_d2, valueKey, d), _defineProperty(_d2, labelKey, d), _d2);\n }\n var value = secureText(getString(d[valueKey]));\n var label = secureText(getString(d[labelKey]));\n var childOptions = d.options;\n var isGroupTitle = !!childOptions;\n var option = {\n index: index,\n value: value,\n label: label,\n labelNormalized: _this7.searchNormalize ? Utils.normalizeString(label).toLowerCase() : label.toLowerCase(),\n alias: getAlias(d[aliasKey]),\n isVisible: convertToBoolean(d.isVisible, true),\n isNew: d.isNew || false,\n isGroupTitle: isGroupTitle,\n classNames: d.classNames\n };\n if (!hasEmptyValueOption && value === '') {\n hasEmptyValueOption = true;\n }\n if (hasDisabledOptions) {\n option.isDisabled = disabledOptionsMapping[value] === true;\n }\n if (d.isGroupOption) {\n option.isGroupOption = true;\n option.groupIndex = d.groupIndex;\n }\n if (hasOptionDescription) {\n option.description = secureText(getString(d[descriptionKey]));\n }\n if (d.customData) {\n option.customData = d.customData;\n }\n preparedOptions.push(option);\n index += 1;\n if (isGroupTitle) {\n var groupIndex = option.index;\n hasOptionGroup = true;\n childOptions.forEach(function (childData) {\n // eslint-disable-next-line no-param-reassign\n childData.isGroupOption = true;\n // eslint-disable-next-line no-param-reassign\n childData.groupIndex = groupIndex;\n prepareOption(childData);\n });\n }\n };\n if (Array.isArray(options)) {\n options.forEach(prepareOption);\n }\n var optionsLength = preparedOptions.length;\n var $ele = this.$ele;\n $ele.options = preparedOptions;\n $ele.length = optionsLength;\n this.options = preparedOptions;\n this.visibleOptionsCount = optionsLength;\n this.lastOptionIndex = optionsLength - 1;\n this.newValues = [];\n this.hasOptionGroup = hasOptionGroup;\n this.hasEmptyValueOption = hasEmptyValueOption;\n this.setSortedOptions();\n }\n }, {\n key: \"setServerOptions\",\n value: function setServerOptions() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n this.setOptionsMethod(options, true);\n var selectedOptions = this.selectedOptions;\n var newOptions = this.options;\n var optionsUpdated = false;\n /** merging already selected options details with new options */\n if (selectedOptions.length) {\n var newOptionsValueMapping = {};\n optionsUpdated = true;\n newOptions.forEach(function (d) {\n newOptionsValueMapping[d.value] = true;\n });\n selectedOptions.forEach(function (d) {\n if (newOptionsValueMapping[d.value] !== true) {\n // eslint-disable-next-line no-param-reassign\n d.isVisible = false;\n newOptions.push(d);\n }\n });\n this.setOptionsMethod(newOptions, true);\n }\n /** merging new search option */\n if (this.allowNewOption && this.searchValue) {\n var hasExactOption = newOptions.some(function (d) {\n return d.label.toLowerCase() === _this8.searchValue;\n });\n if (!hasExactOption) {\n optionsUpdated = true;\n this.setNewOption();\n }\n }\n if (optionsUpdated) {\n this.setVisibleOptionsCount();\n if (this.multiple) {\n this.toggleAllOptionsClass();\n }\n this.setValueText();\n }\n else {\n this.updatePosition();\n }\n this.setVisibleOptionsCount();\n DomUtils.removeClass(this.$allWrappers, 'server-searching');\n }\n }, {\n key: \"setSelectedOptions\",\n value: function setSelectedOptions() {\n this.selectedOptions = this.options.filter(function (d) {\n return d.isSelected;\n });\n }\n }, {\n key: \"setSortedOptions\",\n value: function setSortedOptions() {\n var sortedOptions = virtual_select_toConsumableArray(this.options);\n if (this.showSelectedOptionsFirst && this.selectedValues.length) {\n if (this.hasOptionGroup) {\n sortedOptions = this.sortOptionsGroup(sortedOptions);\n }\n else {\n sortedOptions = this.sortOptions(sortedOptions);\n }\n }\n this.sortedOptions = sortedOptions;\n }\n }, {\n key: \"setVisibleOptions\",\n value: function setVisibleOptions() {\n var visibleOptions = virtual_select_toConsumableArray(this.sortedOptions);\n var maxOptionsToShow = this.optionsCount * 2;\n var startIndex = this.getVisibleStartIndex();\n var newOption = this.getNewOption();\n var endIndex = startIndex + maxOptionsToShow - 1;\n var i = 0;\n if (newOption) {\n newOption.visibleIndex = i;\n i += 1;\n }\n visibleOptions = visibleOptions.filter(function (d) {\n var inView = false;\n if (d.isVisible && !d.isCurrentNew) {\n inView = i >= startIndex && i <= endIndex;\n // eslint-disable-next-line no-param-reassign\n d.visibleIndex = i;\n i += 1;\n }\n return inView;\n });\n if (newOption) {\n visibleOptions = [newOption].concat(virtual_select_toConsumableArray(visibleOptions));\n }\n this.visibleOptions = visibleOptions;\n // update number of visible options\n this.visibleOptionsCount = visibleOptions.length;\n this.renderOptions();\n }\n }, {\n key: \"setOptionsPosition\",\n value: function setOptionsPosition(startIndex) {\n // We use the parseInt to fix a Chrome issue when dealing with decimal pixels in translate3d\n var top = parseInt((startIndex || this.getVisibleStartIndex()) * this.optionHeight);\n this.$options.style.transform = \"translate3d(0, \".concat(top, \"px, 0)\");\n DomUtils.setData(this.$options, 'top', top);\n }\n }, {\n key: \"setOptionsTooltip\",\n value: function setOptionsTooltip() {\n var _this9 = this;\n var visibleOptions = this.getVisibleOptions();\n var hasOptionDescription = this.hasOptionDescription;\n visibleOptions.forEach(function (d) {\n var $optionEle = _this9.$dropboxContainer.querySelector(\".vscomp-option[data-index=\\\"\".concat(d.index, \"\\\"]\"));\n DomUtils.setData($optionEle.querySelector('.vscomp-option-text'), 'tooltip', d.label);\n if (hasOptionDescription) {\n DomUtils.setData($optionEle.querySelector('.vscomp-option-description'), 'tooltip', d.description);\n }\n });\n }\n }, {\n key: \"setValue\",\n value: function setValue(value) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref2$disableEvent = _ref2.disableEvent, disableEvent = _ref2$disableEvent === void 0 ? false : _ref2$disableEvent, _ref2$disableValidati = _ref2.disableValidation, disableValidation = _ref2$disableValidati === void 0 ? false : _ref2$disableValidati;\n var isValidValue = this.hasEmptyValueOption && value === '' || value;\n if (!isValidValue) {\n this.selectedValues = [];\n }\n else if (Array.isArray(value)) {\n this.selectedValues = virtual_select_toConsumableArray(value);\n }\n else {\n this.selectedValues = [value];\n }\n var newValue = this.getValue();\n this.$ele.value = newValue;\n this.$hiddenInput.value = this.getInputValue(newValue);\n this.isMaxValuesSelected = !!(this.maxValues && this.maxValues <= this.selectedValues.length);\n this.toggleAllOptionsClass();\n this.setValueText();\n DomUtils.toggleClass(this.$allWrappers, 'has-value', Utils.isNotEmpty(this.selectedValues));\n DomUtils.toggleClass(this.$allWrappers, 'max-value-selected', this.isMaxValuesSelected);\n if (!disableValidation) {\n this.validate();\n }\n if (!disableEvent) {\n DomUtils.dispatchEvent(this.$ele, 'change', true);\n }\n }\n }, {\n key: \"setValueText\",\n value: function setValueText() {\n var _this10 = this;\n var multiple = this.multiple, selectedValues = this.selectedValues, noOfDisplayValues = this.noOfDisplayValues, showValueAsTags = this.showValueAsTags, $valueText = this.$valueText;\n var valueText = [];\n var valueTooltip = [];\n var selectedLength = selectedValues.length;\n var selectedValuesCount = 0;\n var showAllText = this.isAllSelected && !this.hasServerSearch && !this.disableAllOptionsSelectedText && !showValueAsTags;\n /** show all values selected text without tooltip text */\n if (showAllText && this.hideValueTooltipOnSelectAll) {\n $valueText.innerHTML = \"\".concat(this.allOptionsSelectedText, \" (\").concat(selectedLength, \")\");\n }\n else {\n var selectedOptions = this.getSelectedOptions({\n fullDetails: true,\n keepSelectionOrder: true\n });\n selectedOptions.some(function (d) {\n if (d.isCurrentNew) {\n return false;\n }\n if (selectedValuesCount >= noOfDisplayValues) {\n return true;\n }\n var label = d.label;\n valueText.push(label);\n selectedValuesCount += 1;\n if (showValueAsTags) {\n // Will cause text overflow in runtime and if so,the tooltip information is prepared\n var valueTooltipForTags = Utils.willTextOverflow($valueText.parentElement, label) ? _this10.getTooltipAttrText(label, false, true) : '';\n var valueTagHtml = \"\\n \").concat(label, \"\\n \\n \\n \\n \");\n valueTooltip.push(valueTagHtml);\n }\n else {\n valueTooltip.push(label);\n }\n return false;\n });\n var moreSelectedOptions = selectedLength - noOfDisplayValues;\n if (moreSelectedOptions > 0) {\n valueTooltip.push(\"+ \".concat(moreSelectedOptions, \" \").concat(this.moreText, \"\"));\n }\n var aggregatedValueText = valueText.join(', ');\n if (aggregatedValueText === '') {\n $valueText.innerHTML = this.placeholder;\n }\n else {\n $valueText.innerHTML = aggregatedValueText;\n if (multiple) {\n var maxValues = this.maxValues;\n var showSelectedCount = this.alwaysShowSelectedOptionsCount || DomUtils.hasEllipsis($valueText);\n if (showSelectedCount || maxValues || showValueAsTags) {\n var countText = \"\".concat(selectedLength, \"\");\n if (maxValues) {\n countText += \" / \".concat(maxValues, \"\");\n }\n /** show all values selected text with tooltip text */\n if (showAllText) {\n $valueText.innerHTML = \"\".concat(this.allOptionsSelectedText, \" (\").concat(selectedLength, \")\");\n }\n else if (showValueAsTags) {\n $valueText.innerHTML = valueTooltip.join('');\n this.$valueTags = $valueText.querySelectorAll('.vscomp-value-tag');\n this.setValueTagAttr();\n }\n else if (!this.alwaysShowSelectedOptionsLabel) {\n /** replace comma separated list of selections with shorter text indicating selection count */\n var optionsSelectedText = selectedLength === 1 ? this.optionSelectedText : this.optionsSelectedText;\n $valueText.innerHTML = \"\".concat(countText, \" \").concat(optionsSelectedText);\n }\n }\n else {\n /** removing tooltip if full value text is visible */\n valueTooltip = [];\n }\n }\n }\n }\n var tooltipText = '';\n if (selectedLength === 0) {\n tooltipText = this.placeholder;\n }\n else if (!showValueAsTags) {\n tooltipText = valueTooltip.join(', ');\n }\n if (!showValueAsTags) {\n DomUtils.setData($valueText, 'tooltip', tooltipText);\n }\n if (multiple) {\n if (!showValueAsTags) {\n DomUtils.setData($valueText, 'tooltipEllipsisOnly', selectedLength === 0);\n }\n else {\n this.updatePosition();\n }\n }\n }\n }, {\n key: \"setSearchValue\",\n value: function setSearchValue(value) {\n var skipInputSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var forceSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (value === this.searchValueOriginal && !forceSet) {\n return;\n }\n if (!skipInputSet) {\n this.$searchInput.value = value;\n }\n var searchValue = value.replace(/\\\\/g, '').toLowerCase().trim();\n this.searchValue = searchValue;\n this.searchValueOriginal = value;\n DomUtils.toggleClass(this.$allWrappers, 'has-search-value', value);\n this.afterSetSearchValue();\n }\n }, {\n key: \"setVisibleOptionsCount\",\n value: function setVisibleOptionsCount() {\n var visibleOptionsCount = 0;\n var hasExactOption = false;\n var visibleOptionGroupsMapping;\n var searchGroup = this.searchGroup, showOptionsOnlyOnSearch = this.showOptionsOnlyOnSearch, searchByStartsWith = this.searchByStartsWith;\n /** If searchNormalize we'll normalize the searchValue */\n var searchValue = this.searchValue;\n searchValue = this.searchNormalize ? Utils.normalizeString(searchValue) : searchValue;\n var isOptionVisible = this.isOptionVisible.bind(this);\n if (this.hasOptionGroup) {\n visibleOptionGroupsMapping = this.getVisibleOptionGroupsMapping(searchValue);\n }\n this.options.forEach(function (d) {\n if (d.isCurrentNew) {\n return;\n }\n var result;\n if (showOptionsOnlyOnSearch && !searchValue) {\n // eslint-disable-next-line no-param-reassign\n d.isVisible = false;\n result = {\n isVisible: false,\n hasExactOption: false\n };\n }\n else {\n result = isOptionVisible({\n data: d,\n searchValue: searchValue,\n hasExactOption: hasExactOption,\n visibleOptionGroupsMapping: visibleOptionGroupsMapping,\n searchGroup: searchGroup,\n searchByStartsWith: searchByStartsWith\n });\n }\n if (result.isVisible) {\n visibleOptionsCount += 1;\n }\n if (!hasExactOption) {\n hasExactOption = result.hasExactOption;\n }\n });\n if (this.allowNewOption) {\n if (searchValue && !hasExactOption) {\n this.setNewOption();\n visibleOptionsCount += 1;\n }\n else {\n this.removeNewOption();\n }\n }\n this.visibleOptionsCount = visibleOptionsCount;\n this.afterSetVisibleOptionsCount();\n }\n }, {\n key: \"setOptionProp\",\n value: function setOptionProp(index, key, value) {\n if (!this.options[index]) {\n return;\n }\n this.options[index][key] = value;\n }\n }, {\n key: \"setOptionsHeight\",\n value: function setOptionsHeight() {\n this.$optionsList.style.height = \"\".concat(this.optionHeight * this.visibleOptionsCount, \"px\");\n }\n }, {\n key: \"setOptionsContainerHeight\",\n value: function setOptionsContainerHeight(reset) {\n var optionsHeight;\n if (reset) {\n if (this.showAsPopup) {\n this.optionsCount = this.getOptionsCount();\n this.halfOptionsCount = Math.ceil(this.optionsCount / 2);\n optionsHeight = this.getOptionsHeight();\n this.optionsHeight = optionsHeight;\n }\n }\n else {\n optionsHeight = this.optionsHeight;\n if (this.keepAlwaysOpen) {\n DomUtils.setStyle(this.$noOptions, 'height', optionsHeight);\n DomUtils.setStyle(this.$noSearchResults, 'height', optionsHeight);\n }\n }\n DomUtils.setStyle(this.$optionsContainer, 'max-height', optionsHeight);\n this.afterSetOptionsContainerHeight(reset);\n }\n }, {\n key: \"setNewOption\",\n value: function setNewOption(newValue) {\n var value = newValue || this.searchValueOriginal.trim();\n if (!value) {\n return;\n }\n var newOption = this.getNewOption();\n if (newOption) {\n var newIndex = newOption.index;\n this.setOptionProp(newIndex, 'value', this.secureText(value));\n this.setOptionProp(newIndex, 'label', this.secureText(value));\n }\n else {\n var data = {\n value: value,\n label: value\n };\n if (newValue) {\n data.isNew = true;\n this.newValues.push(value);\n }\n else {\n data.isCurrentNew = true;\n }\n this.addOption(data);\n }\n }\n }, {\n key: \"setSelectedProp\",\n value: function setSelectedProp() {\n var valuesMapping = {};\n this.selectedValues.forEach(function (d) {\n valuesMapping[d] = true;\n });\n this.options.forEach(function (d) {\n if (valuesMapping[d.value] === true) {\n // eslint-disable-next-line no-param-reassign\n d.isSelected = true;\n }\n });\n }\n }, {\n key: \"setNewOptionsFromValue\",\n value: function setNewOptionsFromValue(values) {\n if (!values) {\n return;\n }\n var setNewOption = this.setNewOption.bind(this);\n var availableValuesMapping = {};\n this.options.forEach(function (d) {\n availableValuesMapping[d.value] = true;\n });\n values.forEach(function (d) {\n if (d && availableValuesMapping[d] !== true) {\n setNewOption(d);\n }\n });\n }\n }, {\n key: \"setDropboxWrapperWidth\",\n value: function setDropboxWrapperWidth() {\n if (this.showAsPopup) {\n return;\n }\n var width = this.dropboxWidth || \"\".concat(this.$wrapper.offsetWidth, \"px\");\n DomUtils.setStyle(this.$dropboxContainer, 'max-width', width);\n }\n }, {\n key: \"setEleStyles\",\n value: function setEleStyles() {\n var maxWidth = this.maxWidth;\n var styles = {};\n if (maxWidth) {\n styles['max-width'] = maxWidth;\n }\n DomUtils.setStyles(this.$ele, styles);\n }\n }, {\n key: \"setDropboxStyles\",\n value: function setDropboxStyles() {\n var dropboxWidth = this.dropboxWidth;\n var styles = {};\n var containerStyles = {\n 'z-index': this.zIndex\n };\n if (dropboxWidth) {\n if (this.showAsPopup) {\n styles['max-width'] = dropboxWidth;\n }\n else {\n containerStyles.width = dropboxWidth;\n }\n }\n DomUtils.setStyles(this.$dropboxContainer, containerStyles);\n DomUtils.setStyles(this.$dropbox, styles);\n }\n }, {\n key: \"setOptionAttr\",\n value: function setOptionAttr() {\n var $visibleOptions = this.$visibleOptions;\n var options = this.options;\n var optionHeight = \"\".concat(this.optionHeight, \"px\");\n var setStyle = DomUtils.setStyle, getData = DomUtils.getData, setData = DomUtils.setData;\n if ($visibleOptions && $visibleOptions.length) {\n $visibleOptions.forEach(function ($option) {\n var optionDetails = options[getData($option, 'index')];\n setStyle($option, 'height', optionHeight);\n setData($option, 'value', optionDetails.value);\n });\n }\n }\n }, {\n key: \"setValueTagAttr\",\n value: function setValueTagAttr() {\n var $valueTags = this.$valueTags;\n if (!$valueTags || !$valueTags.length) {\n return;\n }\n var getData = DomUtils.getData, setData = DomUtils.setData;\n var options = this.options;\n $valueTags.forEach(function ($valueTag) {\n var index = getData($valueTag, 'index');\n if (typeof index !== 'undefined') {\n var optionDetails = options[index];\n setData($valueTag, 'value', optionDetails.value);\n }\n });\n }\n }, {\n key: \"setScrollTop\",\n value: function setScrollTop() {\n var selectedValues = this.selectedValues;\n if (this.showSelectedOptionsFirst || !this.focusSelectedOptionOnOpen || selectedValues.length === 0) {\n return;\n }\n var valuesMapping = {};\n var selectedOptionIndex;\n selectedValues.forEach(function (d) {\n valuesMapping[d] = true;\n });\n this.options.some(function (d) {\n if (valuesMapping[d.value]) {\n selectedOptionIndex = d.visibleIndex;\n return true;\n }\n return false;\n });\n if (selectedOptionIndex) {\n this.$optionsContainer.scrollTop = this.optionHeight * selectedOptionIndex;\n }\n }\n /** set methods - end */\n /** get methods - start */\n }, {\n key: \"getVisibleOptions\",\n value: function getVisibleOptions() {\n return this.visibleOptions || [];\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n var value;\n if (this.multiple) {\n if (this.useGroupValue) {\n value = this.getGroupValue();\n }\n else {\n value = this.selectedValues;\n }\n }\n else {\n value = this.selectedValues[0] || '';\n }\n return value;\n }\n }, {\n key: \"getGroupValue\",\n value: function getGroupValue() {\n var selectedValues = [];\n var selectedGroups = {};\n this.options.forEach(function (d) {\n if (!d.isSelected) {\n return;\n }\n var value = d.value;\n if (d.isGroupTitle) {\n if (value) {\n selectedGroups[d.index] = true;\n selectedValues.push(value);\n }\n }\n else if (selectedGroups[d.groupIndex] !== true) {\n selectedValues.push(value);\n }\n });\n return selectedValues;\n }\n }, {\n key: \"getInputValue\",\n value: function getInputValue(preparedValue) {\n var value = preparedValue;\n if (value && value.length) {\n if (this.setValueAsArray && this.multiple) {\n value = JSON.stringify(value);\n }\n }\n else {\n value = this.emptyValue;\n }\n return value;\n }\n }, {\n key: \"getFirstVisibleOptionIndex\",\n value: function getFirstVisibleOptionIndex() {\n return Math.ceil(this.$optionsContainer.scrollTop / this.optionHeight);\n }\n }, {\n key: \"getVisibleStartIndex\",\n value: function getVisibleStartIndex() {\n var firstVisibleOptionIndex = this.getFirstVisibleOptionIndex();\n var startIndex = firstVisibleOptionIndex - this.halfOptionsCount;\n if (startIndex < 0) {\n startIndex = 0;\n }\n return startIndex;\n }\n }, {\n key: \"getTooltipAttrText\",\n value: function getTooltipAttrText(text) {\n var ellipsisOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var allowHtml = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var tootltipText = Utils.containsHTML(text) ? Utils.replaceDoubleQuotesWithHTML(text) : text;\n var data = {\n 'data-tooltip': tootltipText || '',\n 'data-tooltip-enter-delay': this.tooltipEnterDelay,\n 'data-tooltip-z-index': this.zIndex,\n 'data-tooltip-font-size': this.tooltipFontSize,\n 'data-tooltip-alignment': this.tooltipAlignment,\n 'data-tooltip-max-width': this.tooltipMaxWidth,\n 'data-tooltip-ellipsis-only': ellipsisOnly,\n 'data-tooltip-allow-html': allowHtml\n };\n return DomUtils.getAttributesText(data);\n }\n /**\n * @param {any} data\n * @returns {any}\n */\n }, {\n key: \"getOptionObj\",\n value: function getOptionObj(data) {\n if (!data) {\n return undefined;\n }\n var getString = Utils.getString;\n var secureText = this.secureText.bind(this);\n return {\n index: data.index,\n value: secureText(getString(data.value)),\n label: secureText(getString(data.label)),\n description: secureText(getString(data.description)),\n alias: this.getAlias(data.alias),\n isCurrentNew: data.isCurrentNew || false,\n isNew: data.isNew || false,\n isVisible: true\n };\n }\n }, {\n key: \"getNewOption\",\n value: function getNewOption() {\n var lastOption = this.options[this.lastOptionIndex];\n if (!lastOption || !lastOption.isCurrentNew) {\n return undefined;\n }\n return lastOption;\n }\n }, {\n key: \"getOptionIndex\",\n value: function getOptionIndex(value) {\n var index;\n this.options.some(function (d) {\n if (d.value === value) {\n index = d.index;\n return true;\n }\n return false;\n });\n return index;\n }\n }, {\n key: \"getNewValue\",\n value: function getNewValue() {\n var valuesMapping = {};\n this.newValues.forEach(function (d) {\n valuesMapping[d] = true;\n });\n var result = this.selectedValues.filter(function (d) {\n return valuesMapping[d] === true;\n });\n return this.multiple ? result : result[0];\n }\n }, {\n key: \"getAlias\",\n value: function getAlias(alias) {\n var result = alias;\n if (result) {\n if (Array.isArray(result)) {\n result = result.join(',');\n }\n else {\n result = result.toString().trim();\n }\n result = result.toLowerCase();\n }\n return result || '';\n }\n }, {\n key: \"getDisplayValue\",\n value: function getDisplayValue() {\n var displayValues = [];\n this.options.forEach(function (d) {\n if (d.isSelected) {\n displayValues.push(d.label);\n }\n });\n return this.multiple ? displayValues : displayValues[0] || '';\n }\n }, {\n key: \"getSelectedOptions\",\n value: function getSelectedOptions() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref3$fullDetails = _ref3.fullDetails, fullDetails = _ref3$fullDetails === void 0 ? false : _ref3$fullDetails, _ref3$keepSelectionOr = _ref3.keepSelectionOrder, keepSelectionOrder = _ref3$keepSelectionOr === void 0 ? false : _ref3$keepSelectionOr;\n var valueKey = this.valueKey, labelKey = this.labelKey, selectedValues = this.selectedValues;\n var selectedOptions = [];\n this.options.forEach(function (d) {\n if (d.isSelected && !d.isGroupTitle) {\n if (fullDetails) {\n selectedOptions.push(d);\n }\n else {\n var _data;\n var data = (_data = {}, _defineProperty(_data, valueKey, d.value), _defineProperty(_data, labelKey, d.label), _data);\n if (d.isNew) {\n data.isNew = true;\n }\n if (d.customData) {\n data.customData = d.customData;\n }\n selectedOptions.push(data);\n }\n }\n });\n if (keepSelectionOrder) {\n var valuesOrder = {};\n selectedValues.forEach(function (d, i) {\n valuesOrder[d] = i;\n });\n selectedOptions.sort(function (a, b) {\n return valuesOrder[a.value] - valuesOrder[b.value];\n });\n }\n return this.multiple || fullDetails ? selectedOptions : selectedOptions[0];\n }\n }, {\n key: \"getDisabledOptions\",\n value: function getDisabledOptions() {\n var valueKey = this.valueKey, labelKey = this.labelKey, disabledOptions = this.disabledOptions;\n var disabledOptionsValueMapping = {};\n var result = [];\n disabledOptions.forEach(function (value) {\n disabledOptionsValueMapping[value] = true;\n });\n this.options.forEach(function (_ref4) {\n var value = _ref4.value, label = _ref4.label;\n if (disabledOptionsValueMapping[value]) {\n var _result$push;\n result.push((_result$push = {}, _defineProperty(_result$push, valueKey, value), _defineProperty(_result$push, labelKey, label), _result$push));\n }\n });\n return result;\n }\n }, {\n key: \"getVisibleOptionGroupsMapping\",\n value: function getVisibleOptionGroupsMapping(searchValue) {\n var options = this.options;\n var result = {};\n var isOptionVisible = this.isOptionVisible.bind(this);\n options = this.structureOptionGroup(options);\n options.forEach(function (d) {\n result[d.index] = d.options.some(function (e) {\n return isOptionVisible({\n data: e,\n searchValue: searchValue\n }).isVisible;\n });\n });\n return result;\n }\n }, {\n key: \"getOptionsCount\",\n value: function getOptionsCount(count) {\n var result;\n if (this.showAsPopup) {\n var availableHeight = window.innerHeight * 80 / 100 - dropboxCloseButtonFullHeight;\n if (this.hasSearchContainer) {\n availableHeight -= searchHeight;\n }\n result = Math.floor(availableHeight / this.optionHeight);\n }\n else {\n result = parseInt(count);\n }\n return result;\n }\n }, {\n key: \"getOptionsHeight\",\n value: function getOptionsHeight() {\n return \"\".concat(this.optionsCount * this.optionHeight, \"px\");\n }\n /** getting next/prev valid option element */\n }, {\n key: \"getSibling\",\n value: function getSibling($ele, direction) {\n var propName = direction === 'next' ? 'nextElementSibling' : 'previousElementSibling';\n var $sibling = $ele;\n do {\n if ($sibling) {\n $sibling = $sibling[propName];\n }\n } while (DomUtils.hasClass($sibling, 'disabled') || DomUtils.hasClass($sibling, 'group-title'));\n return $sibling;\n }\n }, {\n key: \"getUniqueId\",\n value: function getUniqueId() {\n var uniqueId = Utils.getRandomInt(10000);\n var isAlreadyUsed = document.querySelector(\"#vscomp-ele-wrapper-\".concat(uniqueId));\n if (isAlreadyUsed) {\n return this.getUniqueId();\n }\n return uniqueId;\n }\n /** get methods - end */\n }, {\n key: \"initDropboxPopover\",\n value: function initDropboxPopover() {\n var data = {\n ele: this.$ele,\n target: this.$dropboxContainer,\n position: this.position,\n zIndex: this.zIndex,\n margin: 4,\n transitionDistance: 30,\n hideArrowIcon: true,\n disableManualAction: true,\n disableUpdatePosition: !this.hasDropboxWrapper,\n updatePositionThrottle: this.updatePositionThrottle,\n afterShow: this.afterShowPopper.bind(this),\n afterHide: this.afterHidePopper.bind(this)\n };\n this.dropboxPopover = new PopoverComponent(data);\n }\n }, {\n key: \"openDropbox\",\n value: function openDropbox(isSilent) {\n this.isSilentOpen = isSilent;\n if (isSilent) {\n DomUtils.setStyle(this.$dropboxContainer, 'display', 'inline-flex');\n }\n else {\n DomUtils.dispatchEvent(this.$ele, 'beforeOpen');\n DomUtils.setAria(this.$wrapper, 'expanded', true);\n }\n this.setDropboxWrapperWidth();\n DomUtils.removeClass(this.$allWrappers, 'closed');\n DomUtils.changeTabIndex(this.$allWrappers, 0);\n if (this.dropboxPopover && !isSilent) {\n this.dropboxPopover.show();\n }\n else {\n this.afterShowPopper();\n }\n }\n }, {\n key: \"afterShowPopper\",\n value: function afterShowPopper() {\n var isSilent = this.isSilentOpen;\n this.isSilentOpen = false;\n if (!isSilent) {\n this.moveSelectedOptionsFirst();\n this.setScrollTop();\n DomUtils.addClass(this.$allWrappers, 'focused');\n if (this.showAsPopup) {\n DomUtils.addClass(this.$body, 'vscomp-popup-active');\n this.isPopupActive = true;\n }\n else {\n this.focusElementOnOpen();\n }\n DomUtils.dispatchEvent(this.$ele, 'afterOpen');\n }\n }\n }, {\n key: \"closeDropbox\",\n value: function closeDropbox(isSilent) {\n this.isSilentClose = isSilent;\n if (this.keepAlwaysOpen) {\n this.removeOptionFocus();\n return;\n }\n if (isSilent) {\n DomUtils.setStyle(this.$dropboxContainer, 'display', '');\n }\n else {\n DomUtils.dispatchEvent(this.$ele, 'beforeClose');\n DomUtils.setAria(this.$wrapper, 'expanded', false);\n DomUtils.setAria(this.$wrapper, 'activedescendant', '');\n }\n if (this.dropboxPopover && !isSilent) {\n this.dropboxPopover.hide();\n }\n else {\n this.afterHidePopper();\n }\n }\n }, {\n key: \"afterHidePopper\",\n value: function afterHidePopper() {\n var isSilent = this.isSilentClose;\n this.isSilentClose = false;\n DomUtils.removeClass(this.$allWrappers, 'focused');\n this.removeOptionFocus();\n if (!isSilent && this.isPopupActive) {\n DomUtils.removeClass(this.$body, 'vscomp-popup-active');\n this.isPopupActive = false;\n }\n DomUtils.addClass(this.$allWrappers, 'closed');\n if (!isSilent) {\n DomUtils.dispatchEvent(this.$ele, 'afterClose');\n // Only focus there are no pre-selected options or when selecting new options\n if (this.initialSelectedValue && this.initialSelectedValue.length === 0 || this.selectedValues.length > 0) {\n this.focus();\n }\n }\n }\n }, {\n key: \"moveSelectedOptionsFirst\",\n value: function moveSelectedOptionsFirst() {\n if (!this.showSelectedOptionsFirst) {\n return;\n }\n this.setSortedOptions();\n if (!this.$optionsContainer.scrollTop || !this.selectedValues.length) {\n this.setVisibleOptions();\n }\n else {\n this.scrollToTop();\n }\n }\n }, {\n key: \"toggleDropbox\",\n value: function toggleDropbox() {\n if (this.isOpened()) {\n this.closeDropbox();\n }\n else {\n this.openDropbox();\n }\n }\n }, {\n key: \"updatePosition\",\n value: function updatePosition() {\n if (!this.dropboxPopover || !this.isOpened()) {\n return;\n }\n this.$ele.updatePosition();\n }\n }, {\n key: \"isOpened\",\n value: function isOpened() {\n return !DomUtils.hasClass(this.$wrapper, 'closed');\n }\n }, {\n key: \"focusSearchInput\",\n value: function focusSearchInput() {\n var $ele = this.$searchInput;\n if ($ele) {\n $ele.focus();\n }\n }\n }, {\n key: \"focusElementOnOpen\",\n value: function focusElementOnOpen() {\n var $ele = this.$searchInput;\n var hasNoOptions = !this.options.length && !this.hasServerSearch;\n if ($ele) {\n if (hasNoOptions && !this.allowNewOption) {\n DomUtils.setAttr($ele, 'disabled', '');\n this.$noOptions.focus();\n }\n else {\n $ele.removeAttribute('disabled');\n $ele.focus();\n }\n }\n else {\n var $focusableEle = this.$dropbox.querySelector('[tabindex=\"0\"]');\n var optIndex = DomUtils.getData($focusableEle, 'index');\n if (optIndex !== undefined) {\n this.focusOption({\n direction: 'next'\n });\n }\n else if ($focusableEle) {\n $focusableEle.focus();\n }\n else {\n this.focusFirstVisibleOption();\n }\n }\n }\n }, {\n key: \"focusFirstVisibleOption\",\n value: function focusFirstVisibleOption() {\n var $focusableEle = this.$optionsContainer.querySelector(\"[data-index='\".concat(this.getFirstVisibleOptionIndex(), \"']\"));\n if ($focusableEle) {\n if (DomUtils.hasClass($focusableEle, 'group-title')) {\n $focusableEle = this.getSibling($focusableEle, 'next');\n }\n DomUtils.setAttr($focusableEle, 'tabindex', '0');\n this.$optionsContainer.scrollTop = this.optionHeight * this.getFirstVisibleOptionIndex();\n this.focusOption({\n focusFirst: true\n });\n $focusableEle.focus();\n }\n else {\n $focusableEle = this.$dropbox.querySelector('[tabindex=\"0\"]');\n if ($focusableEle) {\n $focusableEle.focus();\n }\n }\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, direction = _ref5.direction, $option = _ref5.$option, focusFirst = _ref5.focusFirst;\n var $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused');\n var $newFocusedEle;\n if ($option) {\n $newFocusedEle = $option;\n }\n else if (!$focusedEle || focusFirst) {\n /* if no element on focus choose first visible one */\n var firstVisibleOptionIndex = this.getFirstVisibleOptionIndex();\n $newFocusedEle = this.$dropboxContainer.querySelector(\".vscomp-option[data-visible-index=\\\"\".concat(firstVisibleOptionIndex, \"\\\"]\"));\n if (DomUtils.hasClass($newFocusedEle, 'disabled') || DomUtils.hasClass($newFocusedEle, 'group-title')) {\n $newFocusedEle = this.getSibling($newFocusedEle, 'next');\n }\n }\n else {\n $newFocusedEle = this.getSibling($focusedEle, direction);\n }\n if ($newFocusedEle && $newFocusedEle !== $focusedEle) {\n if ($focusedEle) {\n this.toggleOptionFocusedState($focusedEle, false);\n }\n this.toggleOptionFocusedState($newFocusedEle, true);\n this.toggleFocusedProp(DomUtils.getData($newFocusedEle, 'index'), true);\n this.moveFocusedOptionToView($newFocusedEle);\n }\n }\n }, {\n key: \"moveFocusedOptionToView\",\n value: function moveFocusedOptionToView($ele) {\n var $focusedEle = $ele || this.$dropboxContainer.querySelector('.vscomp-option.focused');\n if (!$focusedEle) {\n return;\n }\n var newScrollTop;\n var containerRect = this.$optionsContainer.getBoundingClientRect();\n var optionRect = $focusedEle.getBoundingClientRect();\n var containerTop = containerRect.top;\n var containerBottom = containerRect.bottom;\n var containerHeight = containerRect.height;\n var optionTop = optionRect.top;\n var optionBottom = optionRect.bottom;\n var optionHeight = optionRect.height;\n var optionOffsetTop = $focusedEle.offsetTop;\n var optionsTop = DomUtils.getData(this.$options, 'top', 'number');\n /* if option hidden on top */\n if (containerTop > optionTop) {\n newScrollTop = optionOffsetTop + optionsTop;\n }\n else if (containerBottom < optionBottom) {\n /* if option hidden on bottom */\n newScrollTop = optionOffsetTop - containerHeight + optionHeight + optionsTop;\n }\n if (newScrollTop !== undefined) {\n this.$optionsContainer.scrollTop = newScrollTop;\n }\n }\n }, {\n key: \"removeOptionFocus\",\n value: function removeOptionFocus() {\n var $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused');\n if (!$focusedEle) {\n return;\n }\n this.toggleOptionFocusedState($focusedEle, false);\n this.toggleFocusedProp(null);\n }\n }, {\n key: \"selectOption\",\n value: function selectOption($ele) {\n var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, event = _ref6.event;\n if (!$ele) {\n return;\n }\n var isAdding = !DomUtils.hasClass($ele, 'selected');\n if (isAdding) {\n if (this.multiple && this.isMaxValuesSelected) {\n return;\n }\n }\n else if (!this.multiple) {\n /** on selecting same value in single select */\n this.closeDropbox();\n return;\n }\n var selectedValues = this.selectedValues;\n var selectedValue = DomUtils.getData($ele, 'value');\n var selectedIndex = DomUtils.getData($ele, 'index', 'number');\n var isNewOption = DomUtils.hasClass($ele, 'current-new');\n var shouldSelectRange = false;\n var lastSelectedOptionIndex = this.lastSelectedOptionIndex;\n this.lastSelectedOptionIndex = null;\n this.toggleSelectedProp(selectedIndex, isAdding);\n if (isAdding) {\n if (this.multiple) {\n selectedValues.push(selectedValue);\n this.toggleAllOptionsClass();\n this.toggleGroupOptionsParent($ele);\n if (event && event.shiftKey) {\n shouldSelectRange = true;\n }\n }\n else {\n if (selectedValues.length) {\n this.toggleSelectedProp(this.getOptionIndex(selectedValues[0]), false);\n }\n selectedValues = [selectedValue];\n var $prevSelectedOption = this.$dropboxContainer.querySelector('.vscomp-option.selected');\n if ($prevSelectedOption) {\n this.toggleOptionSelectedState($prevSelectedOption, false);\n }\n this.closeDropbox();\n if (!isNewOption) {\n this.setSearchValue('');\n }\n }\n this.lastSelectedOptionIndex = selectedIndex;\n this.toggleOptionSelectedState($ele);\n }\n else if (this.multiple) {\n this.toggleOptionSelectedState($ele);\n Utils.removeItemFromArray(selectedValues, selectedValue);\n this.toggleAllOptionsClass(false);\n this.toggleGroupOptionsParent($ele, false);\n }\n if (isNewOption) {\n this.beforeSelectNewValue();\n }\n this.setValue(selectedValues);\n if (shouldSelectRange) {\n this.selectRangeOptions(lastSelectedOptionIndex, selectedIndex);\n }\n }\n }, {\n key: \"selectFocusedOption\",\n value: function selectFocusedOption() {\n this.selectOption(this.$dropboxContainer.querySelector('.vscomp-option.focused'));\n }\n }, {\n key: \"selectRangeOptions\",\n value: function selectRangeOptions(lastSelectedOptionIndex, selectedIndex) {\n var _this11 = this;\n if (typeof lastSelectedOptionIndex !== 'number' || this.maxValues) {\n return;\n }\n var selectedValues = this.selectedValues, hasOptionGroup = this.hasOptionGroup;\n var groupIndexes = {};\n var startIndex;\n var endIndex;\n if (lastSelectedOptionIndex < selectedIndex) {\n startIndex = lastSelectedOptionIndex;\n endIndex = selectedIndex;\n }\n else {\n startIndex = selectedIndex;\n endIndex = lastSelectedOptionIndex;\n }\n this.options.forEach(function (d) {\n if (d.isDisabled || d.isGroupTitle || !d.isVisible || d.isSelected) {\n return;\n }\n var index = d.index;\n if (index > startIndex && index < endIndex) {\n if (hasOptionGroup) {\n var groupIndex = d.groupIndex;\n if (typeof groupIndex === 'number') {\n groupIndexes[groupIndex] = true;\n }\n }\n // eslint-disable-next-line no-param-reassign\n d.isSelected = true;\n selectedValues.push(d.value);\n }\n });\n this.toggleAllOptionsClass();\n this.setValue(selectedValues);\n groupIndexes = Object.keys(groupIndexes);\n if (groupIndexes.length) {\n var toggleGroupTitleProp = this.toggleGroupTitleProp.bind(this);\n groupIndexes.forEach(function (i) {\n toggleGroupTitleProp(parseInt(i));\n });\n }\n /** using setTimeout to fix the issue of dropbox getting closed on select */\n setTimeout(function () {\n _this11.renderOptions();\n }, 0);\n }\n }, {\n key: \"toggleAllOptions\",\n value: function toggleAllOptions(selectAll) {\n if (!this.multiple || this.disableSelectAll) {\n return;\n }\n var selectingAll = typeof isSelected === 'boolean' ? selectAll : !DomUtils.hasClass(this.$toggleAllCheckbox, 'checked');\n var selectedValues = [];\n var selectAllOnlyVisible = this.selectAllOnlyVisible;\n this.options.forEach(function (d) {\n var option = d;\n if (option.isDisabled || option.isCurrentNew) {\n return;\n }\n var isVisible = option.isVisible, isSelected = option.isSelected;\n /** unselected items are */\n if ( /** when unselecting all, selectAllOnlyVisible feature disabled or visible items or already unselected items */!selectingAll && (!selectAllOnlyVisible || isVisible || !isSelected) || ( /** when selecting all, selectAllOnlyVisible feature enabled and hidden items those are not already selected */selectingAll && selectAllOnlyVisible && !isVisible && !isSelected)) {\n option.isSelected = false;\n }\n else {\n option.isSelected = true;\n if (!option.isGroupTitle) {\n selectedValues.push(option.value);\n }\n }\n });\n this.toggleAllOptionsClass(selectingAll);\n this.setValue(selectedValues);\n this.renderOptions();\n }\n }, {\n key: \"toggleAllOptionsClass\",\n value: function toggleAllOptionsClass(isAllSelected) {\n if (!this.multiple) {\n return;\n }\n var valuePassed = typeof isAllSelected === 'boolean';\n var isAllVisibleSelected = false;\n if (!valuePassed) {\n // eslint-disable-next-line no-param-reassign\n isAllSelected = this.isAllOptionsSelected();\n }\n /** When all options not selected, checking if all visible options selected\n * Also, in a search mode, validate that we still have visible items\n */\n if (!isAllSelected && this.selectAllOnlyVisible && this.searchValue !== '' && (this.visibleOptionsCount > 0 || this.searchValue === '')) {\n isAllVisibleSelected = this.isAllOptionsSelected(true);\n }\n DomUtils.toggleClass(this.$toggleAllCheckbox, 'checked', isAllSelected || isAllVisibleSelected);\n this.isAllSelected = isAllSelected;\n }\n }, {\n key: \"isAllOptionsSelected\",\n value: function isAllOptionsSelected(visibleOnly) {\n var isAllSelected = false;\n if (this.options.length && this.selectedValues.length) {\n isAllSelected = !this.options.some(\n /**\n * stop looping if any option is not selected\n * for selectAllOnlyVisible case hidden option need not to be selected\n */\n function (d) {\n return !d.isSelected && !d.isDisabled && !d.isGroupTitle && (!visibleOnly || d.isVisible);\n });\n }\n return isAllSelected;\n }\n }, {\n key: \"isAllGroupOptionsSelected\",\n value: function isAllGroupOptionsSelected(groupIndex) {\n var isAllSelected = false;\n if (this.options.length) {\n isAllSelected = !this.options.some(function (d) {\n return !d.isSelected && !d.isDisabled && !d.isGroupTitle && d.groupIndex === groupIndex;\n });\n }\n return isAllSelected;\n }\n }, {\n key: \"toggleGroupOptionsParent\",\n value: function toggleGroupOptionsParent($option, isSelected) {\n if (!this.hasOptionGroup || this.disableOptionGroupCheckbox || !$option) {\n return;\n }\n var groupIndex = DomUtils.getData($option, 'groupIndex');\n if (groupIndex !== undefined) {\n groupIndex = parseInt(groupIndex);\n }\n var $group = this.$options.querySelector(\".vscomp-option[data-index=\\\"\".concat(groupIndex, \"\\\"]\"));\n var isAllSelected = typeof isSelected === 'boolean' ? isSelected : this.isAllGroupOptionsSelected(groupIndex);\n this.toggleGroupTitleCheckbox($group, isAllSelected);\n this.toggleGroupTitleProp(groupIndex, isAllSelected);\n }\n }, {\n key: \"toggleGroupTitleProp\",\n value: function toggleGroupTitleProp(groupIndex, isSelected) {\n var isAllSelected = typeof isSelected === 'boolean' ? isSelected : this.isAllGroupOptionsSelected(groupIndex);\n this.toggleSelectedProp(groupIndex, isAllSelected);\n }\n }, {\n key: \"toggleGroupOptions\",\n value: function toggleGroupOptions($ele, isSelected) {\n var _this12 = this;\n if (!this.hasOptionGroup || this.disableOptionGroupCheckbox || !$ele) {\n return;\n }\n var groupIndex = DomUtils.getData($ele, 'index', 'number');\n var selectedValues = this.selectedValues, selectAllOnlyVisible = this.selectAllOnlyVisible;\n var valuesMapping = {};\n var removeItemFromArray = Utils.removeItemFromArray;\n selectedValues.forEach(function (d) {\n valuesMapping[d] = true;\n });\n this.options.forEach(function (d) {\n if (d.isDisabled || d.groupIndex !== groupIndex) {\n return;\n }\n var value = d.value;\n if (!isSelected || selectAllOnlyVisible && !d.isVisible) {\n // eslint-disable-next-line no-param-reassign\n d.isSelected = false;\n if (valuesMapping[value]) {\n removeItemFromArray(selectedValues, value);\n }\n }\n else {\n // eslint-disable-next-line no-param-reassign\n d.isSelected = true;\n if (!valuesMapping[value]) {\n selectedValues.push(value);\n }\n }\n });\n this.toggleAllOptionsClass(isSelected ? null : false);\n this.setValue(selectedValues);\n /** using setTimeout to fix the issue of dropbox getting closed on select */\n setTimeout(function () {\n _this12.renderOptions();\n }, 0);\n }\n }, {\n key: \"toggleGroupTitleCheckbox\",\n value: function toggleGroupTitleCheckbox($ele, isSelected) {\n if (!$ele) {\n return;\n }\n var selectedIndex = DomUtils.getData($ele, 'index', 'number');\n this.toggleSelectedProp(selectedIndex, isSelected);\n this.toggleOptionSelectedState($ele, isSelected);\n }\n }, {\n key: \"toggleFocusedProp\",\n value: function toggleFocusedProp(index) {\n var isFocused = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.focusedOptionIndex) {\n this.setOptionProp(this.focusedOptionIndex, 'isFocused', false);\n }\n this.setOptionProp(index, 'isFocused', isFocused);\n this.focusedOptionIndex = index;\n }\n }, {\n key: \"toggleSelectedProp\",\n value: function toggleSelectedProp(index) {\n var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.setOptionProp(index, 'isSelected', isSelected);\n }\n }, {\n key: \"scrollToTop\",\n value: function scrollToTop() {\n var isClosed = !this.isOpened();\n if (isClosed) {\n this.openDropbox(true);\n }\n var scrollTop = this.$optionsContainer.scrollTop;\n if (scrollTop > 0) {\n this.$optionsContainer.scrollTop = 0;\n }\n if (isClosed) {\n this.closeDropbox(true);\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var formReset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var disableChangeEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.options.forEach(function (d) {\n // eslint-disable-next-line no-param-reassign\n d.isSelected = false;\n });\n this.beforeValueSet(true);\n this.setValue(null, {\n disableEvent: disableChangeEvent,\n disableValidation: formReset\n });\n this.afterValueSet();\n if (formReset) {\n DomUtils.removeClass(this.$allWrappers, 'has-error');\n }\n DomUtils.dispatchEvent(this.$ele, 'reset');\n }\n }, {\n key: \"addOption\",\n value: function addOption(data, rerender) {\n if (!data) {\n return;\n }\n this.lastOptionIndex += 1;\n var newOption = this.getOptionObj(_objectSpread(_objectSpread({}, data), {}, {\n index: this.lastOptionIndex\n }));\n this.options.push(newOption);\n this.sortedOptions.push(newOption);\n if (rerender) {\n this.visibleOptionsCount += 1;\n this.afterSetOptions();\n }\n }\n }, {\n key: \"removeOption\",\n value: function removeOption(index) {\n if (!index && index !== 0) {\n return;\n }\n this.options.splice(index, 1);\n this.lastOptionIndex -= 1;\n }\n }, {\n key: \"removeNewOption\",\n value: function removeNewOption() {\n var newOption = this.getNewOption();\n if (newOption) {\n this.removeOption(newOption.index);\n }\n }\n }, {\n key: \"sortOptions\",\n value: function sortOptions(options) {\n return options.sort(function (a, b) {\n var aIsSelected = a.isSelected || a.isAnySelected;\n var bIsSelected = b.isSelected || b.isAnySelected;\n if (!aIsSelected && !bIsSelected) {\n return 0;\n }\n if (aIsSelected && (!bIsSelected || a.index < b.index)) {\n return -1;\n }\n return 1;\n });\n }\n }, {\n key: \"sortOptionsGroup\",\n value: function sortOptionsGroup(options) {\n var sortOptions = this.sortOptions.bind(this);\n var structuredOptions = this.structureOptionGroup(options);\n structuredOptions.forEach(function (d) {\n var childOptions = d.options;\n // eslint-disable-next-line no-param-reassign\n d.isAnySelected = childOptions.some(function (e) {\n return e.isSelected;\n });\n if (d.isAnySelected) {\n sortOptions(childOptions);\n }\n });\n sortOptions(structuredOptions);\n return this.destructureOptionGroup(structuredOptions);\n }\n }, {\n key: \"isOptionVisible\",\n value: function isOptionVisible(_ref7) {\n var data = _ref7.data, searchValue = _ref7.searchValue, hasExactOption = _ref7.hasExactOption, visibleOptionGroupsMapping = _ref7.visibleOptionGroupsMapping, searchGroup = _ref7.searchGroup, searchByStartsWith = _ref7.searchByStartsWith;\n var value = data.value.toLowerCase();\n var label = this.searchNormalize ? data.labelNormalized : data.label.toLowerCase();\n var description = data.description, alias = data.alias;\n var isVisible = searchByStartsWith ? label.startsWith(searchValue) : label.includes(searchValue);\n if (data.isGroupTitle && (!searchGroup || !isVisible)) {\n isVisible = visibleOptionGroupsMapping[data.index];\n }\n if (!searchByStartsWith && alias && !isVisible) {\n isVisible = alias.includes(searchValue);\n }\n if (!searchByStartsWith && description && !isVisible) {\n isVisible = description.toLowerCase().includes(searchValue);\n }\n // eslint-disable-next-line no-param-reassign\n data.isVisible = isVisible;\n if (!hasExactOption) {\n // eslint-disable-next-line no-param-reassign\n hasExactOption = label === searchValue || value === searchValue;\n }\n return {\n isVisible: isVisible,\n hasExactOption: hasExactOption\n };\n }\n }, {\n key: \"structureOptionGroup\",\n value: function structureOptionGroup(options) {\n var result = [];\n var childOptions = {};\n /** getting all group title */\n options.forEach(function (d) {\n if (d.isGroupTitle) {\n var childArray = [];\n // eslint-disable-next-line no-param-reassign\n d.options = childArray;\n childOptions[d.index] = childArray;\n result.push(d);\n }\n });\n /** getting all group options */\n options.forEach(function (d) {\n if (d.isGroupOption) {\n childOptions[d.groupIndex].push(d);\n }\n });\n return result;\n }\n }, {\n key: \"destructureOptionGroup\",\n value: function destructureOptionGroup(options) {\n var result = [];\n options.forEach(function (d) {\n result.push(d);\n result = result.concat(d.options);\n });\n return result;\n }\n }, {\n key: \"serverSearch\",\n value: function serverSearch() {\n DomUtils.removeClass(this.$allWrappers, 'has-no-search-results');\n DomUtils.addClass(this.$allWrappers, 'server-searching');\n this.setSelectedOptions();\n this.onServerSearch(this.searchValue, this);\n }\n }, {\n key: \"removeValue\",\n value: function removeValue($ele) {\n var selectedValues = this.selectedValues;\n var selectedValue = DomUtils.getData($ele, 'value');\n Utils.removeItemFromArray(selectedValues, selectedValue);\n this.setValueMethod(selectedValues);\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.$wrapper.focus();\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.$ele.disabled = false;\n this.$ele.removeAttribute('disabled');\n this.$hiddenInput.removeAttribute('disabled');\n DomUtils.setAria(this.$wrapper, 'disabled', false);\n DomUtils.changeTabIndex(this.$wrapper, 0);\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.$ele.disabled = true;\n this.$ele.setAttribute('disabled', '');\n this.$hiddenInput.setAttribute('disabled', '');\n DomUtils.setAria(this.$wrapper, 'disabled', true);\n DomUtils.changeTabIndex(this.$wrapper, -1);\n this.$wrapper.blur();\n }\n }, {\n key: \"validate\",\n value: function validate() {\n if (this.disableValidation) {\n return true;\n }\n var hasError = false;\n var selectedValues = this.selectedValues, minValues = this.minValues;\n if (this.required && (Utils.isEmpty(selectedValues) || ( /** required minium options not selected */this.multiple && minValues && selectedValues.length < minValues))) {\n hasError = true;\n }\n DomUtils.toggleClass(this.$allWrappers, 'has-error', hasError);\n return !hasError;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var $ele = this.$ele;\n $ele.virtualSelect = undefined;\n $ele.value = undefined;\n $ele.innerHTML = '';\n if (this.hasDropboxWrapper) {\n this.$dropboxWrapper.remove();\n this.removeEvents();\n }\n if (this.dropboxPopover) {\n this.dropboxPopover.destroy();\n }\n DomUtils.removeClass($ele, 'vscomp-ele');\n }\n }, {\n key: \"createSecureTextElements\",\n value: function createSecureTextElements() {\n this.$secureDiv = document.createElement('div');\n this.$secureText = document.createTextNode('');\n this.$secureDiv.appendChild(this.$secureText);\n }\n }, {\n key: \"secureText\",\n value: function secureText(text) {\n if (!text || !this.enableSecureText) {\n return text;\n }\n this.$secureText.nodeValue = text;\n return this.$secureDiv.innerHTML;\n }\n }, {\n key: \"toggleRequired\",\n value: function toggleRequired(isRequired) {\n this.required = Utils.convertToBoolean(isRequired);\n this.$ele.required = this.required;\n }\n }, {\n key: \"toggleOptionSelectedState\",\n value: function toggleOptionSelectedState($ele, value) {\n var isSelected = value;\n if (typeof isSelected === 'undefined') {\n isSelected = !DomUtils.hasClass($ele, 'selected');\n }\n DomUtils.toggleClass($ele, 'selected', isSelected);\n DomUtils.setAria($ele, 'selected', isSelected);\n }\n }, {\n key: \"toggleOptionFocusedState\",\n value: function toggleOptionFocusedState($ele, isFocused) {\n if (!$ele) {\n return;\n }\n DomUtils.toggleClass($ele, 'focused', isFocused);\n DomUtils.setAttr($ele, 'tabindex', isFocused ? '0' : '-1');\n if (document.activeElement !== this.$searchInput) {\n $ele.focus();\n }\n if (isFocused) {\n DomUtils.setAria(this.$wrapper, 'activedescendant', $ele.id);\n }\n }\n /** static methods - start */\n }], [{\n key: \"init\",\n value: function init(options) {\n var $eleArray = options.ele;\n if (!$eleArray) {\n return undefined;\n }\n var singleEle = false;\n if (typeof $eleArray === 'string') {\n $eleArray = document.querySelectorAll($eleArray);\n var eleLength = $eleArray.length;\n if (eleLength === 0) {\n return undefined;\n }\n if (eleLength === 1) {\n singleEle = true;\n }\n }\n if ($eleArray.length === undefined || $eleArray.forEach === undefined) {\n $eleArray = [$eleArray];\n singleEle = true;\n }\n var instances = [];\n $eleArray.forEach(function ($ele) {\n /** skipping initialization on calling init method multiple times */\n if ($ele.virtualSelect) {\n instances.push($ele.virtualSelect);\n return;\n }\n // eslint-disable-next-line no-param-reassign\n options.ele = $ele;\n if ($ele.tagName === 'SELECT') {\n VirtualSelect.setPropsFromSelect(options);\n }\n instances.push(new VirtualSelect(options));\n });\n return singleEle ? instances[0] : instances;\n }\n }, {\n key: \"getAttrProps\",\n value: function getAttrProps() {\n var convertPropToDataAttr = DomUtils.convertPropToDataAttr;\n var result = {};\n nativeProps.forEach(function (d) {\n result[d] = d;\n });\n dataProps.forEach(function (d) {\n result[convertPropToDataAttr(d)] = d;\n });\n return result;\n }\n }, {\n key: \"setPropsFromSelect\",\n value: function setPropsFromSelect(props) {\n var $ele = props.ele;\n var disabledOptions = [];\n var selectedValue = [];\n var getNativeOptions = function getNativeOptions($container) {\n var options = [];\n var $options = Array.from($container.children);\n $options.forEach(function ($option) {\n var value = $option.value;\n var option = {\n value: value\n };\n if ($option.tagName === 'OPTGROUP') {\n option.label = $option.getAttribute('label');\n option.options = getNativeOptions($option);\n }\n else {\n option.label = $option.innerHTML;\n }\n options.push(option);\n if ($option.disabled) {\n disabledOptions.push(value);\n }\n if ($option.selected) {\n selectedValue.push(value);\n }\n });\n return options;\n };\n var optionsList = getNativeOptions($ele);\n /** creating div element to initiate plugin and removing native element */\n var $newEle = document.createElement('div');\n DomUtils.setAttrFromEle($ele, $newEle, Object.keys(attrPropsMapping), valueLessProps);\n $ele.parentNode.insertBefore($newEle, $ele);\n $ele.remove();\n // eslint-disable-next-line no-param-reassign\n props.ele = $newEle;\n // eslint-disable-next-line no-param-reassign\n props.options = optionsList;\n // eslint-disable-next-line no-param-reassign\n props.disabledOptions = disabledOptions;\n // eslint-disable-next-line no-param-reassign\n props.selectedValue = selectedValue;\n }\n }, {\n key: \"onFormReset\",\n value: function onFormReset(e) {\n var $form = e.target.closest('form');\n if (!$form) {\n return;\n }\n $form.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) {\n $ele.parentElement.virtualSelect.reset(true);\n });\n }\n }, {\n key: \"onFormSubmit\",\n value: function onFormSubmit(e) {\n if (!VirtualSelect.validate(e.target.closest('form'))) {\n e.preventDefault();\n }\n }\n }, {\n key: \"validate\",\n value: function validate($container) {\n if (!$container) {\n return true;\n }\n var hasError = false;\n $container.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) {\n var result = $ele.parentElement.virtualSelect.validate();\n if (!hasError && !result) {\n hasError = true;\n }\n });\n return !hasError;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var formReset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var disableChangeEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.virtualSelect.reset(formReset, disableChangeEvent);\n }\n }, {\n key: \"setValueMethod\",\n value: function setValueMethod() {\n var _this$virtualSelect;\n (_this$virtualSelect = this.virtualSelect).setValueMethod.apply(_this$virtualSelect, arguments);\n }\n }, {\n key: \"setOptionsMethod\",\n value: function setOptionsMethod() {\n var _this$virtualSelect2;\n (_this$virtualSelect2 = this.virtualSelect).setOptionsMethod.apply(_this$virtualSelect2, arguments);\n }\n }, {\n key: \"setDisabledOptionsMethod\",\n value: function setDisabledOptionsMethod() {\n var _this$virtualSelect3;\n (_this$virtualSelect3 = this.virtualSelect).setDisabledOptionsMethod.apply(_this$virtualSelect3, arguments);\n }\n }, {\n key: \"setEnabledOptionsMethod\",\n value: function setEnabledOptionsMethod() {\n var _this$virtualSelect4;\n (_this$virtualSelect4 = this.virtualSelect).setEnabledOptionsMethod.apply(_this$virtualSelect4, arguments);\n }\n }, {\n key: \"toggleSelectAll\",\n value: function toggleSelectAll(isSelected) {\n this.virtualSelect.toggleAllOptions(isSelected);\n }\n }, {\n key: \"isAllSelected\",\n value: function isAllSelected() {\n return this.virtualSelect.isAllSelected;\n }\n }, {\n key: \"addOptionMethod\",\n value: function addOptionMethod(data) {\n this.virtualSelect.addOption(data, true);\n }\n }, {\n key: \"getNewValueMethod\",\n value: function getNewValueMethod() {\n return this.virtualSelect.getNewValue();\n }\n }, {\n key: \"getDisplayValueMethod\",\n value: function getDisplayValueMethod() {\n return this.virtualSelect.getDisplayValue();\n }\n }, {\n key: \"getSelectedOptionsMethod\",\n value: function getSelectedOptionsMethod(params) {\n return this.virtualSelect.getSelectedOptions(params);\n }\n }, {\n key: \"getDisabledOptionsMethod\",\n value: function getDisabledOptionsMethod() {\n return this.virtualSelect.getDisabledOptions();\n }\n }, {\n key: \"openMethod\",\n value: function openMethod() {\n return this.virtualSelect.openDropbox();\n }\n }, {\n key: \"closeMethod\",\n value: function closeMethod() {\n return this.virtualSelect.closeDropbox();\n }\n }, {\n key: \"focusMethod\",\n value: function focusMethod() {\n return this.virtualSelect.focus();\n }\n }, {\n key: \"enableMethod\",\n value: function enableMethod() {\n return this.virtualSelect.enable();\n }\n }, {\n key: \"disableMethod\",\n value: function disableMethod() {\n return this.virtualSelect.disable();\n }\n }, {\n key: \"destroyMethod\",\n value: function destroyMethod() {\n return this.virtualSelect.destroy();\n }\n }, {\n key: \"validateMethod\",\n value: function validateMethod() {\n return this.virtualSelect.validate();\n }\n }, {\n key: \"toggleRequiredMethod\",\n value: function toggleRequiredMethod(isRequired) {\n return this.virtualSelect.toggleRequired(isRequired);\n }\n }, {\n key: \"onResizeMethod\",\n value: function onResizeMethod() {\n document.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) {\n $ele.parentElement.virtualSelect.onResize();\n });\n }\n /** static methods - end */\n }]);\n return VirtualSelect;\n }();\n document.addEventListener('reset', VirtualSelect.onFormReset);\n document.addEventListener('submit', VirtualSelect.onFormSubmit);\n window.addEventListener('resize', VirtualSelect.onResizeMethod);\n attrPropsMapping = VirtualSelect.getAttrProps();\n window.VirtualSelect = VirtualSelect;\n /** polyfill to fix an issue in ie browser */\n if (typeof NodeList !== 'undefined' && NodeList.prototype && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n }();\n // This entry need to be wrapped in an IIFE because it need to be isolated against other entry modules.\n !function () {\n /*!\n * Popover v1.0.13\n * https://sa-si-dev.github.io/popover\n * Licensed under MIT (https://github.com/sa-si-dev/popover/blob/master/LICENSE)\n */ !function () {\n \"use strict\";\n function e(e) { return function (e) { if (Array.isArray(e))\n return t(e); }(e) || function (e) { if (\"undefined\" != typeof Symbol && null != e[Symbol.iterator] || null != e[\"@@iterator\"])\n return Array.from(e); }(e) || function (e, o) { if (e) {\n if (\"string\" == typeof e)\n return t(e, o);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n return \"Object\" === i && e.constructor && (i = e.constructor.name), \"Map\" === i || \"Set\" === i ? Array.from(e) : \"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? t(e, o) : void 0;\n } }(e) || function () { 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 function t(e, t) { (null == t || t > e.length) && (t = e.length); for (var o = 0, i = new Array(t); o < t; o++)\n i[o] = e[o]; return i; }\n function o(e, t) { for (var o = 0; o < t.length; o++) {\n var i = t[o];\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);\n } }\n var i = function () { function t() { !function (e, t) { if (!(e instanceof t))\n throw new TypeError(\"Cannot call a class as a function\"); }(this, t); } var i, r; return i = t, r = [{ key: \"addClass\", value: function (o, i) { o && (i = i.split(\" \"), t.getElements(o).forEach((function (t) { var o; (o = t.classList).add.apply(o, e(i)); }))); } }, { key: \"removeClass\", value: function (o, i) { o && (i = i.split(\" \"), t.getElements(o).forEach((function (t) { var o; (o = t.classList).remove.apply(o, e(i)); }))); } }, { key: \"getElements\", value: function (e) { if (e)\n return void 0 === e.forEach && (e = [e]), e; } }, { key: \"getMoreVisibleSides\", value: function (e) { if (!e)\n return {}; var t = e.getBoundingClientRect(), o = window.innerWidth, i = window.innerHeight, r = t.left, n = t.top; return { horizontal: r > o - r - t.width ? \"left\" : \"right\", vertical: n > i - n - t.height ? \"top\" : \"bottom\" }; } }, { key: \"getAbsoluteCoords\", value: function (e) { if (e) {\n var t = e.getBoundingClientRect(), o = window.pageXOffset, i = window.pageYOffset;\n return { width: t.width, height: t.height, top: t.top + i, right: t.right + o, bottom: t.bottom + i, left: t.left + o };\n } } }, { key: \"getCoords\", value: function (e) { return e ? e.getBoundingClientRect() : {}; } }, { key: \"getData\", value: function (e, t, o) { if (e) {\n var i = e ? e.dataset[t] : \"\";\n return \"number\" === o ? i = parseFloat(i) || 0 : \"true\" === i ? i = !0 : \"false\" === i && (i = !1), i;\n } } }, { key: \"setData\", value: function (e, t, o) { e && (e.dataset[t] = o); } }, { key: \"setStyle\", value: function (e, t, o) { e && (e.style[t] = o); } }, { key: \"show\", value: function (e) { var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"block\"; t.setStyle(e, \"display\", o); } }, { key: \"hide\", value: function (e) { t.setStyle(e, \"display\", \"none\"); } }, { key: \"getHideableParent\", value: function (e) { for (var t, o = e.parentElement; o;) {\n var i = getComputedStyle(o).overflow;\n if (-1 !== i.indexOf(\"scroll\") || -1 !== i.indexOf(\"auto\")) {\n t = o;\n break;\n }\n o = o.parentElement;\n } return t; } }], r && o(i, r), t; }();\n function r(e, t) { for (var o = 0; o < t.length; o++) {\n var i = t[o];\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);\n } }\n var n = [\"top\", \"bottom\", \"left\", \"right\"].map((function (e) { return \"position-\".concat(e); })), a = { top: \"rotate(180deg)\", left: \"rotate(90deg)\", right: \"rotate(-90deg)\" }, s = function () { function e(t) { !function (e, t) { if (!(e instanceof t))\n throw new TypeError(\"Cannot call a class as a function\"); }(this, e); try {\n this.setProps(t), this.init();\n }\n catch (e) {\n console.warn(\"Couldn't initiate popper\"), console.error(e);\n } } var t, o; return t = e, o = [{ key: \"init\", value: function () { var e = this.$popperEle; e && this.$triggerEle && (i.setStyle(e, \"zIndex\", this.zIndex), this.setPosition()); } }, { key: \"setProps\", value: function (e) { var t = (e = this.setDefaultProps(e)).position ? e.position.toLowerCase() : \"auto\"; if (this.$popperEle = e.$popperEle, this.$triggerEle = e.$triggerEle, this.$arrowEle = e.$arrowEle, this.margin = parseFloat(e.margin), this.offset = parseFloat(e.offset), this.enterDelay = parseFloat(e.enterDelay), this.exitDelay = parseFloat(e.exitDelay), this.showDuration = parseFloat(e.showDuration), this.hideDuration = parseFloat(e.hideDuration), this.transitionDistance = parseFloat(e.transitionDistance), this.zIndex = parseFloat(e.zIndex), this.afterShowCallback = e.afterShow, this.afterHideCallback = e.afterHide, this.hasArrow = !!this.$arrowEle, -1 !== t.indexOf(\" \")) {\n var o = t.split(\" \");\n this.position = o[0], this.secondaryPosition = o[1];\n }\n else\n this.position = t; } }, { key: \"setDefaultProps\", value: function (e) { return Object.assign({ position: \"auto\", margin: 8, offset: 5, enterDelay: 0, exitDelay: 0, showDuration: 300, hideDuration: 200, transitionDistance: 10, zIndex: 1 }, e); } }, { key: \"setPosition\", value: function () { i.show(this.$popperEle, \"inline-flex\"); var e, t, o, r = window.innerWidth, s = window.innerHeight, l = i.getAbsoluteCoords(this.$popperEle), u = i.getAbsoluteCoords(this.$triggerEle), p = l.width, h = l.height, c = l.top, f = l.right, v = l.bottom, d = l.left, y = u.width, m = u.height, g = u.top, b = u.right, w = u.bottom, E = u.left, k = g - c, $ = E - d, D = $, S = k, C = this.position, P = this.secondaryPosition, O = y / 2 - p / 2, T = m / 2 - h / 2, A = this.margin, x = this.transitionDistance, I = window.scrollY - c, H = s + I, j = window.scrollX - d, L = r + j, R = this.offset; R && (I += R, H -= R, j += R, L -= R), \"auto\" === C && (C = i.getMoreVisibleSides(this.$triggerEle).vertical); var z = { top: { top: S - h - A, left: D + O }, bottom: { top: S + m + A, left: D + O }, right: { top: S + T, left: D + y + A }, left: { top: S + T, left: D - p - A } }, F = z[C]; if (S = F.top, D = F.left, P && (\"top\" === P ? S = k : \"bottom\" === P ? S = k + m - h : \"left\" === P ? D = $ : \"right\" === P && (D = $ + y - p)), D < j ? \"left\" === C ? o = \"right\" : D = j + d > b ? b - d : j : D + p > L && (\"right\" === C ? o = \"left\" : D = L + d < E ? E - f : L - p), S < I ? \"top\" === C ? o = \"bottom\" : S = I + c > w ? w - c : I : S + h > H && (\"bottom\" === C ? o = \"top\" : S = H + c < g ? g - v : H - h), o) {\n var M = z[o];\n \"top\" === (C = o) || \"bottom\" === C ? S = M.top : \"left\" !== C && \"right\" !== C || (D = M.left);\n } \"top\" === C ? (e = S + x, t = D) : \"right\" === C ? (e = S, t = D - x) : \"left\" === C ? (e = S, t = D + x) : (e = S - x, t = D); var U = \"translate3d(\".concat(parseInt(t), \"px, \").concat(parseInt(e), \"px, 0)\"); if (i.setStyle(this.$popperEle, \"transform\", U), i.setData(this.$popperEle, \"fromLeft\", t), i.setData(this.$popperEle, \"fromTop\", e), i.setData(this.$popperEle, \"top\", S), i.setData(this.$popperEle, \"left\", D), i.removeClass(this.$popperEle, n.join(\" \")), i.addClass(this.$popperEle, \"position-\".concat(C)), this.hasArrow) {\n var B = 0, q = 0, N = D + d, W = S + c, K = this.$arrowEle.offsetWidth / 2, V = a[C] || \"\";\n \"top\" === C || \"bottom\" === C ? (B = y / 2 + E - N) < K ? B = K : B > p - K && (B = p - K) : \"left\" !== C && \"right\" !== C || ((q = m / 2 + g - W) < K ? q = K : q > h - K && (q = h - K)), i.setStyle(this.$arrowEle, \"transform\", \"translate3d(\".concat(parseInt(B), \"px, \").concat(parseInt(q), \"px, 0) \").concat(V));\n } i.hide(this.$popperEle); } }, { key: \"resetPosition\", value: function () { i.setStyle(this.$popperEle, \"transform\", \"none\"), this.setPosition(); } }, { key: \"show\", value: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, o = t.resetPosition, r = t.data; clearTimeout(this.exitDelayTimeout), clearTimeout(this.hideDurationTimeout), o && this.resetPosition(), this.enterDelayTimeout = setTimeout((function () { var t = i.getData(e.$popperEle, \"left\"), o = i.getData(e.$popperEle, \"top\"), n = \"translate3d(\".concat(parseInt(t), \"px, \").concat(parseInt(o), \"px, 0)\"), a = e.showDuration; i.show(e.$popperEle, \"inline-flex\"), i.getCoords(e.$popperEle), i.setStyle(e.$popperEle, \"transitionDuration\", a + \"ms\"), i.setStyle(e.$popperEle, \"transform\", n), i.setStyle(e.$popperEle, \"opacity\", 1), e.showDurationTimeout = setTimeout((function () { \"function\" == typeof e.afterShowCallback && e.afterShowCallback(r); }), a); }), this.enterDelay); } }, { key: \"hide\", value: function () { var e = this, t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).data; clearTimeout(this.enterDelayTimeout), clearTimeout(this.showDurationTimeout), this.exitDelayTimeout = setTimeout((function () { if (e.$popperEle) {\n var o = parseInt(i.getData(e.$popperEle, \"fromLeft\")), r = parseInt(i.getData(e.$popperEle, \"fromTop\")), n = \"translate3d(\".concat(o, \"px, \").concat(r, \"px, 0)\"), a = e.hideDuration;\n i.setStyle(e.$popperEle, \"transitionDuration\", a + \"ms\"), i.setStyle(e.$popperEle, \"transform\", n), i.setStyle(e.$popperEle, \"opacity\", 0), e.hideDurationTimeout = setTimeout((function () { i.hide(e.$popperEle), \"function\" == typeof e.afterHideCallback && e.afterHideCallback(t); }), a);\n } }), this.exitDelay); } }, { key: \"updatePosition\", value: function () { i.setStyle(this.$popperEle, \"transitionDuration\", \"0ms\"), this.resetPosition(); var e = parseInt(i.getData(this.$popperEle, \"left\")), t = parseInt(i.getData(this.$popperEle, \"top\")); i.show(this.$popperEle, \"inline-flex\"), i.setStyle(this.$popperEle, \"transform\", \"translate3d(\".concat(e, \"px, \").concat(t, \"px, 0)\")); } }], o && r(t.prototype, o), e; }();\n window.PopperComponent = s;\n }(), function () {\n \"use strict\";\n function e(t) { return e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) { return typeof e; } : function (e) { return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e; }, e(t); }\n function t(e, t) { for (var i = 0; i < t.length; i++) {\n var r = t[i];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, o(r.key), r);\n } }\n function o(t) { var o = function (t, o) { if (\"object\" != e(t) || !t)\n return t; var i = t[Symbol.toPrimitive]; if (void 0 !== i) {\n var r = i.call(t, o || \"default\");\n if (\"object\" != e(r))\n return r;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n } return (\"string\" === o ? String : Number)(t); }(t, \"string\"); return \"symbol\" == e(o) ? o : o + \"\"; }\n var i = function () { return e = function e() { !function (e, t) { if (!(e instanceof t))\n throw new TypeError(\"Cannot call a class as a function\"); }(this, e); }, i = [{ key: \"convertToBoolean\", value: function (e) { return e = !0 === e || \"true\" === e || !1 !== e && \"false\" !== e && arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; } }, { key: \"removeArrayEmpty\", value: function (e) { return Array.isArray(e) && e.length ? e.filter((function (e) { return !!e; })) : []; } }, { key: \"throttle\", value: function (e, t) { var o, i = 0; return function () { for (var r = arguments.length, n = new Array(r), a = 0; a < r; a++)\n n[a] = arguments[a]; var s = (new Date).getTime(), l = t - (s - i); clearTimeout(o), l <= 0 ? (i = s, e.apply(void 0, n)) : o = setTimeout((function () { e.apply(void 0, n); }), l); }; } }], (o = null) && t(e.prototype, o), i && t(e, i), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; var e, o, i; }();\n function r(e) { return r = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) { return typeof e; } : function (e) { return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e; }, r(e); }\n function n(e) { return function (e) { if (Array.isArray(e))\n return a(e); }(e) || function (e) { if (\"undefined\" != typeof Symbol && null != e[Symbol.iterator] || null != e[\"@@iterator\"])\n return Array.from(e); }(e) || function (e, t) { if (e) {\n if (\"string\" == typeof e)\n return a(e, t);\n var o = Object.prototype.toString.call(e).slice(8, -1);\n return \"Object\" === o && e.constructor && (o = e.constructor.name), \"Map\" === o || \"Set\" === o ? Array.from(e) : \"Arguments\" === o || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o) ? a(e, t) : void 0;\n } }(e) || function () { 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 function a(e, t) { (null == t || t > e.length) && (t = e.length); for (var o = 0, i = new Array(t); o < t; o++)\n i[o] = e[o]; return i; }\n function s(e, t) { for (var o = 0; o < t.length; o++) {\n var i = t[o];\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, l(i.key), i);\n } }\n function l(e) { var t = function (e, t) { if (\"object\" != r(e) || !e)\n return e; var o = e[Symbol.toPrimitive]; if (void 0 !== o) {\n var i = o.call(e, t || \"default\");\n if (\"object\" != r(i))\n return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n } return (\"string\" === t ? String : Number)(e); }(e, \"string\"); return \"symbol\" == r(t) ? t : t + \"\"; }\n var u = function () { function e() { !function (e, t) { if (!(e instanceof t))\n throw new TypeError(\"Cannot call a class as a function\"); }(this, e); } return t = e, r = [{ key: \"addClass\", value: function (t, o) { t && (o = o.split(\" \"), e.getElements(t).forEach((function (e) { var t; (t = e.classList).add.apply(t, n(o)); }))); } }, { key: \"removeClass\", value: function (t, o) { t && (o = o.split(\" \"), e.getElements(t).forEach((function (e) { var t; (t = e.classList).remove.apply(t, n(o)); }))); } }, { key: \"hasClass\", value: function (e, t) { return !!e && e.classList.contains(t); } }, { key: \"getElement\", value: function (e) { return e && (\"string\" == typeof e ? e = document.querySelector(e) : void 0 !== e.length && (e = e[0])), e || null; } }, { key: \"getElements\", value: function (e) { if (e)\n return void 0 === e.forEach && (e = [e]), e; } }, { key: \"addEvent\", value: function (t, o, i) { e.addOrRemoveEvent(t, o, i, \"add\"); } }, { key: \"removeEvent\", value: function (t, o, i) { e.addOrRemoveEvent(t, o, i, \"remove\"); } }, { key: \"addOrRemoveEvent\", value: function (t, o, r, n) { t && (o = i.removeArrayEmpty(o.split(\" \"))).forEach((function (o) { (t = e.getElements(t)).forEach((function (e) { \"add\" === n ? e.addEventListener(o, r) : e.removeEventListener(o, r); })); })); } }, { key: \"getScrollableParents\", value: function (e) { if (!e)\n return []; for (var t = [window], o = e.parentElement; o;) {\n var i = getComputedStyle(o).overflow;\n -1 === i.indexOf(\"scroll\") && -1 === i.indexOf(\"auto\") || t.push(o), o = o.parentElement;\n } return t; } }, { key: \"convertPropToDataAttr\", value: function (e) { return e ? \"data-popover-\".concat(e).replace(/([A-Z])/g, \"-$1\").toLowerCase() : \"\"; } }], (o = null) && s(t.prototype, o), r && s(t, r), Object.defineProperty(t, \"prototype\", { writable: !1 }), t; var t, o, r; }();\n function p(e) { return p = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) { return typeof e; } : function (e) { return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e; }, p(e); }\n function h(e, t) { for (var o = 0; o < t.length; o++) {\n var i = t[o];\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, c(i.key), i);\n } }\n function c(e) { var t = function (e, t) { if (\"object\" != p(e) || !e)\n return e; var o = e[Symbol.toPrimitive]; if (void 0 !== o) {\n var i = o.call(e, t || \"default\");\n if (\"object\" != p(i))\n return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n } return (\"string\" === t ? String : Number)(e); }(e, \"string\"); return \"symbol\" == p(t) ? t : t + \"\"; }\n var f, v = { 27: \"onEscPress\" }, d = [\"target\", \"position\", \"margin\", \"offset\", \"enterDelay\", \"exitDelay\", \"showDuration\", \"hideDuration\", \"transitionDistance\", \"updatePositionThrottle\", \"zIndex\", \"hideOnOuterClick\", \"showOnHover\", \"hideArrowIcon\", \"disableManualAction\", \"disableUpdatePosition\"], y = function () { function e(t) { !function (e, t) { if (!(e instanceof t))\n throw new TypeError(\"Cannot call a class as a function\"); }(this, e); try {\n this.setProps(t), this.init();\n }\n catch (e) {\n console.warn(\"Couldn't initiate Popover component\"), console.error(e);\n } } return t = e, r = [{ key: \"init\", value: function (t) { var o = t.ele; if (o) {\n var i = !1;\n if (\"string\" == typeof o) {\n if (!(o = document.querySelectorAll(o)))\n return;\n 1 === o.length && (i = !0);\n }\n void 0 === o.length && (o = [o], i = !0);\n var r = [];\n return o.forEach((function (o) { t.ele = o, e.destroy(o), r.push(new e(t)); })), i ? r[0] : r;\n } } }, { key: \"destroy\", value: function (e) { if (e) {\n var t = e.popComp;\n t && t.destroy();\n } } }, { key: \"showMethod\", value: function () { this.popComp.show(); } }, { key: \"hideMethod\", value: function () { this.popComp.hide(); } }, { key: \"updatePositionMethod\", value: function () { this.popComp.popper.updatePosition(); } }, { key: \"getAttrProps\", value: function () { var e = u.convertPropToDataAttr, t = {}; return d.forEach((function (o) { t[e(o)] = o; })), t; } }], (o = [{ key: \"init\", value: function () { this.$popover && (this.setElementProps(), this.renderArrow(), this.initPopper(), this.addEvents()); } }, { key: \"getEvents\", value: function () { var e = [{ $ele: document, event: \"click\", method: \"onDocumentClick\" }, { $ele: document, event: \"keydown\", method: \"onDocumentKeyDown\" }]; return this.disableManualAction || (e.push({ $ele: this.$ele, event: \"click\", method: \"onTriggerEleClick\" }), this.showOnHover && (e.push({ $ele: this.$ele, event: \"mouseenter\", method: \"onTriggerEleMouseEnter\" }), e.push({ $ele: this.$ele, event: \"mouseleave\", method: \"onTriggerEleMouseLeave\" }))), e; } }, { key: \"addOrRemoveEvents\", value: function (e) { var t = this; this.getEvents().forEach((function (o) { t.addOrRemoveEvent({ action: e, $ele: o.$ele, events: o.event, method: o.method }); })); } }, { key: \"addEvents\", value: function () { this.addOrRemoveEvents(\"add\"); } }, { key: \"removeEvents\", value: function () { this.addOrRemoveEvents(\"remove\"), this.removeScrollEventListeners(), this.removeResizeEventListeners(); } }, { key: \"addOrRemoveEvent\", value: function (e) { var t = this, o = e.action, r = e.$ele, n = e.events, a = e.method, s = e.throttle; r && (n = i.removeArrayEmpty(n.split(\" \"))).forEach((function (e) { var n = \"\".concat(a, \"-\").concat(e), l = t.events[n]; l || (l = t[a].bind(t), s && (l = i.throttle(l, s)), t.events[n] = l), \"add\" === o ? u.addEvent(r, e, l) : u.removeEvent(r, e, l); })); } }, { key: \"addScrollEventListeners\", value: function () { this.$scrollableElems = u.getScrollableParents(this.$ele), this.addOrRemoveEvent({ action: \"add\", $ele: this.$scrollableElems, events: \"scroll\", method: \"onAnyParentScroll\", throttle: this.updatePositionThrottle }); } }, { key: \"removeScrollEventListeners\", value: function () { this.$scrollableElems && (this.addOrRemoveEvent({ action: \"remove\", $ele: this.$scrollableElems, events: \"scroll\", method: \"onAnyParentScroll\" }), this.$scrollableElems = null); } }, { key: \"addResizeEventListeners\", value: function () { this.addOrRemoveEvent({ action: \"add\", $ele: window, events: \"resize\", method: \"onResize\", throttle: this.updatePositionThrottle }); } }, { key: \"removeResizeEventListeners\", value: function () { this.addOrRemoveEvent({ action: \"remove\", $ele: window, events: \"resize\", method: \"onResize\" }); } }, { key: \"onAnyParentScroll\", value: function () { this.popper.updatePosition(); } }, { key: \"onResize\", value: function () { this.popper.updatePosition(); } }, { key: \"onDocumentClick\", value: function (e) { var t = e.target, o = t.closest(\".pop-comp-ele\"), i = t.closest(\".pop-comp-wrapper\"); this.hideOnOuterClick && o !== this.$ele && i !== this.$popover && this.hide(); } }, { key: \"onDocumentKeyDown\", value: function (e) { var t = e.which || e.keyCode, o = v[t]; o && this[o](e); } }, { key: \"onEscPress\", value: function () { this.hideOnOuterClick && this.hide(); } }, { key: \"onTriggerEleClick\", value: function () { this.toggle(); } }, { key: \"onTriggerEleMouseEnter\", value: function () { this.show(); } }, { key: \"onTriggerEleMouseLeave\", value: function () { this.hide(); } }, { key: \"setProps\", value: function (e) { e = this.setDefaultProps(e), this.setPropsFromElementAttr(e); var t = i.convertToBoolean; this.$ele = e.ele, this.target = e.target, this.position = e.position, this.margin = parseFloat(e.margin), this.offset = parseFloat(e.offset), this.enterDelay = parseFloat(e.enterDelay), this.exitDelay = parseFloat(e.exitDelay), this.showDuration = parseFloat(e.showDuration), this.hideDuration = parseFloat(e.hideDuration), this.transitionDistance = parseFloat(e.transitionDistance), this.updatePositionThrottle = parseFloat(e.updatePositionThrottle), this.zIndex = parseFloat(e.zIndex), this.hideOnOuterClick = t(e.hideOnOuterClick), this.showOnHover = t(e.showOnHover), this.hideArrowIcon = t(e.hideArrowIcon), this.disableManualAction = t(e.disableManualAction), this.disableUpdatePosition = t(e.disableUpdatePosition), this.beforeShowCallback = e.beforeShow, this.afterShowCallback = e.afterShow, this.beforeHideCallback = e.beforeHide, this.afterHideCallback = e.afterHide, this.events = {}, this.$popover = u.getElement(this.target); } }, { key: \"setDefaultProps\", value: function (e) { return Object.assign({ position: \"auto\", margin: 8, offset: 5, enterDelay: 0, exitDelay: 0, showDuration: 300, hideDuration: 200, transitionDistance: 10, updatePositionThrottle: 100, zIndex: 1, hideOnOuterClick: !0, showOnHover: !1, hideArrowIcon: !1, disableManualAction: !1, disableUpdatePosition: !1 }, e); } }, { key: \"setPropsFromElementAttr\", value: function (e) { var t = e.ele; for (var o in f) {\n var i = t.getAttribute(o);\n i && (e[f[o]] = i);\n } } }, { key: \"setElementProps\", value: function () { var t = this.$ele; t.popComp = this, t.show = e.showMethod, t.hide = e.hideMethod, t.updatePosition = e.updatePositionMethod, u.addClass(this.$ele, \"pop-comp-ele\"), u.addClass(this.$popover, \"pop-comp-wrapper\"); } }, { key: \"getOtherTriggerPopComp\", value: function () { var e, t = this.$popover.popComp; return t && t.$ele !== this.$ele && (e = t), e; } }, { key: \"initPopper\", value: function () { var e = { $popperEle: this.$popover, $triggerEle: this.$ele, $arrowEle: this.$arrowEle, position: this.position, margin: this.margin, offset: this.offset, enterDelay: this.enterDelay, exitDelay: this.exitDelay, showDuration: this.showDuration, hideDuration: this.hideDuration, transitionDistance: this.transitionDistance, zIndex: this.zIndex, afterShow: this.afterShow.bind(this), afterHide: this.afterHide.bind(this) }; this.popper = new PopperComponent(e); } }, { key: \"beforeShow\", value: function () { \"function\" == typeof this.beforeShowCallback && this.beforeShowCallback(this); } }, { key: \"beforeHide\", value: function () { \"function\" == typeof this.beforeHideCallback && this.beforeHideCallback(this); } }, { key: \"show\", value: function () { this.isShown() || (this.isShownForOtherTrigger() ? this.showAfterOtherHide() : (u.addClass(this.$popover, \"pop-comp-disable-events\"), this.$popover.popComp = this, this.beforeShow(), this.popper.show({ resetPosition: !0 }), u.addClass(this.$ele, \"pop-comp-active\"))); } }, { key: \"hide\", value: function () { this.isShown() && (this.beforeHide(), this.popper.hide(), this.removeScrollEventListeners(), this.removeResizeEventListeners()); } }, { key: \"toggle\", value: function (e) { void 0 === e && (e = !this.isShown()), e ? this.show() : this.hide(); } }, { key: \"isShown\", value: function () { return u.hasClass(this.$ele, \"pop-comp-active\"); } }, { key: \"isShownForOtherTrigger\", value: function () { var e = this.getOtherTriggerPopComp(); return !!e && e.isShown(); } }, { key: \"showAfterOtherHide\", value: function () { var e = this, t = this.getOtherTriggerPopComp(); if (t) {\n var o = t.exitDelay + t.hideDuration + 100;\n setTimeout((function () { e.show(); }), o);\n } } }, { key: \"afterShow\", value: function () { var e = this; this.showOnHover ? setTimeout((function () { u.removeClass(e.$popover, \"pop-comp-disable-events\"); }), 2e3) : u.removeClass(this.$popover, \"pop-comp-disable-events\"), this.disableUpdatePosition || (this.addScrollEventListeners(), this.addResizeEventListeners()), \"function\" == typeof this.afterShowCallback && this.afterShowCallback(this); } }, { key: \"afterHide\", value: function () { u.removeClass(this.$ele, \"pop-comp-active\"), \"function\" == typeof this.afterHideCallback && this.afterHideCallback(this); } }, { key: \"renderArrow\", value: function () { if (!this.hideArrowIcon) {\n var e = this.$popover.querySelector(\".pop-comp-arrow\");\n e || (this.$popover.insertAdjacentHTML(\"afterbegin\", ''), e = this.$popover.querySelector(\".pop-comp-arrow\")), this.$arrowEle = e;\n } } }, { key: \"destroy\", value: function () { this.removeEvents(); } }]) && h(t.prototype, o), r && h(t, r), Object.defineProperty(t, \"prototype\", { writable: !1 }), t; var t, o, r; }();\n f = y.getAttrProps(), window.PopoverComponent = y;\n }();\n }();\n /******/ \n})();\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst accordionTabs = {\n isMobile() {\n return window.innerWidth < 1056;\n },\n init(el) {\n //get hash from url\n const hash = window.location.hash;\n // if hash exists\n if (hash) {\n const tab = el.querySelector(hash);\n //if tab with hash id exists, open it and scroll to it\n if (tab) {\n this.closeAllTabs(el);\n //set tab to open\n tab.setAttribute('open', 'true');\n this.scrollToTab(tab);\n }\n }\n // Edge doesn't show display: contents as expected, display as accordion\n if (!/MSIE|Trident/.test(window.navigator.userAgent)) {\n el.classList.add('accordion-tabs--initialized');\n }\n else {\n return;\n }\n if (el.classList.contains('accordion-tabs')) {\n const tabs = el.querySelectorAll('details');\n tabs?.forEach((tab) => {\n const summary = tab.querySelector('summary');\n summary?.addEventListener('click', (e) => {\n // Tabs view is only on screens md and up\n if (!this.isMobile()) {\n if (tab.hasAttribute('open')) {\n e.preventDefault();\n }\n else {\n this.closeAllTabs(el);\n //this.scrollToTab(tab as HTMLElement);\n }\n }\n });\n });\n }\n },\n closeAllTabs(el) {\n const tabs = el?.querySelectorAll('details');\n tabs?.forEach((tab) => {\n tab.removeAttribute('open');\n });\n },\n scrollToTab(tab) {\n const content = tab.querySelector('.accordion__header'); //we get header to prevent it from being hidden by the fixed header\n if (content) {\n //get content absolute position and scroll window to it\n const contentPosition = content.getBoundingClientRect().top + window.scrollY;\n window.scrollTo({\n top: contentPosition - 100,\n behavior: 'smooth'\n });\n }\n }\n};\nexports.default = accordionTabs;\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n/**\n * Swiper 11.0.7\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Swiper = (function () {\n 'use strict';\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 */\n function isObject$1(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n }\n function extend$1(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')\n target[key] = src[key];\n else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) {\n extend$1(target[key], src[key]);\n }\n });\n }\n const 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 };\n function getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend$1(doc, ssrDocument);\n return doc;\n }\n const 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 };\n function getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend$1(win, ssrWindow);\n return win;\n }\n function classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n }\n function deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n }\n catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n }\n catch (e) {\n // something got wrong\n }\n });\n }\n function nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n }\n function now() {\n return Date.now();\n }\n function getComputedStyle$1(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 }\n function 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$1(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 }\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)\n curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n }\n function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n }\n function 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 }\n function 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 }\n else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n }\n else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n }\n else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n }\n else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n }\n function setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n }\n function animateCSSModeScroll(_ref) {\n let { swiper, targetPosition, side } = _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 }\n function getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n }\n function elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n }\n function showWarning(text) {\n try {\n console.warn(text);\n return;\n }\n catch (err) {\n // err\n }\n }\n function 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 }\n function 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 }\n function 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))\n prevEls.push(prev);\n }\n else\n prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n }\n function 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))\n nextEls.push(next);\n }\n else\n nextEls.push(next);\n el = next;\n }\n return nextEls;\n }\n function elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n }\n function 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)\n i += 1;\n }\n return i;\n }\n return undefined;\n }\n function 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))\n parents.push(parent);\n }\n else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n }\n function elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el)\n return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n }\n function 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 }\n function makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n }\n let support;\n function 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 }\n function getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n }\n let deviceCached;\n function calcDevice(_temp) {\n let { userAgent } = _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 // 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)\n ipad = [0, 1, '13_0_0'];\n macos = false;\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 // Export object\n return device;\n }\n function getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n }\n let browser;\n function calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n }\n function getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n }\n function Resize(_ref) {\n let { swiper, on, emit } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized)\n return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized)\n return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let { contentBoxSize, contentRect, target } = _ref2;\n if (target && target !== swiper.el)\n 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)\n return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n }\n function Observer(_ref) {\n let { swiper, extendParams, on, emit } = _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__)\n 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 }\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)\n 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 // 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 /* eslint-disable no-underscore-dangle */\n var eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed)\n return self;\n if (typeof handler !== 'function')\n return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event])\n 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)\n return self;\n if (typeof handler !== 'function')\n 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)\n return self;\n if (typeof handler !== 'function')\n 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)\n return self;\n if (!self.eventsAnyListeners)\n 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)\n return self;\n if (!self.eventsListeners)\n return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n }\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)\n return self;\n if (!self.eventsListeners)\n 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 }\n else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n };\n function 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 }\n else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n }\n else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\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))\n width = 0;\n if (Number.isNaN(height))\n height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n }\n function 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 { wrapperEl, slidesEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = 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 }\n else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n }\n else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\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 }\n else if (swiper.grid) {\n swiper.grid.unsetSlides();\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])\n slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none')\n continue; // eslint-disable-line\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 }\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 }\n else {\n const { clientWidth, offsetWidth } = 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)\n slideSize = Math.floor(slideSize);\n }\n else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths)\n 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)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000)\n slidePosition = 0;\n if (params.roundLengths)\n slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0)\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n }\n else {\n if (params.roundLengths)\n slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0)\n 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 // 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)\n 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)\n 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)\n 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)\n return -offsetBefore;\n if (snap > maxSnap)\n 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)\n swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded)\n swiper.el.classList.add(backFaceHiddenClass);\n }\n else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n }\n function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n }\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 }\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)\n break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n }\n else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\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 // Update Height\n if (newHeight || newHeight === 0)\n swiper.wrapperEl.style.height = `${newHeight}px`;\n }\n function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n }\n function 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 { slides, rtlTranslate: rtl, snapGrid } = swiper;\n if (slides.length === 0)\n return;\n if (typeof slides[0].swiperSlideOffset === 'undefined')\n swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl)\n offsetCenter = translate;\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 }\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 }\n function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd, progressLoop } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n }\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)\n progress = 0;\n if (isEndRounded)\n 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 }\n else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1)\n progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight)\n swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n }\n function updateSlidesClasses() {\n const swiper = this;\n const { slides, params, slidesEl, activeIndex } = 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)\n slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length)\n slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n }\n else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\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 }\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 }\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 // 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 }\n const processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params)\n 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 }\n else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl)\n lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl)\n lazyEl.remove();\n }\n };\n const unlazy = (swiper, index) => {\n if (!swiper.slides[index])\n return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl)\n imageEl.removeAttribute('loading');\n };\n const preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params)\n return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0)\n 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))\n 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)\n unlazy(swiper, realIndex);\n }\n }\n else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n };\n function getActiveIndexByTranslate(swiper) {\n const { slidesGrid, params } = 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 }\n else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\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')\n activeIndex = 0;\n }\n return activeIndex;\n }\n function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const { snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex } = 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 }\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)\n 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 // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n }\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 }\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 }\n else {\n realIndex = activeIndex;\n }\n }\n else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n }\n function 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 }\n else {\n swiper.clickedIndex = slideIndex;\n }\n }\n else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n }\n var update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n };\n function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const { params, rtlTranslate: rtl, translate, wrapperEl } = 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)\n currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n }\n function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n }\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 }\n else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n }\n else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\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 }\n else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n }\n function minTranslate() {\n return -this.snapGrid[0];\n }\n function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n }\n function 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 { params, wrapperEl } = 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)\n newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate)\n newTranslate = maxTranslate;\n else\n newTranslate = translate;\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 }\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 }\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)\n return;\n if (e.target !== this)\n 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 }\n var translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n };\n function setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n }\n function transitionEmit(_ref) {\n let { swiper, runCallbacks, direction, step } = _ref;\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex)\n dir = 'next';\n else if (activeIndex < previousIndex)\n dir = 'prev';\n else\n 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 }\n else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n }\n function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode)\n return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n }\n function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode)\n return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n }\n var transition = {\n setTransition,\n transitionStart,\n transitionEnd\n };\n function 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)\n slideIndex = 0;\n const { params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl, enabled } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) {\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)\n 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 }\n else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\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 // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex)\n direction = 'next';\n else if (slideIndex < activeIndex)\n direction = 'prev';\n else\n direction = 'reset';\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 }\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 }\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 }\n else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed)\n return;\n if (e.target !== this)\n return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n }\n function 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 if (swiper.destroyed)\n return;\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 }\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 }\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 { centeredSlides } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n }\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 }\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 /* eslint no-unused-vars: \"off\" */\n function 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 { enabled, params, animating } = swiper;\n if (!enabled || swiper.destroyed)\n 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)\n 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 /* eslint no-unused-vars: \"off\" */\n function 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 { params, snapGrid, slidesGrid, rtlTranslate, enabled, animating } = swiper;\n if (!enabled || swiper.destroyed)\n return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding)\n 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)\n 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)\n 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 }\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 /* eslint no-unused-vars: \"off\" */\n function 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 if (swiper.destroyed)\n return;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n }\n /* eslint no-unused-vars: \"off\" */\n function 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 if (swiper.destroyed)\n return;\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 }\n else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n }\n function slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed)\n return;\n const { params, slidesEl } = 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)\n 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 }\n else {\n swiper.slideTo(slideToIndex);\n }\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 }\n else {\n swiper.slideTo(slideToIndex);\n }\n }\n else {\n swiper.slideTo(slideToIndex);\n }\n }\n var slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n };\n function loopCreate(slideRealIndex) {\n const swiper = this;\n const { params, slidesEl } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled)\n 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 }\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 }\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 }\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 }\n else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n }\n function loopFix(_temp) {\n let { slideRealIndex, slideTo = true, direction, setTranslate, activeSlideIndex, byController, byMousewheel } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop)\n return;\n swiper.emit('beforeLoopFix');\n const { slides, allowSlidePrev, allowSlideNext, slidesEl, params } = swiper;\n const { centeredSlides } = 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 }\n else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n }\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 }\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 }\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 }\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)\n prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n }\n else {\n prependSlidesIndexes.push(cols - index - 1);\n }\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)\n appendSlidesIndexes.push(slideIndex);\n });\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 }\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 }\n else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n }\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 }\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 }\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 }\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)\n c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n }\n else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n }\n function loopDestroy() {\n const swiper = this;\n const { params, slidesEl } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled)\n return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n }\n var loop = {\n loopCreate,\n loopFix,\n loopDestroy\n };\n function setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode)\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n }\n function unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n }\n var grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n };\n // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n function closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow())\n return null;\n if (el.assignedSlot)\n 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 }\n function preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const { params } = 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 }\n function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent)\n 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 }\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 { params, touches, enabled } = swiper;\n if (!enabled)\n return;\n if (!params.simulateTouch && e.pointerType === 'mouse')\n 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))\n return;\n }\n if ('which' in e && e.which === 3)\n return;\n if ('button' in e && e.button > 0)\n return;\n if (data.isTouched && data.isMoved)\n return;\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 // 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))\n return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\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)\n 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 }\n function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled)\n return;\n if (!params.simulateTouch && event.pointerType === 'mouse')\n return;\n let e = event;\n if (e.originalEvent)\n e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null)\n return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId)\n 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)\n return;\n }\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 }\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)\n 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 }\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 }\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 // 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 // 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 }\n else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode)\n return;\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n }\n function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent)\n e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null)\n return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId)\n return;\n targetTouch = e;\n }\n else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId)\n 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 { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled)\n return;\n if (!params.simulateTouch && e.pointerType === 'mouse')\n 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 // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\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)\n 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 }\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 // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n }\n else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n }\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)\n swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\n else\n swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n }\n else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n }\n else {\n swiper.slideTo(stopIndex);\n }\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 }\n else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n }\n else {\n swiper.slideTo(stopIndex);\n }\n }\n }\n function onResize() {\n const swiper = this;\n const { params, el } = swiper;\n if (el && el.offsetWidth === 0)\n return;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\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 }\n else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n }\n else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n }\n function onClick(e) {\n const swiper = this;\n if (!swiper.enabled)\n return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks)\n e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n }\n function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled)\n return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0)\n 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 }\n else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n }\n function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n }\n function onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded)\n return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n }\n const events = (swiper, method) => {\n const document = getDocument();\n const { params, el, wrapperEl, device } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\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 // 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 // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n }\n else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n };\n function attachEvents() {\n const swiper = this;\n const { params } = 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 }\n function detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n }\n var events$1 = {\n attachEvents,\n detachEvents\n };\n const isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n };\n function setBreakpoint() {\n const swiper = this;\n const { realIndex, initialized, params, el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0)\n return;\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)\n 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 }\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 // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined')\n 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 }\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 }\n else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n }\n function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl)\n 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 { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n }\n else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n }\n var breakpoints = {\n setBreakpoint,\n getBreakpoint\n };\n function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n }\n else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n }\n function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, el, device } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n }\n function removeClasses() {\n const swiper = this;\n const { el, classNames } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n }\n var classes = {\n addClasses,\n removeClasses\n };\n function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = 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 }\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 }\n var checkOverflow$1 = {\n checkOverflow\n };\n var defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n };\n function 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])\n params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n }\n /* eslint no-param-reassign: \"off\" */\n const 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 };\n const extendedDefaults = {};\n class 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 }\n else {\n [el, params] = args;\n }\n if (!params)\n params = {};\n params = extend({}, params);\n if (el && !params.el)\n 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 // 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 // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\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 // 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 // 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 // Init\n if (swiper.params.init) {\n swiper.init();\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 { slidesEl, params } = 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 { slidesEl, params } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled)\n 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)\n 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)\n 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)\n 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)\n 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 { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number')\n return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize)\n 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)\n breakLoop = true;\n }\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 }\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)\n return;\n const { snapGrid, params } = 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 }\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 }\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 }\n else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate)\n swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr')\n 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 }\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)\n return true;\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized)\n return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false)\n return swiper;\n swiper.emit('beforeInit');\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n // Add Classes\n swiper.addClasses();\n // Update size\n swiper.updateSize();\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\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 }\n else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\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 }\n else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\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 { params, el, wrapperEl, slides } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n // Init Flag\n swiper.initialized = false;\n // Detach events\n swiper.detachEvents();\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\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 // 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__)\n 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 }\n Object.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n });\n Swiper.use([Resize, Observer]);\n function Virtual(_ref) {\n let { swiper, extendParams, on, emit } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n }\n else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n }\n else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides, loop: isLoop } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const { from: previousFrom, to: previousTo, slides, slidesGrid: previousSlidesGrid, offset: previousOffset } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate)\n offsetProp = 'right';\n else\n offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n }\n else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides)\n offset += swiper.slidesGrid[0];\n }\n else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides)\n offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n }\n else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n }\n else {\n if (i > previousTo)\n appendIndexes.push(slideIndex);\n if (i < previousFrom)\n prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n }\n else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i])\n swiper.virtual.slides.push(slides[i]);\n }\n }\n else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i])\n swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n }\n else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null)\n return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex)\n activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n }\n else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex)\n activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled)\n return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update();\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled)\n return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n }\n else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled)\n return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n }\n /* eslint-disable consistent-return */\n function Keyboard(_ref) {\n let { swiper, extendParams, on, emit } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled)\n return;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent)\n e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl)\n swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0)\n continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView)\n return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl)\n swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl)\n swiper.slidePrev();\n }\n else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n }\n if (isPageDown || isArrowDown)\n swiper.slideNext();\n if (isPageUp || isArrowUp)\n swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled)\n return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled)\n return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n }\n /* eslint-disable consistent-return */\n function Mousewheel(_ref) {\n let { swiper, extendParams, on, emit } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n }\n else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled)\n return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled)\n return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n }\n else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n }\n else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled)\n return;\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`))\n return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges)\n return true;\n if (e.originalEvent)\n e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY))\n delta = -data.pixelX * rtlFactor;\n else\n return true;\n }\n else if (Math.abs(data.pixelY) > Math.abs(data.pixelX))\n delta = -data.pixelY;\n else\n return true;\n }\n else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0)\n return true;\n if (params.invert)\n delta = -delta;\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate())\n positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate())\n positions = swiper.maxTranslate();\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested)\n e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n }\n else {\n animateSlider(newEvent);\n }\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n }\n else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate())\n position = swiper.minTranslate();\n if (position <= swiper.maxTranslate())\n position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n }\n else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n // Emit event\n if (!ignoreWheelEvents)\n emit('scroll', e);\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled)\n return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled)\n return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled)\n enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled)\n disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n }\n function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n }\n function Navigation(_ref) {\n let { swiper, extendParams, on, emit } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res)\n return res;\n }\n if (el) {\n if (typeof el === 'string')\n 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)\n 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')\n 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 { nextEl, prevEl } = 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)\n 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)\n 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))\n 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 { nextEl, prevEl } = 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 }\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 { nextEl, prevEl } = 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 { nextEl, prevEl } = 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)))\n return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n }\n else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n }\n function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n }\n function Pagination(_ref) {\n let { swiper, extendParams, on, emit } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n if (!bulletEl)\n return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index)\n return;\n swiper.slideToLoop(index);\n }\n else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled())\n return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n }\n else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n }\n else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n }\n else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n }\n else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n }\n else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n }\n else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0)\n emit('paginationRender', subEl);\n }\n else {\n if (subElIndex === 0)\n emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled())\n return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n }\n else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n }\n else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n }\n else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el)\n return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0)\n return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el)\n return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1)\n el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled())\n return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets)\n swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el)\n return;\n const params = swiper.params.pagination;\n let { el } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n }\n else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let { el } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n }\n else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let { el } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let { el } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n }\n function Scrollbar(_ref) {\n let { swiper, extendParams, on, emit } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\n return;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { dragEl, el } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n }\n else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n }\n else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\n return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\n return;\n const { scrollbar } = swiper;\n const { dragEl, el } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n }\n else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n }\n else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n }\n else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { el } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, wrapperEl } = swiper;\n const { el, dragEl } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, wrapperEl } = swiper;\n const { el, dragEl } = scrollbar;\n if (!isTouched)\n return;\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, wrapperEl } = swiper;\n const { el } = scrollbar;\n if (!isTouched)\n return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const { scrollbar, params } = swiper;\n const el = scrollbar.el;\n if (!el)\n return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target)\n return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\n return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\n return;\n events('off');\n }\n function init() {\n const { scrollbar, el: swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el)\n return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length)\n return;\n }\n else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0)\n el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el)\n return;\n const params = swiper.params.scrollbar;\n let { el } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n }\n else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { el } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n }\n function Parallax(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n }\n else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n }\n else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n }\n else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n }\n else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const { el, slides, progress, snapGrid, isElement } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const { el, hostEl } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0)\n parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled)\n return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled)\n return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled)\n return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled)\n return;\n setTransition(duration);\n });\n }\n function Zoom(_ref) {\n let { swiper, extendParams, on, emit } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2)\n return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2)\n return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector))\n return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0)\n return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector))\n return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0)\n return true;\n return false;\n }\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e))\n return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl)\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n }\n else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e))\n return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0)\n evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e))\n return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout')\n return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0)\n evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl)\n return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n }\n else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl)\n return;\n if (image.isTouched)\n return;\n if (device.android && e.cancelable)\n e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e))\n return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl)\n return;\n if (!image.isTouched || !gesture.slideEl)\n return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight)\n return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const { originX, originY } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n // Velocity\n if (!velocity.prevPositionX)\n velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY)\n velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime)\n velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2)\n velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2)\n velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl)\n return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n }\n else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n }\n else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl)\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n }\n else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n }\n else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n }\n else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n }\n else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl)\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n }\n else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled)\n return;\n zoom.enabled = true;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled)\n return;\n zoom.enabled = false;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled)\n return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled)\n return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n }\n /* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n function Controller(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n }\n else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2)\n return 0;\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed)\n return;\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed)\n return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled)\n return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control)\n return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n }\n else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed)\n return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed)\n return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n }\n function A11y(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0)\n return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32)\n return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass)))\n return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n }\n else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n }\n else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation)\n return;\n const { nextEl, prevEl } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n }\n else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n }\n else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination())\n return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n }\n else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked)\n return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl))\n return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible)\n return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents)\n return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n }\n else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n // Slide\n initSlides();\n // Navigation\n let { nextEl, prevEl } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion)\n liveRegion.remove();\n let { nextEl, prevEl } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled)\n return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled)\n return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled)\n return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled)\n return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled)\n return;\n destroy();\n });\n }\n function History(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n }\n else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled)\n return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n }\n else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/')\n root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n }\n else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n }\n else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n }\n else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history)\n return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n }\n function HashNavigation(_ref) {\n let { swiper, extendParams, emit, on } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash)\n return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex))\n return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled)\n return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n }\n else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled)\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n }\n /* eslint no-underscore-dangle: \"off\" */\n /* eslint no-use-before-define: \"off\" */\n function Autoplay(_ref) {\n let { swiper, extendParams, on, emit, params } = _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)\n return;\n if (e.target !== swiper.wrapperEl)\n 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)\n return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n }\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 }\n else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl)\n 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)\n 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)\n 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 }\n else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n }\n else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n }\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 }\n else {\n requestAnimationFrame(() => {\n proceed();\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)\n 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 }\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)\n return;\n if (autoplayTimeLeft < 0)\n autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running)\n return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n }\n else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running)\n 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')\n return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused)\n return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse')\n 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 }\n else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running)\n return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n }\n else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running)\n 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)\n 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)\n resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running)\n return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n }\n function Thumb(_ref) {\n let { swiper, extendParams, on } = _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)\n return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null)\n return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n }\n else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n }\n else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized)\n 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 }\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)\n return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\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 }\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 }\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 }\n else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n }\n else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1)\n ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper)\n 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 }\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)\n return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n }\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)\n return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed)\n return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n }\n function freeMode(_ref) {\n let { swiper, extendParams, emit, once } = _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)\n 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)\n return;\n const { touchEventsData: data, touches } = 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 { currentPos } = _ref2;\n if (swiper.params.cssMode)\n return;\n const { params, wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = 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 }\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 }\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)\n 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 }\n else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides)\n needsLoopFix = true;\n }\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 }\n else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides)\n needsLoopFix = true;\n }\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 }\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 }\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 }\n else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n }\n else {\n momentumDuration = params.speed * 2.5;\n }\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)\n return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed)\n return;\n swiper.transitionEnd();\n });\n }, 0);\n });\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)\n return;\n swiper.transitionEnd();\n });\n }\n }\n else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n }\n function Grid(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n }\n else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const { slidesPerGroup } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const { rows, fill } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n }\n else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const { centeredSlides, roundLengths } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths)\n slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0])\n newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const { params, el } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n }\n else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n }\n function appendSlide(slides) {\n const swiper = this;\n const { params, slidesEl } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n }\n else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i])\n appendElement(slides[i]);\n }\n }\n else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n }\n function prependSlide(slides) {\n const swiper = this;\n const { params, activeIndex, slidesEl } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n }\n else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i])\n prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n }\n else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n }\n function addSlide(index, slides) {\n const swiper = this;\n const { params, activeIndex, slidesEl } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i])\n slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n }\n else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n }\n else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n }\n function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove])\n swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex)\n newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove])\n swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex)\n newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n }\n else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n }\n function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n }\n function Manipulation(_ref) {\n let { swiper } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n }\n function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective, recreateShadows, getEffectParams } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect)\n 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)\n return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect)\n return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect)\n return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows)\n 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)\n return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n }\n function effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n }\n function effectVirtualTransitionEnd(_ref) {\n let { swiper, duration, transformElements, allSlides } = _ref;\n const { activeIndex } = 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 }\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)\n return;\n if (!swiper || swiper.destroyed)\n return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n }\n function EffectFade(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const { slides } = 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)\n tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n }\n function EffectCube(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore)\n shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter)\n shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const { el, wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, browser } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n }\n else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n }\n else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n }\n else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n }\n else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl)\n wrapperRotate = -slideIndex * 90 - progress * 90;\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) {\n wrapperRotate += 0.001;\n }\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n }\n else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const { el, slides } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl)\n shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n }\n function createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n }\n function EffectFlip(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore)\n shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter)\n shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n }\n else if (rtl) {\n rotateY = -rotateY;\n }\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n }\n function EffectCoverflow(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001)\n translateX = 0;\n if (Math.abs(translateY) < 0.001)\n translateY = 0;\n if (Math.abs(translateZ) < 0.001)\n translateZ = 0;\n if (Math.abs(rotateY) < 0.001)\n rotateY = 0;\n if (Math.abs(rotateX) < 0.001)\n rotateX = 0;\n if (Math.abs(scale) < 0.001)\n scale = 0;\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl)\n shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl)\n shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n }\n function EffectCreative(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string')\n return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const { slides, wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n }\n else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) {\n val += 0.001;\n }\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n }\n function EffectCards(_ref) {\n let { swiper, extendParams, on } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const { slides, activeIndex, rtlTranslate: rtl } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n }\n else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n }\n else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl)\n shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n }\n /**\n * Swiper 11.0.7\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n // Swiper Class\n const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\n Swiper.use(modules);\n return Swiper;\n})();\nexports.default = Swiper;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst timeToRead = {\n /**\n * Initialises the functionality.\n * Checks if the element has a data-target attribute and if so, calculates the time to read the content and updates the element's text content.\n * https://w3collective.com/calculate-reading-time-javascript/\n *\n * @param {HTMLElement} el - The element to initialise the functionality on.\n * @returns {void}\n *\n * @example\n *\n * \n */\n init: function (el) {\n const text = el.dataset.target ? document.getElementById(el.dataset.target)?.innerText : null;\n if (text) {\n const wpm = 225;\n const words = text.trim().split(/\\s+/).length;\n const time = Math.ceil(words / wpm);\n const loc = el.dataset.loc ? el.dataset.loc : '';\n el.innerText = loc.replace('%time%', time.toString());\n }\n },\n};\nexports.default = timeToRead;\n","\"use strict\";\n/**\n *\n * Export common modules\n *\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.components = exports.common = void 0;\nconst accordionTabs_1 = __importDefault(require(\"./helpers/accordionTabs\"));\nconst lazyLoadMedia_1 = __importDefault(require(\"./helpers/lazyLoadMedia\"));\nconst media_carousel_1 = __importDefault(require(\"./components/media-carousel\"));\nconst toggle_1 = __importDefault(require(\"./helpers/toggle\"));\nconst quick_search_1 = __importDefault(require(\"./components/quick-search\"));\nconst tabs_1 = __importDefault(require(\"./helpers/tabs\"));\nconst timeToRead_1 = __importDefault(require(\"./helpers/timeToRead\"));\nconst video_1 = __importDefault(require(\"./helpers/video\"));\nconst media_gallery_1 = __importDefault(require(\"./helpers/media-gallery\"));\nconst site_search_1 = __importDefault(require(\"./components/site-search\"));\nconst listing_filters_1 = __importDefault(require(\"./components/listing-filters\"));\nconst select_1 = __importDefault(require(\"./helpers/select\"));\nconst hero_animate_1 = __importDefault(require(\"./helpers/hero-animate\"));\nconst js_filter_1 = __importDefault(require(\"./helpers/js-filter\"));\n//import charts from './helpers/charts';\nconst common = {\n accordionTabs: accordionTabs_1.default,\n lazyLoadMedia: lazyLoadMedia_1.default,\n toggle: toggle_1.default,\n video: video_1.default,\n tabs: tabs_1.default,\n timeToRead: timeToRead_1.default,\n initMediaGallery: media_gallery_1.default,\n select: select_1.default,\n heroAnimate: hero_animate_1.default,\n jsFilter: js_filter_1.default\n};\nexports.common = common;\nconst components = {\n mediaCarousel: media_carousel_1.default,\n quickSearch: quick_search_1.default,\n siteSearch: site_search_1.default,\n listingFilters: listing_filters_1.default\n};\nexports.components = components;\nexports.default = common;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Examples:\n *\n * \n *\n * Video element could have data-lazy-play attribute when the video will play/pause automatically when it is on/off screen. data-lazy-play attribute will have a value 'done' right after the video starts playing at the first time.\n */\nconst OBSERVER_SETTINGS = {\n rootMargin: '100px 0px 100px 0px',\n threshold: 0\n};\nconst loadLazyMedia = function (el) {\n if (el.tagName === 'VIDEO') {\n const sourceEls = el.querySelectorAll('source[data-lazy-src]');\n sourceEls.forEach(sourceEl => {\n if (sourceEl.dataset.lazySrc) {\n sourceEl.setAttribute('src', sourceEl.dataset.lazySrc);\n }\n });\n el.load();\n }\n};\nconst videoCanPlay = function (evt) {\n const el = evt.target;\n el.removeEventListener('canplay', videoCanPlay);\n el.setAttribute('data-lazy-play', 'done');\n};\nlet lazyLoadMedia = {\n init: function () {\n const lazyLoadEls = document.querySelectorAll('[data-lazy-src]');\n const lazyPlayEls = document.querySelectorAll('video[data-lazy-play]');\n console.log('lazyLoadMedia.init()', 'Found ' + lazyLoadEls.length + ' lazy load elements and ' + lazyPlayEls.length + ' lazy play elements.');\n if ('IntersectionObserver' in window) {\n // IntersectionObserver is supported\n //\n // Lazy play observer\n //\n const lazyPlayObserver = new IntersectionObserver(function (entries, _) {\n entries.forEach(entry => {\n if (entry.isIntersecting && entry.target.offsetParent !== null) {\n if (entry.target.readyState === 4 && entry.target.getAttribute('data-lazy-play') !== 'done') {\n entry.target.play();\n }\n }\n else {\n entry.target.pause();\n }\n });\n }, OBSERVER_SETTINGS);\n lazyPlayEls.forEach(el => {\n el.addEventListener('canplay', videoCanPlay);\n lazyPlayObserver.observe(el);\n });\n //\n // Lazy load orserver\n //\n const lazyLoadObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(entry => {\n if (entry.isIntersecting && entry.target !== null) {\n loadLazyMedia(entry.target);\n observer.unobserve(entry.target);\n }\n });\n }, OBSERVER_SETTINGS);\n lazyLoadEls.forEach(el => {\n lazyLoadObserver.observe((el.tagName === 'SOURCE' ? el.parentNode : el));\n });\n }\n else {\n // IntersectionObserver is NOT supported\n console.log('lazyLoadMedia.init()', 'IntersectionObserver not supported.');\n // Load all instantly\n lazyPlayEls.forEach(el => {\n el.addEventListener('canplay', videoCanPlay);\n });\n lazyLoadEls.forEach(el => {\n loadLazyMedia((el.tagName === 'SOURCE' ? el.parentNode : el));\n });\n }\n }\n};\nexports.default = lazyLoadMedia;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFocusableChildren = exports.getBreakpoint = void 0;\n/**\n * Get current breakpoint.\n *\n * @returns {String} 2-letter code.\n */\nfunction getBreakpoint() {\n let breakpoint = 'lg';\n const breakpoints = [\n { id: 'xs', width: 672 },\n { id: 'sm', width: 1056 },\n { id: 'md', width: 1312 },\n ];\n for (let i = 0; i < breakpoints.length; i++) {\n const item = breakpoints[i];\n if (window.innerWidth < item.width) {\n breakpoint = item.id;\n break;\n }\n }\n return breakpoint;\n}\nexports.getBreakpoint = getBreakpoint;\n/**\n * Get focusable children for given element.\n *\n * @param {Element|null} [element] Container to check. If empty, fetches all elements from current document.\n * @param {object} [options] Options to specify what rules are checked.\n * @param {boolean} [checkHidden] Whether elements with hidden attribute are excluded. Default is true.\n * @param {boolean} [checkDisabled] Whether elements with disabled attribute are excluded. Default is true.\n * @param {boolean} [checkTabIndex] Whether elements with negative tabindex are excluded. Default is true.\n * @param {boolean} [checkVisibility] Whether non-visible elements are excluded. Default is true.\n * @returns {Element[]} Array of focusable elements.\n */\nfunction getFocusableChildren(element = null, options = {}) {\n const selectors = [\n 'a[href]',\n 'area[href]',\n 'input:not([type=\"hidden\"]):not([type=\"radio\"])',\n 'input[type=\"radio\"]:checked',\n 'select',\n 'textarea',\n 'button',\n 'iframe',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]',\n '[tabindex]:not([tabindex^=\"-\"])',\n '[role=\"button\"]'\n ];\n const container = element || window.document;\n const focusOptions = {\n checkHidden: true,\n checkDisabled: true,\n checkTabIndex: true,\n checkVisibility: true,\n ...options\n };\n return Array.from(container.querySelectorAll(selectors.join(','))).filter((child) => {\n if (focusOptions.checkHidden && child.hidden) {\n return false;\n }\n if (focusOptions.checkDisabled && child.disabled) {\n return false;\n }\n if (focusOptions.checkTabIndex && String(child.tabindex).indexOf('-') === 0) {\n return false;\n }\n if (focusOptions.checkVisibility && (!child.offsetWidth || !child.offsetHeight || !child.getClientRects().length)) {\n return false;\n }\n return true;\n });\n}\nexports.getFocusableChildren = getFocusableChildren;\n","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mustache_1 = __importDefault(require(\"mustache\"));\nconst siteSearch = {\n processingClickEvent: null,\n baseFormProps: {},\n customFields: {},\n controller: new AbortController(),\n timer: null,\n searchDelay: 150,\n init() {\n const self = this;\n const searchTabs = document.querySelectorAll('.js-site-search');\n if (!searchTabs.length)\n return;\n console.log('site-search.init()');\n searchTabs.forEach((tab) => {\n const filters = tab.querySelector('.js-site-search-filters');\n const id = tab.id;\n if (!id)\n return false;\n const loadMoreForm = tab.querySelector('[data-search-load-more-form]');\n if (loadMoreForm) {\n self.baseFormProps[id] = Array.from(loadMoreForm.querySelectorAll('input')).filter(i => i.type === 'hidden').reduce((acc, cur) => {\n acc[cur.name] = cur.value;\n return acc;\n }, {});\n const submit = loadMoreForm.querySelector('[type=\"submit\"]');\n loadMoreForm.addEventListener('submit', (e) => {\n e.preventDefault();\n if (self.baseFormProps[id].page === '1') {\n self.baseFormProps[id].page = (parseInt(self.baseFormProps[id].page) + 1).toString();\n }\n self.getResults(id, submit);\n });\n }\n if (filters) {\n const inputs = Array.from(filters.getElementsByTagName(\"input\"));\n self.baseFormProps[id] = Array.from(filters.querySelectorAll('input')).filter(i => i.type === 'hidden').reduce((acc, cur) => {\n acc[cur.name] = cur.value;\n return acc;\n }, {});\n const submit = loadMoreForm?.querySelector('[type=\"submit\"]');\n this.saveFilters(id, inputs);\n inputs.forEach(element => {\n element.addEventListener('change', (e) => {\n self.saveFilters(id, inputs);\n self.baseFormProps[id].page = '1';\n self.getResults(id, submit);\n });\n });\n }\n tab.addEventListener('click', (e) => {\n const target = e.target.classList.contains('search-result') ? e.target : e.target.closest('.search-result');\n if (target && target.dataset?.searchItem && target.dataset?.searchItemUrl === target.getAttribute('href')) {\n e.preventDefault();\n self.sendClickEvent({\n url: target.getAttribute('href'),\n id: target.dataset?.searchItem,\n position: target.dataset?.searchItemPosition,\n term: target.dataset?.searchItemTerm,\n });\n return false;\n }\n });\n return false;\n });\n },\n saveFilters(id, inputs) {\n this.customFields[id] = [];\n inputs.forEach(input => {\n if (input.checked) {\n if (input.dataset.sort) {\n this.baseFormProps[id].sort = input.dataset.sort;\n }\n if (input.dataset.order) {\n this.baseFormProps[id].order = input.dataset.order;\n }\n if (input.dataset.customField) {\n this.customFields[id].push(input.dataset.customField);\n }\n }\n });\n },\n getResults(id, submit) {\n this.controller.abort();\n this.controller = new AbortController();\n clearTimeout(this.timer);\n this.timer = setTimeout(async () => {\n const container = document.getElementById(id);\n container?.classList.add('loading');\n const context = this.baseFormProps[id].context;\n const formData = new FormData();\n if (context === 'search_page_filtered') {\n formData.append('customFields', JSON.stringify(this.customFields[id]));\n }\n fetch('/stage-ajax/siteSearch/?' + new URLSearchParams(this.baseFormProps[id]).toString(), {\n signal: this.controller.signal,\n method: context === 'search_page_filtered' ? 'POST' : 'GET',\n body: context === 'search_page_filtered' ? formData : null,\n }).then(response => response.json())\n .then((response) => {\n if (response.page) {\n this.baseFormProps[id].page = (response.page + 1).toString();\n ;\n }\n if (response.hits) {\n const template = document.getElementById(`template-search-item-${id}`)?.textContent;\n const results = document.querySelector(`[data-search-results-container=${id}]`);\n const tabButton = document.querySelector(`[data-toggle-target=${id}]`);\n if (template && results && response.page === 1) {\n results.innerHTML = response.hits.map((item) => mustache_1.default.render(template, item)).join('');\n }\n else if (template && results) {\n const lastChild = results?.lastElementChild;\n lastChild?.insertAdjacentHTML('afterend', response.hits.map((item) => mustache_1.default.render(template, item)).join(''));\n }\n if (tabButton) {\n tabButton.textContent = tabButton.textContent?.replace(/\\d+/, response.total_hits) || '';\n }\n }\n if (response.total_hits <= response.page * response.limit) {\n submit?.remove();\n }\n })\n .catch((err) => {\n console.error(`Search err error: ${err.message}`);\n }).finally(() => {\n container?.classList.remove('loading');\n });\n }, this.searchDelay);\n },\n sendClickEvent(data) {\n if (this.processingClickEvent) {\n return;\n }\n this.processingClickEvent = data.id;\n let locationChanging = false;\n const loadTargetPath = () => {\n if (data.url && !locationChanging) {\n locationChanging = true;\n window.location = data.url;\n }\n };\n const formData = new FormData();\n formData.append('id', data.id);\n formData.append('position', data.position);\n formData.append('term', data.term);\n try {\n fetch(`/stage-ajax/siteSearch/?stage-language=${document.body.getAttribute('data-language')}&context=reportClick`, {\n method: 'POST',\n body: formData,\n }).then((res) => {\n loadTargetPath();\n }).catch((err) => {\n loadTargetPath();\n });\n return true;\n }\n catch (err) {\n if (err instanceof Error && err.name !== 'AbortError') {\n console.log(err);\n }\n }\n // Navigate to new url after small delay, even if ajax request has not completed\n setTimeout(loadTargetPath, 500);\n },\n};\nexports.default = siteSearch;\n"],"sourceRoot":""}