{"version":3,"sources":["webpack/bootstrap","../common/build/helpers/toggle.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../common/build/helpers/select.js","../common/build/components/listing-filters.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","src/js/modules/storage.ts","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../common/build/helpers/video.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/mustache/mustache.js","../common/build/helpers/media-gallery.js","../common/build/components/media-carousel.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../common/build/index.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../common/build/helpers/tabs.js","../common/build/components/quick-search.js","../common/build/helpers/hero-animate.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/createClass.js","../common/build/helpers/accordionTabs.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","src/js/modules/navigation.ts","src/js/modules/quick-search.ts","src/js/modules/site-search.ts","src/js/modules/buying-options-bar.ts","src/js/modules/location-prompts.ts","src/js/modules/google-cloud-storage-upload.js","src/js/modules/i18n.ts","src/js/modules/file-uploader.js","src/js/modules/form-analytics.js","src/js/master.ts","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../common/build/helpers/season-depending.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../common/build/helpers/timeToRead.js","../common/build/helpers/virtual-select.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js","../common/build/helpers/lazyLoadMedia.js","../common/build/components/site-search.js","../common/build/helpers/js-filter.js","../common/build/helpers/modal-dialog.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../common/build/helpers/utils.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../common/build/helpers/swiper/swiper.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","installedCssChunks","16","__webpack_require__","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","toggleElement","initToggle","toggleEl","self","this","dataset","toggleTarget","getElementById","classList","contains","addEventListener","preventDefault","toggle","isOpen","_toggleEl$parentEleme","remove","add","toggleHideSelf","toggleContent","querySelectorAll","isToggledContent","forEach","el","toggleSiblings","parentElement","sibling","targetId","default","toPropertyKey","toPrimitive","TypeError","String","Number","_objectWithoutProperties","includes","getOwnPropertySymbols","propertyIsEnumerable","ownKeys","keys","filter","getOwnPropertyDescriptor","apply","_objectSpread2","arguments","getOwnPropertyDescriptors","defineProperties","require","select","init","VirtualSelect","ele","optionHeight","_createForOfIteratorHelper","_regeneratorRuntime","_asyncToGenerator","__importDefault","mod","mustache_1","listingFilters","resultsEl","showMoreButton","countEl","searchDelay","minCharacters","controller","AbortController","timer","items","filteredItems","freeTextItems","itemTemplate","filters","searchValue","searchFields","options","limit","resultsOffset","page","noResultsTemplate","localizations","option","count","initListingFilters","log","config","listingConfig","preSelections","addEventListeners","renderResults","_this","_this$el$resultsEl","_this$el$showMoreButt","_this$el$showMoreButt2","resultsHtml","item","render","innerHTML","lastChild","lastElementChild","insertAdjacentHTML","map","join","replace","_this2","selects","alwaysShowSelectedOptionsCount","optionSelectedText","optionsSelectedText","disableSelectAll","disableAllOptionsSelectedText","silentInitialValueSet","setValue","filterResults","searchInput","querySelector","oldValue","trim","search","_this3","abort","mark","_callee","_this3$el$resultsEl","wrap","_context","prev","next","abrupt","t0","stop","_this4","hasFilters","hasSearch","match","_loop","some","_step","_iterator","done","toLowerCase","f","_typeof","a","Array","storage","local","session","check","setItem","removeItem","_arrayLikeToArray","_toConsumableArray","isArray","arrayLikeToArray","iterableToArray","unsupportedIterableToArray","iterator","asyncIterator","u","define","configurable","writable","Generator","Context","makeInvokeMethod","tryCatch","arg","h","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","setPrototypeOf","__proto__","awrap","async","reverse","pop","charAt","rval","handle","complete","finish","delegateYield","_classCallCheck","asyncGeneratorStep","_next","_throw","arrayWithHoles","iterableToArrayLimit","nonIterableRest","_defineProperty","_slicedToArray","video","addVideoElement","element","overlay","playVideo","play","focus","removeEventListener","keyPressOnPlay","from","objectToString","toString","isFunction","escapeRegExp","string","hasProperty","obj","propName","regExpTest","RegExp","test","nonSpaceRe","isWhitespace","re","testRegExp","entityMap","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","Scanner","tail","pos","view","parentContext","cache","parent","Writer","templateCache","_cache","set","clear","eos","scan","index","substring","scanUntil","lookup","primitive","intermediateValue","names","context","lookupHit","indexOf","split","clearCache","parse","template","tags","cacheKey","mustache","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","version","defaultWriter","factory","initMediaGallery","swiper_1","modal_dialog_1","utils_1","_x","_initMediaGallery","container","sliderEl","dialogEl","bullets","thumbnails","paginationSeparator","swiperIndex","setHiddenSlidesInert","sliderConfig","slider","onKeyPressClick","toggleButtonHandler","warn","useNativeDialogAsModal","reduce","parseInt","thumbnail","slide","inert","navigation","nextEl","prevEl","autoHeight","centeredSlides","slidesPerView","effect","speed","crossFade","pagination","concat","renderCustom","_","current","total","clickable","renderBullet","className","on","update","slideChange","getBreakpoint","renderFraction","currentClass","totalClass","button","closest","mediaGalleryToggle","showModal","slideTo","mediaCarousel","swiper","initMediaCarousel","swiperEl","settings","mediaGallerySettings","allowTouchMove","keyboard","watchSlidesProgress","loop","slideToClickedSlide","simulateTouch","preventClicksPropagation","preventClicks","a11y","prevSlideMessage","prevHelperText","nextSlideMessage","nextHelperText","breakpoints","1056","preventClickDeskop","slideChangeTransitionEnd","videos","pause","ol","components","common","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","accordionTabs","lazyLoadMedia","tabs","timeToRead","heroAnimate","jsFilter","quickSearch","siteSearch","Tabs","spaceBetween","_objectSpread","body","input","toggleButton","form","results","nav","term","total_hits","hits","showAllResults","templates","processingClickEvent","_document$getElementB","textContent","_this$el$toggleButton","_this$el$input","_this$el$input2","_this$el$body","_this$el$results","currentTarget","open","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","fetch","URLSearchParams","signal","response","json","_this2$el$form3","_this2$el$form4","_renderResults","showResults","catch","_this2$el$form5","locationChanging","loadTargetPath","location","JSON","stringify","_this$el$toggleButton4","_this$el$el2","_this$el$input4","_this$el$body2","_this$el$nav","_document$querySelect4","_document$querySelect3","mobileMenu","_this$el$toggleButton5","_this$el$el3","_this$el$body3","_this$el$nav2","_this$el$toggleButton6","noFocus","_this$el$results2","_this$el$results3","words","getElementsByClassName","setInterval","cw","nw","previous","newWord","animateWordBehind","_defineProperties","isMobile","innerWidth","tab","summary","hasAttribute","removeAttribute","_classPrivateFieldBase","arrayWithoutHoles","nonIterableSpread","_initListeners2","_classPrivateFieldLooseBase","_actionTriggers","trigger","onActionTriggerClick","navActionFocustrap","actionTarget","onActionKeyDown","_mobileMenuTriggers","onMobileMenuTriggerClick","_desktopMenuTriggers","onDesktopMenuTriggerClick","onOutsideClick","onDocumentKeyDown","_heightWatchElements","cb","delay","throttling","throttle","onResize","header","navHeight","_el","getBoundingClientRect","height","_headerObserver","IntersectionObserver","updateNavClass","root","threshold","rootMargin","observe","closeAllActions","Navigation","_createClass","_initListeners","_settings","defaults","intersectingClassName","actionOpenClassName","assign","entries","entry","isIntersecting","actionTrigger","documentElement","focusable","focusables","checkVisibility","firstFocusable","lastFocusable","direction","activeElement","closeAction","updateTriggerLabel","updateHeights","activeTrigger","labelOpen","labelClosed","listElementHeights","maxHeight","Math","max","style","HTMLElement","_elements","_classPrivateFieldLooseKey","_templates","_sendClickEvent","_classPrivateFieldLoo9","_classPrivateFieldLoo10","onInputKeyUp","onResultsClick","_sendClickEvent2","apiUrl","language","_renderResults2","Mustache","QuickSearch","_element$querySelecto","currentSearchTerm","defaultSettings","formElementSelector","inputElementSelector","resultsElementSelector","resultsTemplateSelector","lang","site","_classPrivateFieldLoo2","_classPrivateFieldLoo","dispatchEvent","CustomEvent","bubbles","cancelable","quickSearchItem","quickSearchItemPosition","quickSearchItemTerm","_classPrivateFieldLoo3","_classPrivateFieldLoo7","_classPrivateFieldLoo4","_classPrivateFieldLoo5","_classPrivateFieldLoo6","_classPrivateFieldLoo8","SiteSearch","dom","ajaxUrl","loadMoreForm","resultsContainer","every","attachEventListeners","onClickDelegated","onLoadMore","_clickTarget$dataset","_clickTarget$dataset2","_clickTarget$dataset3","_clickTarget$dataset4","_clickTarget$dataset5","eventTarget","clickTarget","setLoading","submitBtn","formData","FormData","formProps","fromEntries","finally","state","res","_excluded","buyingOptionsBar","buyingOptions","tyreData","selectedSize","selectedVehicle","foundSizes","buyingOptionsPopover","buyingOptionsVehicle","buyingOptionsTyreSize","buyingOptionsToggler","buyingOptionsIconToggler","tyreOptionsContainer","tyreOptionsTemplate","tyreselectorLink","buyingOptionsOpen","buyingOptionsClose","sendAnalyticsEvent","_this$buyingOptionsTy","_this$tyreOptionsCont","_this$tyreOptionsCont2","dataLayer","tyreSize","productCode","toggleBuyingOptions","show","_this$buyingOptionsBa","_this$buyingOptionsTo","_this$buyingOptionsBa2","_this$buyingOptionsTo2","_this$buyingOptionsTo3","_this$buyingOptionsTo4","_this$buyingOptionsBa3","_this$buyingOptionsTo5","sendEvent","shouldHide","display","localStorage","updatePopoverContentAndActions","vehicleInfo","license","manufacturer","model","year","_this$tyreOptionsCont3","_this$tyreOptionsCont4","_this$tyreOptionsCont5","tyreSizeInfo","width","rim","changeSize","_self$tyreOptionsCont","_self$tyreOptionsCont2","sizeId","size","evt","btn","gtmButton","tagName","storeBuyingOptions","dataToStore","sizes","w","li","sr","info","extra","loadIndex","speedRating","productInfo","sessionStorage","loadBuyingOptions","sessionOptionsData","getItem","getSelectedTyreData","storedData","text","updateFoundSizes","buyingOptionsTyreSizes","scrollToTyreselector","tyreselector","scrollIntoView","behavior","tyreselectorToggler","click","_this$buyingOptionsBa4","_this$buyingOptionsBa5","_this$buyingOptionsPo","_this$buyingOptionsPo2","_this$buyingOptionsBa6","_this$buyingOptionsBa7","_this$buyingOptionsTo6","_this$buyingOptionsBa8","_this$buyingOptionsTo7","_this$buyingOptionsIc","_this$tyreselectorLin","buyingOptionsData","animations","animation","animate","transform","onfinish","isAdmin","locationPrompts","redirect","address","matchPage","targetAddress","targetAddressHost","URL","host","langVersionUrls","matchedPageUrl","find","pathname","hideCountryPrompt","chosenValue","rule","locationPrompt","blur","uuid","analytics_id","redirection_target","showCountryPrompt","createPromptElement","insertBefore","firstChild","sendToAnalytics","campaign_popover_id","eventName","optional","dataObject","geo_from","origin","geo_to","location_prompts","checkRedirectRules","rules","_partition","array","pass","fail","idx","arr","partition","automatic_redirect","_partition2","automaticRules","promptRules","isAdminView","testParam","countryCodes","location_codes","subdivisionCodes","subdivision_codes","countryCode","subdivisionCode","_ret","checkCampaignRules","_ret2","_loop2","skipByABTest","random","ab_test_ratio","campaign_popover_show","checkRules","_window$location_prom","_window$location_prom2","campaignRules","promptShown","userLocation","userLocationData","currentLanguage","headers","_id","_abortController","_file","_uploadResult","_listeners","_trigger","_setUploadResult","_parseRangeHeader","_fetchUploadStatus","_uploadNextChunk","_trigger2","callback","_setUploadResult2","result","newResult","oldResult","status","progress","_parseRangeHeader2","range","lastByte","_fetchUploadStatus2","_x2","_x3","_fetchUploadStatus3","_callee2","contentLength","_context2","bytesUploaded","_uploadNextChunk2","_uploadNextChunk3","_callee3","statusResult","file","end","newBytesUploaded","responseBody","_context3","getUploadResult","getFile","min","chunkSize","resultUrl","mediaLink","GoogleCloudStorageUpload","crypto","randomUUID","_createUpload","_args","contentType","startUpload","upload","i18n","I18N","_translations","translations","params","replacePlaceholders","translate","param","fileUploaderTranslations","addTranslations","icons","_fileUploads","_maxFileCount","_toggleFormSubmit","_isMaxFiles","_renderFileTemplate","_toggleFormSubmit2","hasActiveUploads","_item$getUploadResult2","disabled","_isMaxFiles2","_upload$getUploadResu","_renderFileTemplate2","filesize","toFixed","FileUploader","fileInput","fileContainer","dragArea","multiple","maxFiles","originalName","hiddenInput","files","_upload$getFile","_upload$getFile2","uploadInstance","uploadId","getId","html","fileEl","fileStatus","fileButtons","updateHiddenInput","fileUrls","_item$getUploadResult","updateFileCount","fileLimitReached","hidden","removeFile","updateFileView","visibleButtons","icon","statusText","formattedProgress","floor","action","cancelUpload","pauseUpload","createUpload","uploadContext","analytics","_storageId","sendToGTM","eventType","form_campaign","queueStageFormSubmitEvent","pageUrl","time","Date","now","resolveStageFormSubmitEvent","_form","_submitting","FormAnalytics","_form$querySelector","_form$querySelector$d","_form$querySelector2","_form$querySelector2$","gtmEventType","gtmEventName","defaultPrevented","submit","Hatch","seasonDependingContent","navEl","quickSearchEl","siteSearchEl","toggles","_step2","_iterator2","tooltips","_step3","_iterator3","collection","contentCardsliders","_ref","_step4","_iterator4","productSliderElements","hatchInit","productAwardSliders","_ref2","_step5","_iterator5","a11ymodals","phoneInputs","_step6","_iterator6","comboDateInputs","_step7","_iterator7","guaranteeForms","_step8","_iterator8","hakkaForm","dotForms","_ref3","_step9","_iterator9","feedbackTopics","_step10","_iterator10","gotoEls","_ref4","_step11","_iterator11","triggerAnalyticsEls","mediaCarousels","_step12","_iterator12","csEls","_ref5","interactiveImages","_step13","_iterator13","image","tsElements","_ref6","comboboxElements","_step14","_iterator14","gdprElements","cmTyreselectors","_ref7","_step15","_iterator15","tyreAwards","_step16","_iterator16","awards","countdownElements","tabbedContentElements","_step17","_iterator17","tabsElement","paginatedForms","_step18","_iterator18","careersElement","youtubeSliders","_step19","_iterator19","_arrayWithHoles","SeasonDependingContent","elements","geoSeason","hiddenClassName","fallbackClassName","_init","getSeason","showSeasonContent","seasonFromStorage","season","visibleSeason","visibleElement","showElement","fallbackElement","_fallbackElement$pare","children","child","_n","F","innerText","ceil","loc","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","props","descriptor","_toPropertyKey","hint","prim","_toPrimitive","Utils","instance","Constructor","protoProps","staticProps","defaultValue","isEmpty","cloneArray","inputArr","splice","minN","maxN","normalize","tempElement","visibility","whiteSpace","fontSize","getComputedStyle","fontFamily","textWidth","clientWidth","dom_utils_typeof","_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","$selector","$parentEle","events","removeArrayEmpty","$eleArray","k","prop","newTabIndex","tabIndex","enumerableOnly","symbols","sym","source","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","setPropsFromSelect","convertPropToDataAttr","selectedValue","optionsList","getNativeOptions","$container","$option","label","selected","$newEle","setAttrFromEle","$form","validate","hasError","formReset","disableChangeEvent","_this$virtualSelect","setValueMethod","_this$virtualSelect2","setOptionsMethod","_this$virtualSelect3","setDisabledOptionsMethod","_this$virtualSelect4","setEnabledOptionsMethod","isSelected","toggleAllOptions","isAllSelected","addOption","getNewValue","getDisplayValue","getSelectedOptions","getDisabledOptions","openDropbox","closeDropbox","enable","disable","destroy","isRequired","toggleRequired","uniqueId","wrapperClasses","valueTooltip","showValueAsTags","getTooltipAttrText","placeholder","clearButtonTooltip","clearButtonText","ariaLabelledbyText","ariaLabelledby","ariaLabelText","ariaLabelClearBtnTxt","ariaLabelClearButtonText","isExpanded","additionalClasses","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","keyCode","focusFirstVisibleOption","selectFocusedOption","focusOption","selectedValues","$target","removeValue","toggleDropbox","stopPropagation","setVisibleOptions","hasClass","onGroupTitleClick","selectOption","toggleGroupTitleCheckbox","toggleGroupOptions","removeOptionFocus","setSearchValue","focusSearchInput","setOptionsContainerHeight","$vscompEle","mutationObserver","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","zIndex","maxValues","minValues","secureText","popupDropboxBreakpoint","onServerSearch","emptyValue","maxWidth","selectedOptions","tooltipEnterDelay","searchValueOriginal","optionsCount","getOptionsCount","halfOptionsCount","optionsHeight","getOptionsHeight","getUniqueId","defaultOptions","setEnabledOptions","toggleSelectAll","addOptionMethod","getNewValueMethod","getDisplayValueMethod","getSelectedOptionsMethod","getDisabledOptionsMethod","openMethod","close","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","top","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","styles","setStyles","containerStyles","getData","optionDetails","$valueTag","selectedOptionIndex","scrollTop","getGroupValue","preparedValue","getFirstVisibleOptionIndex","ellipsisOnly","allowHtml","tootltipText","containsHTML","replaceDoubleQuotesWithHTML","getAttributesText","lastOption","displayValues","_ref3$fullDetails","_ref3$keepSelectionOr","_data","disabledOptionsValueMapping","_result$push","structureOptionGroup","availableHeight","innerHeight","$sibling","getRandomInt","margin","transitionDistance","hideArrowIcon","disableManualAction","disableUpdatePosition","afterShow","afterShowPopper","afterHide","afterHidePopper","dropboxPopover","PopoverComponent","isSilent","isSilentOpen","setAria","setDropboxWrapperWidth","changeTabIndex","moveSelectedOptionsFirst","setScrollTop","isPopupActive","focusElementOnOpen","isSilentClose","hide","$focusableEle","getSibling","$newFocusedEle","$focusedEle","firstVisibleOptionIndex","toggleOptionFocusedState","toggleFocusedProp","moveFocusedOptionToView","newScrollTop","containerRect","optionRect","containerTop","containerBottom","bottom","containerHeight","optionTop","optionBottom","optionOffsetTop","offsetTop","optionsTop","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","startsWith","childArray","setSelectedOptions","removeEvents","$secureDiv","$secureText","createTextNode","nodeValue","onFormReset","onFormSubmit","onResizeMethod","getAttrProps","NodeList","left","horizontal","vertical","pageXOffset","pageYOffset","right","overflow","$popperEle","$triggerEle","setPosition","$arrowEle","offset","enterDelay","exitDelay","showDuration","hideDuration","afterShowCallback","afterHideCallback","hasArrow","secondaryPosition","getAbsoluteCoords","E","$","D","S","C","P","O","T","A","x","I","scrollY","H","scrollX","L","R","getMoreVisibleSides","z","M","U","B","q","N","W","K","V","resetPosition","exitDelayTimeout","hideDurationTimeout","enterDelayTimeout","getCoords","showDurationTimeout","PopperComponent","getTime","addOrRemoveEvent","27","popComp","popper","$popover","setElementProps","renderArrow","initPopper","showOnHover","getEvents","addOrRemoveEvents","removeScrollEventListeners","removeResizeEventListeners","$scrollableElems","getScrollableParents","hideOnOuterClick","beforeShowCallback","beforeShow","beforeHideCallback","beforeHide","getElement","showMethod","hideMethod","updatePositionMethod","isShown","isShownForOtherTrigger","showAfterOtherHide","getOtherTriggerPopComp","addScrollEventListeners","addResizeEventListeners","_classPrivateFieldKey","OBSERVER_SETTINGS","loadLazyMedia","sourceEl","lazySrc","load","videoCanPlay","lazyLoadEls","lazyPlayEls","lazyPlayObserver","offsetParent","readyState","lazyLoadObserver","observer","unobserve","searchTabs","filterField","_el$closest","configName","_item$_this2$filterFi","dialog","registerCloseButtons","closeButtonSelector","closeOnBackgroundClick","dialogContentSelector","preventBodyScroll","bodyPreventScrollClass","closeHandler","closeButtons","closeOnClickHandler","mutationList","scrollTo","attributes","attributeFilter","posTimeout","setScrollPositionAfterBlur","focusableChildren","getFocusableChildren","breakpoint","selectors","focusOptions","checkHidden","checkDisabled","checkTabIndex","tabindex","offsetHeight","getClientRects","Swiper","isObject$1","extend$1","ssrDocument","nodeName","createEvent","initEvent","childNodes","createElementNS","importNode","hash","hostname","protocol","getDocument","doc","support","deviceCached","browser","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","getPropertyValue","Image","screen","matchMedia","requestAnimationFrame","cancelAnimationFrame","getWindow","win","classesToTokens","classes","nextTick","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isObject","isNode","node","nodeType","extend","to","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","targetPosition","side","startPosition","startTime","duration","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","easeProgress","cos","PI","currentPosition","getSlideTransformEl","slideEl","shadowRoot","elementChildren","selector","matches","showWarning","_el$classList","elementOffset","box","clientTop","clientLeft","scrollLeft","elementStyle","elementIndex","previousSibling","elementParents","parents","elementTransitionEnd","fireCallBack","elementOuterSize","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","touchMoveStopPropagation","nested","diff","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowSlideNext","allowSlidePrev","startTranslate","setTransition","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","onClick","stopImmediatePropagation","onScroll","previousTranslate","translatesDiff","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","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","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","nextElementSibling","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","val","prevSnapIndex","normalizedSnapGrid","prevSnap","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","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","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","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","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","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","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","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","part","setHistory","currentState","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"],"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 CSS chunks\n \tvar installedCssChunks = {\n \t\t16: 0\n \t}\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\t16: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"hashed/\" + ({\"0\":\"vendors~product-slider~slider~youtube-video-slider\",\"1\":\"combobox-autocomplete\",\"3\":\"careers\",\"4\":\"customer-service\",\"5\":\"dealer-list\",\"6\":\"dealers-react\",\"7\":\"feedback-topics\",\"8\":\"form-paginator\",\"9\":\"gdpr\",\"10\":\"go-to\",\"11\":\"guarantee-form\",\"12\":\"hakka-form\",\"13\":\"hatch\",\"14\":\"input-combodate\",\"15\":\"interactive-image\",\"17\":\"nt-cm-tyreselector\",\"18\":\"nt-countdown\",\"19\":\"nt-dot-form\",\"20\":\"phoneInput\",\"21\":\"product-slider\",\"22\":\"reviews\",\"23\":\"slider\",\"25\":\"tabbed-content\",\"27\":\"tire-sizes\",\"28\":\"tooltip\",\"29\":\"trigger-analytics\",\"30\":\"tyre-awards\",\"31\":\"tyreselector\",\"32\":\"vendors~dealers-react\",\"33\":\"vendors~input-combodate\",\"34\":\"vendors~nt-countdown\",\"35\":\"vendors~phoneInput\",\"36\":\"vendors~tooltip\",\"37\":\"youtube-video-slider\"}[chunkId]||chunkId) + \".\" + {\"0\":\"2bc61e06\",\"1\":\"79b1c5fe\",\"3\":\"6dd37f18\",\"4\":\"7d255afc\",\"5\":\"c843c00b\",\"6\":\"77fda299\",\"7\":\"cfbac0f7\",\"8\":\"b692b602\",\"9\":\"c2ed4e9f\",\"10\":\"259aad47\",\"11\":\"0a4f5ca1\",\"12\":\"fc6d388d\",\"13\":\"c6d2af32\",\"14\":\"fa41bb0a\",\"15\":\"e6136051\",\"17\":\"5e7bbbf9\",\"18\":\"23449095\",\"19\":\"dcfced1a\",\"20\":\"a58247be\",\"21\":\"b867f926\",\"22\":\"7ce77f7b\",\"23\":\"f62c2254\",\"25\":\"c7214476\",\"27\":\"4642ff13\",\"28\":\"5fd3506b\",\"29\":\"8ba7a0e9\",\"30\":\"f039a0a2\",\"31\":\"fd8e5b61\",\"32\":\"97943847\",\"33\":\"ab237991\",\"34\":\"bf8f9404\",\"35\":\"cd5128d9\",\"36\":\"bcde8ae5\",\"37\":\"1c58b90e\",\"38\":\"e0a18c2e\"}[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// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"6\":1,\"14\":1,\"17\":1,\"19\":1,\"20\":1,\"21\":1,\"23\":1,\"35\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"hashed/\" + ({\"0\":\"vendors~product-slider~slider~youtube-video-slider\",\"1\":\"combobox-autocomplete\",\"3\":\"careers\",\"4\":\"customer-service\",\"5\":\"dealer-list\",\"6\":\"dealers-react\",\"7\":\"feedback-topics\",\"8\":\"form-paginator\",\"9\":\"gdpr\",\"10\":\"go-to\",\"11\":\"guarantee-form\",\"12\":\"hakka-form\",\"13\":\"hatch\",\"14\":\"input-combodate\",\"15\":\"interactive-image\",\"17\":\"nt-cm-tyreselector\",\"18\":\"nt-countdown\",\"19\":\"nt-dot-form\",\"20\":\"phoneInput\",\"21\":\"product-slider\",\"22\":\"reviews\",\"23\":\"slider\",\"25\":\"tabbed-content\",\"27\":\"tire-sizes\",\"28\":\"tooltip\",\"29\":\"trigger-analytics\",\"30\":\"tyre-awards\",\"31\":\"tyreselector\",\"32\":\"vendors~dealers-react\",\"33\":\"vendors~input-combodate\",\"34\":\"vendors~nt-countdown\",\"35\":\"vendors~phoneInput\",\"36\":\"vendors~tooltip\",\"37\":\"youtube-video-slider\"}[chunkId]||chunkId) + \".\" + {\"0\":\"e3b0c442\",\"1\":\"e3b0c442\",\"3\":\"e3b0c442\",\"4\":\"e3b0c442\",\"5\":\"e3b0c442\",\"6\":\"d9f5d49a\",\"7\":\"e3b0c442\",\"8\":\"e3b0c442\",\"9\":\"e3b0c442\",\"10\":\"e3b0c442\",\"11\":\"e3b0c442\",\"12\":\"e3b0c442\",\"13\":\"e3b0c442\",\"14\":\"5638d9b2\",\"15\":\"e3b0c442\",\"17\":\"426e2563\",\"18\":\"e3b0c442\",\"19\":\"5829c3d5\",\"20\":\"d23a0efa\",\"21\":\"1ec62d9b\",\"22\":\"e3b0c442\",\"23\":\"1ec62d9b\",\"25\":\"e3b0c442\",\"27\":\"e3b0c442\",\"28\":\"e3b0c442\",\"29\":\"e3b0c442\",\"30\":\"e3b0c442\",\"31\":\"e3b0c442\",\"32\":\"e3b0c442\",\"33\":\"e3b0c442\",\"34\":\"e3b0c442\",\"35\":\"38a97623\",\"36\":\"e3b0c442\",\"37\":\"e3b0c442\",\"38\":\"e3b0c442\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\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/system/nokiantyres/ui-renewal-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","\"use strict\";\r\n/**\r\n * A generic toggle that controls another element's visibility\r\n *\r\n * sample usage:\r\n *\r\n * \r\n *\r\n *
I am initially hidden
\r\n *\r\n * If you want to toggle only once and hide the button afterwards, use:\r\n *\r\n * \r\n *
I am initially hidden
\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst toggleElement = {\r\n /**\r\n *\r\n * @param toggleEl\r\n */\r\n initToggle: function (toggleEl) {\r\n const self = this;\r\n const target = toggleEl.dataset.toggleTarget ? document.getElementById(toggleEl.dataset.toggleTarget) : null;\r\n if (target) {\r\n // Set aria-attributes for accessibility\r\n toggleEl.setAttribute('aria-controls', toggleEl.dataset.toggleTarget);\r\n if (toggleEl.classList.contains('is-toggled') && toggleEl.getAttribute('aria-expanded') !== 'true')\r\n toggleEl.setAttribute('aria-expanded', 'true');\r\n toggleEl.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n self.toggle(toggleEl);\r\n });\r\n }\r\n },\r\n /**\r\n * Toggle function. Give the toggler as parameter.\r\n *\r\n * @param toggleEl element with js-toggle-class, for example button\r\n * @param isOpen optional boolean to force open or close\r\n */\r\n toggle: function (toggleEl, isOpen) {\r\n isOpen = typeof isOpen === 'boolean' ? isOpen : toggleEl.getAttribute('aria-expanded') !== 'true' || !toggleEl.classList.contains('is-toggled');\r\n const target = toggleEl.dataset.toggleTarget ? document.getElementById(toggleEl.dataset.toggleTarget) : null;\r\n if (target) {\r\n if (!isOpen) {\r\n target.classList.add('hidden');\r\n toggleEl.classList.remove('is-toggled');\r\n toggleEl.setAttribute('aria-expanded', 'false');\r\n }\r\n else {\r\n target.classList.remove('hidden');\r\n toggleEl.classList.add('is-toggled');\r\n toggleEl.setAttribute('aria-expanded', 'true');\r\n }\r\n // Hide toggle button if data-toggle-hide-self is set\r\n if (typeof toggleEl.dataset.toggleHideSelf !== 'undefined') {\r\n toggleEl.classList.add('hidden');\r\n }\r\n // Show/hide content in toggle button based on current state\r\n const toggleContent = toggleEl.querySelectorAll('.js-toggle__toggle');\r\n const isToggledContent = toggleEl.querySelectorAll('.js-toggle__is-toggled');\r\n if (isOpen) {\r\n toggleContent.forEach(el => el.classList.add('hidden'));\r\n isToggledContent.forEach(el => el.classList.remove('hidden'));\r\n }\r\n else {\r\n toggleContent.forEach(el => el.classList.remove('hidden'));\r\n isToggledContent.forEach(el => el.classList.add('hidden'));\r\n }\r\n }\r\n // Functionality to toggle other js-toggles inside same parentElement\r\n if (toggleEl.dataset.toggleSiblings && toggleEl.parentElement) {\r\n const siblings = toggleEl.parentElement?.querySelectorAll('.js-toggle');\r\n siblings.forEach((sibling) => {\r\n if (sibling !== toggleEl) {\r\n sibling.classList.remove('is-toggled');\r\n sibling.setAttribute('aria-expanded', 'false');\r\n const targetId = sibling.dataset.toggleTarget;\r\n if (targetId) {\r\n const target = document.getElementById(targetId);\r\n target?.classList.add('hidden');\r\n }\r\n }\r\n });\r\n }\r\n },\r\n};\r\nexports.default = toggleElement;\r\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\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}\nexport { toPrimitive as default };","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;","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import defineProperty from \"./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}\nexport { _objectSpread2 as default };","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nrequire(\"./virtual-select\");\r\nconst select = {\r\n /**\r\n * Initialises the functionality.\r\n */\r\n init: function (el) {\r\n window.VirtualSelect.init({\r\n ele: el,\r\n optionHeight: 48\r\n });\r\n },\r\n};\r\nexports.default = select;\r\n","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst mustache_1 = __importDefault(require(\"mustache\"));\r\nrequire(\"../helpers/virtual-select\");\r\n/**\r\n * Filtering dropdowns for listing pages and other compontents that filter from results\r\n * @module listingFilters\r\n * @param {Object} el - The element to attach the filters to\r\n * @param {Object} options - The options for the filters\r\n * @param {Array} items - The items to filter\r\n * @param {Object} filters - The preselected filters\r\n * @param {String} itemTemplate - The template for the items\r\n * @param {Array} searchFields - The fields to search from, eg. ['title', 'description']\r\n * @param {Number} limit - The number of items to show at once\r\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\r\n * @param {String} noResultsTemplate - The template for no results\r\n * @param {Object} localizations - The localizations for the filters\r\n * @returns {Object} listingFilters\r\n\r\n *\r\n */\r\nconst listingFilters = {\r\n el: {\r\n resultsEl: null,\r\n showMoreButton: null,\r\n countEl: null\r\n },\r\n searchDelay: 500,\r\n minCharacters: 3,\r\n controller: new AbortController(),\r\n timer: null,\r\n items: [],\r\n filteredItems: [],\r\n freeTextItems: [],\r\n itemTemplate: '',\r\n filters: {},\r\n searchValue: '',\r\n searchFields: [],\r\n options: {},\r\n limit: 10,\r\n resultsOffset: 0,\r\n page: 1,\r\n noResultsTemplate: '',\r\n localizations: {\r\n option: 'option',\r\n options: 'options',\r\n count: '%count% results'\r\n },\r\n /**\r\n * Initialises the functionality.\r\n * Attaches event handlers to toggle elements\r\n */\r\n initListingFilters(el) {\r\n console.log('listingFilters init');\r\n this.el = {\r\n resultsEl: document.getElementById('listing-results'),\r\n showMoreButton: document.getElementById('listing-show-more'),\r\n countEl: document.getElementById('section-listing-count')\r\n };\r\n const config = window.listingConfig;\r\n if (config) {\r\n this.options = config.options;\r\n this.items = config.items;\r\n if (config.preSelections) {\r\n this.filters = config.preSelections;\r\n }\r\n this.filteredItems = config.filteredItems || config.items;\r\n this.itemTemplate = config.itemTemplate || '';\r\n this.searchFields = config.searchFields || [];\r\n this.limit = config.limit || 10;\r\n this.resultsOffset = config.resultsOffset || 0;\r\n this.noResultsTemplate = config.noResultsTemplate || '';\r\n if (config.localizations) {\r\n this.localizations = config.localizations;\r\n }\r\n if (config.resultsEl) {\r\n this.el.resultsEl = document.getElementById(config.resultsEl);\r\n }\r\n }\r\n this.addEventListeners(el);\r\n },\r\n renderResults(page = 1) {\r\n const resultsEl = this.el.resultsEl;\r\n if (resultsEl) {\r\n let resultsHtml = '';\r\n if (page === 1) {\r\n this.filteredItems.slice(0, this.limit).forEach((item) => {\r\n resultsHtml = resultsHtml + mustache_1.default.render(this.itemTemplate, item);\r\n });\r\n //}\r\n resultsEl.innerHTML = resultsHtml;\r\n }\r\n else {\r\n const lastChild = resultsEl.lastElementChild;\r\n lastChild?.insertAdjacentHTML('afterend', this.filteredItems.slice((page - 1) * this.limit + this.resultsOffset, this.limit * page + this.resultsOffset).map((item) => mustache_1.default.render(this.itemTemplate, item)).join(''));\r\n }\r\n if (this.filteredItems.length > this.limit * this.page + this.resultsOffset) {\r\n this.el.showMoreButton?.classList.remove('hidden');\r\n }\r\n else {\r\n this.el.showMoreButton?.classList.add('hidden');\r\n }\r\n if (this.filteredItems.length === 0) {\r\n console.log('no results');\r\n resultsEl.innerHTML = '' + mustache_1.default.render(this.noResultsTemplate, {});\r\n }\r\n if (this.el.countEl) {\r\n this.el.countEl.innerHTML = this.localizations.count.replace('%count%', this.filteredItems.length);\r\n }\r\n this.el.resultsEl?.classList.remove('loading');\r\n }\r\n },\r\n addEventListeners(el) {\r\n const selects = el.querySelectorAll('.listing-filters-select');\r\n const self = this;\r\n selects.forEach((select) => {\r\n if (this.options[select.dataset.name]) {\r\n window.VirtualSelect.init({\r\n optionHeight: 48,\r\n alwaysShowSelectedOptionsCount: true,\r\n optionSelectedText: this.localizations.option || '',\r\n optionsSelectedText: this.localizations.options || '',\r\n ele: select,\r\n disableSelectAll: true,\r\n disableAllOptionsSelectedText: true,\r\n silentInitialValueSet: true,\r\n options: this.options[select.dataset.name]\r\n });\r\n // Set preselected values\r\n if (this.filters[select.dataset.name]) {\r\n select.setValue(this.filters[select.dataset.name]);\r\n }\r\n select.addEventListener('change', function () {\r\n if (this.value.length) {\r\n self.filters[this.dataset.name] = this.value;\r\n }\r\n else {\r\n delete self.filters[this.dataset.name];\r\n }\r\n self.filterResults(false);\r\n });\r\n }\r\n });\r\n const searchInput = el.querySelector('.listing-filters-search');\r\n if (searchInput) {\r\n // Handle search input events\r\n let oldValue = searchInput?.value.trim();\r\n searchInput?.addEventListener('keyup', (e) => {\r\n const value = searchInput.value.trim() || '';\r\n if (oldValue === value) {\r\n return;\r\n }\r\n // Search value is too short\r\n if (value.length < this.minCharacters) {\r\n this.searchValue = value;\r\n self.filterResults(false);\r\n return;\r\n }\r\n oldValue = value;\r\n self.search(value);\r\n });\r\n }\r\n if (this.el.showMoreButton) {\r\n this.el.showMoreButton.addEventListener('click', (e) => {\r\n if (this.filteredItems.length > this.limit * this.page + this.resultsOffset) {\r\n this.page++;\r\n this.renderResults(this.page);\r\n }\r\n });\r\n }\r\n },\r\n search(value) {\r\n this.controller.abort();\r\n this.controller = new AbortController();\r\n clearTimeout(this.timer);\r\n this.timer = setTimeout(async () => {\r\n try {\r\n this.el.resultsEl?.classList.add('loading');\r\n this.searchValue = value;\r\n this.filterResults(true);\r\n return true;\r\n }\r\n catch (err) {\r\n if (err instanceof Error && err.name !== 'AbortError') {\r\n console.log(err);\r\n }\r\n }\r\n }, this.searchDelay);\r\n },\r\n filterResults() {\r\n this.resultsOffset = 0;\r\n const hasFilters = Object.keys(this.filters).length > 0;\r\n const hasSearch = this.searchValue.length > 2;\r\n if (hasFilters || hasSearch) {\r\n if (hasFilters) {\r\n this.filteredItems = this.items.filter((item) => {\r\n let match = true;\r\n for (const key in this.filters) {\r\n if (match && this.filters[key].length) {\r\n if (item[key] && item[key].some((value) => this.filters[key].includes(value))) {\r\n match = true;\r\n }\r\n else {\r\n match = false;\r\n }\r\n }\r\n }\r\n return match;\r\n });\r\n }\r\n if (hasSearch) {\r\n this.filteredItems = (!hasFilters ? this.items : this.filteredItems).filter((item) => {\r\n let match = false;\r\n for (const key of this.searchFields) {\r\n if (item[key].toLowerCase().includes(this.searchValue)) {\r\n match = true;\r\n }\r\n }\r\n return match;\r\n });\r\n }\r\n }\r\n else if (!hasSearch && !hasFilters) {\r\n this.filteredItems = this.items;\r\n }\r\n this.page = 1;\r\n this.renderResults(this.page);\r\n }\r\n};\r\nexports.default = listingFilters;\r\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;","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;","'use strict';\n\nlet StorageObj: Storage = {\n local: false,\n session: false,\n\n check: function(key){\n var storage = window[key+'Storage'];\n try {\n storage.setItem('test', 'test');\n storage.removeItem('test');\n return true;\n } catch (e) {\n return false;\n }\n },\n init: function(){\n console.log('storage.init()');\n this.local = this.check('local');\n this.session = this.check('session');\n return this;\n }\n};\n\nconst storage = StorageObj.init();\n\ninterface Storage {\n check: (key: string) => boolean;\n init: () => Storage;\n local: boolean;\n session: boolean;\n}\n\nexport default storage;\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 };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","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}\nexport { _nonIterableSpread as default };","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;","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 _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;","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","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;","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;","import toPropertyKey from \"./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}\nexport { _defineProperty as default };","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 _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 _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _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 }, _typeof(o);\n}\nexport { _typeof as default };","'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * Video\r\n *\r\n * @description:\r\n * This module is responsible for handling video elements.\r\n * It adds event listeners to video elements to play the video when overlay is clicked.\r\n *\r\n * js-video-active is helper class which is needed to prevent clicks, when the video is in a slider for example.\r\n * If only showing video, add this class as default\r\n *\r\n * @example:\r\n *
\r\n * \r\n *
\r\n *
\r\n */\r\nconst video = {\r\n addVideoElement: function (element) {\r\n console.log('addVideoElement()');\r\n const video = element.querySelector('video');\r\n const overlay = element.querySelector('[data-video-element-overlay]');\r\n const playVideo = () => {\r\n if (overlay.classList.contains('js-video-active')) {\r\n video.play();\r\n video.focus();\r\n video.setAttribute('controls', '');\r\n overlay.remove();\r\n video.removeEventListener('click', playVideo);\r\n video.removeEventListener('keyup', keyPressOnPlay);\r\n overlay.removeEventListener('click', playVideo);\r\n }\r\n };\r\n const keyPressOnPlay = (e) => {\r\n if (e.key === 'Enter') {\r\n playVideo();\r\n }\r\n };\r\n video.addEventListener('click', playVideo);\r\n video.addEventListener('keyup', keyPressOnPlay);\r\n overlay.addEventListener('click', playVideo);\r\n },\r\n init: function () {\r\n document.querySelectorAll('[data-video-element]').forEach(video => {\r\n this.addVideoElement(video);\r\n });\r\n }\r\n};\r\nexports.default = video;\r\n","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 (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","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initMediaGallery = void 0;\r\nconst swiper_1 = __importDefault(require(\"./swiper/swiper\"));\r\nconst modal_dialog_1 = require(\"./modal-dialog\");\r\nconst utils_1 = require(\"./utils\");\r\n/**\r\n * Media gallery is a grid of interactive images that can be viewed in native dialog.\r\n * Opened dialog contains a slider that allows user to change active slide.\r\n * Slides can display any kind of content, but currently only images are supported.\r\n *\r\n * @param {HTMLElement} container Media gallery container. Must contain dialog and slider elements.\r\n */\r\nasync function initMediaGallery(container) {\r\n const sliderEl = container.querySelector('[data-media-gallery-slider]');\r\n const dialogEl = container.querySelector('dialog');\r\n if (!dialogEl || !sliderEl) {\r\n console.warn('Media gallery could not be initialized, slider or dialog is missing.');\r\n return;\r\n }\r\n console.log('init media gallery with modals');\r\n (0, modal_dialog_1.useNativeDialogAsModal)(dialogEl);\r\n const bullets = container.querySelectorAll('.swiper-pagination-bullet');\r\n const thumbnails = Array.from(bullets).reduce((value, item) => {\r\n value[parseInt(item.dataset.index)] = item.dataset.thumbnail;\r\n return value;\r\n }, {});\r\n const paginationSeparator = container.dataset.paginationSeparator;\r\n const swiperIndex = container.dataset.swiperIndex;\r\n // Swiper hidden slides are focusable which breaks the slider\r\n // https://github.com/nolimits4web/swiper/issues/4006\r\n //\r\n // Set all but visible slide to inert to avoid slider breakdown\r\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inert\r\n const setHiddenSlidesInert = () => {\r\n const slides = dialogEl.querySelectorAll('.swiper-slide');\r\n slides.forEach(slide => {\r\n slide.inert = !slide.classList.contains('swiper-slide-active');\r\n });\r\n };\r\n const sliderConfig = {\r\n navigation: {\r\n nextEl: '.js-swiper-next',\r\n prevEl: '.js-swiper-prev',\r\n },\r\n autoHeight: true,\r\n centeredSlides: true,\r\n slidesPerView: 1,\r\n effect: 'fade',\r\n speed: 300,\r\n crossFade: true,\r\n pagination: paginationSeparator ? {\r\n el: `.js-swiper-pagination--${swiperIndex}`,\r\n type: 'custom',\r\n renderCustom: function (_, current, total) {\r\n return current + paginationSeparator + total;\r\n }\r\n } : {\r\n el: '.swiper-pagination',\r\n type: 'bullets',\r\n clickable: true,\r\n renderBullet: function (index, className) {\r\n return ``;\r\n }\r\n },\r\n //loop: true,\r\n on: {\r\n update() {\r\n setTimeout(setHiddenSlidesInert, 0);\r\n },\r\n slideChange() {\r\n setTimeout(setHiddenSlidesInert, 0);\r\n },\r\n },\r\n };\r\n // Set mobile to use page numbers instead of image previews\r\n const isMobile = ['xs', 'sm'].includes((0, utils_1.getBreakpoint)());\r\n if (isMobile && !paginationSeparator) {\r\n sliderConfig.pagination = {\r\n el: '.swiper-pagination',\r\n type: 'fraction',\r\n renderFraction: function (currentClass, totalClass) {\r\n return ` of `;\r\n }\r\n };\r\n }\r\n const slider = new swiper_1.default(sliderEl, sliderConfig);\r\n const onKeyPressClick = (e) => {\r\n if (e.key === 'Enter') {\r\n toggleButtonHandler(e);\r\n }\r\n };\r\n // Handler for gallery buttons that open selected media item in modal\r\n const toggleButtonHandler = (e) => {\r\n const button = e.target.closest('button') || e.target.closest('[role=\"button\"]');\r\n const index = parseInt(button.dataset.mediaGalleryToggle) || 0;\r\n dialogEl.showModal();\r\n slider.update();\r\n slider.slideTo(index);\r\n };\r\n const toggleButtons = container.querySelectorAll('[data-media-gallery-toggle]');\r\n toggleButtons.forEach(button => {\r\n button.addEventListener('click', toggleButtonHandler);\r\n button.addEventListener('keyup', onKeyPressClick);\r\n });\r\n}\r\nexports.initMediaGallery = initMediaGallery;\r\nexports.default = initMediaGallery;\r\n","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst swiper_1 = __importDefault(require(\"../helpers/swiper/swiper\"));\r\n/**\r\n * Media gallery swiper\r\n *\r\n * @param {HTMLElement} el - js-media-carousel\r\n * @returns {void}\r\n *\r\n * @example\r\n * \r\n *\r\n */\r\nconst mediaCarousel = {\r\n swiper: null,\r\n paginationSeparator: ' / ',\r\n swiperIndex: 0,\r\n initMediaCarousel(el) {\r\n console.log('Init mediaCarousel');\r\n this.el = el;\r\n this.swiperEl = el.querySelector('.js-swiper-container');\r\n const settings = window.mediaGallerySettings || {};\r\n if (settings) {\r\n this.paginationSeparator = settings.paginationSeparator;\r\n }\r\n if (el.dataset.swiperIndex) {\r\n this.swiperIndex = parseInt(el.dataset.swiperIndex);\r\n }\r\n if (this.swiperEl) {\r\n const self = this;\r\n const swiper = new swiper_1.default(this.swiperEl, {\r\n speed: 500,\r\n allowTouchMove: true,\r\n keyboard: true,\r\n watchSlidesProgress: true,\r\n slidesPerView: \"auto\",\r\n loop: false,\r\n slideToClickedSlide: true,\r\n effect: el.dataset.effect || 'slide',\r\n simulateTouch: true,\r\n preventClicksPropagation: false,\r\n preventClicks: true,\r\n navigation: {\r\n nextEl: `.js-swiper-next-${self.swiperIndex}`,\r\n prevEl: `.js-swiper-prev-${self.swiperIndex}`\r\n },\r\n pagination: {\r\n el: `.js-swiper-pagination-${self.swiperIndex}`,\r\n type: 'custom',\r\n renderCustom: function (_, current, total) {\r\n return current + self.paginationSeparator + total;\r\n }\r\n },\r\n a11y: {\r\n prevSlideMessage: settings.prevHelperText,\r\n nextSlideMessage: settings.nextHelperText,\r\n },\r\n breakpoints: {\r\n // when window width is >= 1056px disable touch swipe\r\n 1056: {\r\n allowTouchMove: false,\r\n slideToClickedSlide: !!el.dataset.preventClickDeskop ? false : true\r\n },\r\n },\r\n on: {\r\n slideChangeTransitionEnd(_) {\r\n const videos = el.querySelectorAll('video');\r\n Array.prototype.forEach.call(videos, function (video) {\r\n video.pause();\r\n const parent = video.closest('.swiper-slide');\r\n const overlay = parent.querySelectorAll('.video__overlay');\r\n if (video.getAttribute('tabindex') === '-1' && parent.classList.contains('swiper-slide-active')) {\r\n video.setAttribute('tabindex', '0');\r\n // logic for overlay\r\n if (overlay.length) {\r\n overlay.forEach(ol => ol.classList.add('js-video-active'));\r\n }\r\n }\r\n else if (video.getAttribute('tabindex') === '0') {\r\n video.setAttribute('tabindex', '-1');\r\n if (overlay.length) {\r\n overlay.forEach(ol => ol.classList.remove('js-video-active'));\r\n }\r\n }\r\n });\r\n },\r\n }\r\n });\r\n }\r\n }\r\n};\r\nexports.default = mediaCarousel;\r\n","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;","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}\nexport { _asyncToGenerator as default };","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;","\"use strict\";\r\n/**\r\n *\r\n * Export common modules\r\n *\r\n */\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.toggle = exports.components = exports.common = void 0;\r\nconst accordionTabs_1 = __importDefault(require(\"./helpers/accordionTabs\"));\r\nconst lazyLoadMedia_1 = __importDefault(require(\"./helpers/lazyLoadMedia\"));\r\nconst media_carousel_1 = __importDefault(require(\"./components/media-carousel\"));\r\nconst toggle_1 = __importDefault(require(\"./helpers/toggle\"));\r\nexports.toggle = toggle_1.default;\r\nconst quick_search_1 = __importDefault(require(\"./components/quick-search\"));\r\nconst tabs_1 = __importDefault(require(\"./helpers/tabs\"));\r\nconst timeToRead_1 = __importDefault(require(\"./helpers/timeToRead\"));\r\nconst video_1 = __importDefault(require(\"./helpers/video\"));\r\nconst media_gallery_1 = __importDefault(require(\"./helpers/media-gallery\"));\r\nconst site_search_1 = __importDefault(require(\"./components/site-search\"));\r\nconst listing_filters_1 = __importDefault(require(\"./components/listing-filters\"));\r\nconst select_1 = __importDefault(require(\"./helpers/select\"));\r\nconst hero_animate_1 = __importDefault(require(\"./helpers/hero-animate\"));\r\nconst js_filter_1 = __importDefault(require(\"./helpers/js-filter\"));\r\n//import charts from './helpers/charts';\r\nconst common = {\r\n accordionTabs: accordionTabs_1.default,\r\n lazyLoadMedia: lazyLoadMedia_1.default,\r\n video: video_1.default,\r\n tabs: tabs_1.default,\r\n timeToRead: timeToRead_1.default,\r\n initMediaGallery: media_gallery_1.default,\r\n select: select_1.default,\r\n heroAnimate: hero_animate_1.default,\r\n jsFilter: js_filter_1.default\r\n};\r\nexports.common = common;\r\nconst components = {\r\n mediaCarousel: media_carousel_1.default,\r\n quickSearch: quick_search_1.default,\r\n siteSearch: site_search_1.default,\r\n listingFilters: listing_filters_1.default\r\n};\r\nexports.components = components;\r\nexports.default = common;\r\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;","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst swiper_1 = __importDefault(require(\"../helpers/swiper/swiper\"));\r\n/**\r\n * Add swiping to tabs element, like Highlight with tabs\r\n *\r\n * @param {HTMLElement} el - js-tabs\r\n * @returns {void}\r\n *\r\n *\r\n */\r\nconst Tabs = {\r\n swiper: null,\r\n swiperIndex: 0,\r\n init(el) {\r\n console.log('Init Tabs');\r\n this.el = el;\r\n this.swiperEl = el.querySelector('.js-swiper-container');\r\n if (el.dataset.swiperIndex) {\r\n this.swiperIndex = parseInt(el.dataset.swiperIndex);\r\n }\r\n if (this.swiperEl) {\r\n const self = this;\r\n const swiper = new swiper_1.default(this.swiperEl, {\r\n speed: 500,\r\n allowTouchMove: true,\r\n keyboard: true,\r\n spaceBetween: 1,\r\n watchSlidesProgress: true,\r\n slidesPerView: \"auto\",\r\n navigation: {\r\n nextEl: `.js-swiper-next-${self.swiperIndex}`,\r\n prevEl: `.js-swiper-prev-${self.swiperIndex}`\r\n },\r\n });\r\n }\r\n }\r\n};\r\nexports.default = Tabs;\r\n","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst mustache_1 = __importDefault(require(\"mustache\"));\r\n/**\r\n * Quick search functionality for navigation bar\r\n *\r\n */\r\nconst quickSearch = {\r\n el: {\r\n body: null,\r\n el: null,\r\n input: null,\r\n toggleButton: null,\r\n form: null,\r\n results: null,\r\n nav: null\r\n },\r\n results: {\r\n term: '',\r\n page: 1,\r\n total_hits: 0,\r\n hits: [],\r\n showAllResults: ''\r\n },\r\n templates: {\r\n results: ''\r\n },\r\n searchDelay: 500,\r\n minCharacters: 3,\r\n controller: new AbortController(),\r\n timer: null,\r\n processingClickEvent: null,\r\n /**\r\n * Initialises the functionality.\r\n * Attaches event handlers to toggle elements\r\n */\r\n init() {\r\n this.el = {\r\n body: document.querySelector('body'),\r\n el: document.getElementById('site-quick-search'),\r\n results: document.getElementById('site-quick-search-results'),\r\n toggleButton: document.querySelector('button[aria-controls=\"site-quick-search\"]'),\r\n input: document.querySelector('[data-site-search-form] [name=\"search\"]'),\r\n form: document.querySelector('[data-site-search-form]'),\r\n nav: document.querySelector('.navigation')\r\n };\r\n this.templates.results = document.getElementById('template-site-search-results')?.textContent || '';\r\n this.addEventListeners();\r\n },\r\n addEventListeners() {\r\n const self = this;\r\n this.el.toggleButton?.addEventListener('click', (e) => {\r\n const target = e.currentTarget;\r\n if (target?.getAttribute('aria-expanded') === 'false') {\r\n this.open();\r\n }\r\n else {\r\n this.closeSearch(false);\r\n }\r\n });\r\n // Handle search input events\r\n let oldValue = this.el.input?.value.trim();\r\n this.el.input?.addEventListener('keyup', (e) => {\r\n if (e.key === 'Escape') {\r\n this.closeSearch(false);\r\n this.el.toggleButton?.focus();\r\n }\r\n const value = this.el.input?.value.trim() || '';\r\n if (oldValue === value) {\r\n return;\r\n }\r\n // Search value is too short\r\n if (value.length < this.minCharacters) {\r\n if (!value) {\r\n this.emptyResults();\r\n }\r\n return;\r\n }\r\n oldValue = value;\r\n this.search(value);\r\n });\r\n // Close search when focus moves outside of search element\r\n this.el.body?.addEventListener('keyup', (e) => {\r\n if (e.key === 'Tab' && !this.el.el?.contains(e.target) && this.el.toggleButton?.getAttribute('aria-expanded') === 'true') {\r\n this.closeSearch(!e.shiftKey);\r\n }\r\n });\r\n window.addEventListener('click', function (e) {\r\n if (self.el.el?.classList.contains('hidden'))\r\n return;\r\n if (document.querySelector('.site-quick-search')?.contains(e.target) || document.querySelector('.js-search-toggle')?.contains(e.target)) {\r\n // Clicked in box\r\n }\r\n else {\r\n self.closeSearch(true);\r\n }\r\n });\r\n this.el.results?.addEventListener('click', (e) => {\r\n const target = e.target.classList.contains('site-quick-search-result') ? e.target : e.target.closest('.site-quick-search-result');\r\n if (target && target.dataset?.searchItem && target.dataset?.searchItemUrl === target.getAttribute('href')) {\r\n e.preventDefault();\r\n self.sendClickEvent({\r\n url: target.getAttribute('href'),\r\n id: target.dataset?.searchItem,\r\n position: target.dataset?.searchItemPosition,\r\n term: target.dataset?.searchItemTerm,\r\n });\r\n return false;\r\n }\r\n });\r\n },\r\n search(value) {\r\n this.controller.abort();\r\n this.controller = new AbortController();\r\n clearTimeout(this.timer);\r\n this.timer = setTimeout(async () => {\r\n try {\r\n this.el.form?.classList.add('loading');\r\n fetch('/stage-ajax/siteSearch/?' + new URLSearchParams({\r\n 'stage-language': this.el?.form?.getAttribute('data-lang') || '',\r\n context: 'quick_search',\r\n search: value\r\n }).toString(), {\r\n method: 'POST',\r\n signal: this.controller.signal,\r\n })\r\n .then(response => response.json())\r\n .then((response) => {\r\n response.showAllResults = this.el.form?.getAttribute('action') + '?search=' + response.term;\r\n this.results = response;\r\n this._renderResults();\r\n this.showResults();\r\n this.el.form?.classList.remove('loading');\r\n })\r\n .catch((err) => {\r\n console.error(`Search err error: ${err.message}`);\r\n this.el.form?.classList.remove('loading');\r\n });\r\n return true;\r\n }\r\n catch (err) {\r\n if (err instanceof Error && err.name !== 'AbortError') {\r\n console.log(err);\r\n this.el.form?.classList.remove('loading');\r\n }\r\n }\r\n finally {\r\n }\r\n }, this.searchDelay);\r\n },\r\n sendClickEvent(data) {\r\n if (this.processingClickEvent) {\r\n return;\r\n }\r\n this.processingClickEvent = data.id;\r\n let locationChanging = false;\r\n const loadTargetPath = () => {\r\n if (data.url && !locationChanging) {\r\n locationChanging = true;\r\n window.location = data.url;\r\n }\r\n };\r\n try {\r\n fetch(`/stage-ajax/siteSearch/?stage-language=${document.body.getAttribute('data-language')}&context=reportClick`, {\r\n method: 'POST',\r\n signal: this.controller.signal,\r\n body: JSON.stringify({\r\n id: data.id,\r\n position: parseInt(data.position),\r\n term: data.term\r\n }),\r\n }).then(() => {\r\n loadTargetPath();\r\n }).catch((err) => {\r\n loadTargetPath();\r\n });\r\n return true;\r\n }\r\n catch (err) {\r\n if (err instanceof Error && err.name !== 'AbortError') {\r\n console.log(err);\r\n }\r\n }\r\n // Navigate to new url after small delay, even if ajax request has not completed\r\n setTimeout(loadTargetPath, 500);\r\n },\r\n open() {\r\n this.el.toggleButton?.setAttribute('aria-expanded', 'true');\r\n this.el.el?.classList.remove('hidden');\r\n this.el.input?.focus();\r\n this.el.body?.classList.add('js-no-scroll');\r\n this.el.nav?.classList.add('navigation--search--open');\r\n // make sure mobilemenu gets closed\r\n const mobileMenu = document.getElementById('megamenu-mobile');\r\n if (mobileMenu) {\r\n document.querySelector('.js-megamenu-mobile-toggle');\r\n mobileMenu.classList.add(\"d-none\");\r\n document.querySelector('.js-megamenu-mobile-toggle')?.classList.remove(\"open\");\r\n }\r\n document.querySelectorAll(\"li.megamenu__link.open\").forEach(el => el.classList.remove('open'));\r\n const megaMenuLinks = document.querySelectorAll('.js-megamenu-link');\r\n megaMenuLinks.forEach(el => el.setAttribute('aria-expanded', 'false'));\r\n document.querySelector('.navigation')?.classList.remove('navigation--open');\r\n },\r\n closeSearch(noFocus = false) {\r\n this.el.toggleButton?.setAttribute('aria-expanded', 'false');\r\n this.el.el?.classList.add('hidden');\r\n this.el.body?.classList.remove('js-no-scroll');\r\n this.el.nav?.classList.remove('navigation--search--open');\r\n if (!noFocus) {\r\n this.el.toggleButton?.focus();\r\n }\r\n },\r\n emptyResults() {\r\n if (this.el.results) {\r\n this.el.results.innerHTML = '';\r\n this.el.results?.classList.remove('open');\r\n }\r\n },\r\n /**\r\n * Render results view with current results.\r\n * @private\r\n */\r\n _renderResults() {\r\n const results = { ...this.results };\r\n if (this.el.results) {\r\n this.el.results.innerHTML = mustache_1.default.render(this.templates.results, results);\r\n }\r\n },\r\n /**\r\n * Shows results.\r\n */\r\n showResults() {\r\n if (!this.results.term) {\r\n return;\r\n }\r\n this.el.results?.classList.add('open');\r\n },\r\n};\r\nexports.default = quickSearch;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst heroAnimate = {\r\n init: function () {\r\n const container = document.querySelectorAll(\".js-hero-animate\");\r\n container.forEach((element) => {\r\n let words = element.getElementsByClassName(\"word\");\r\n let index = 0; //will store the index of the currently displayed word;\r\n if (words?.length) {\r\n //words[index].style.opacity = 1;\r\n const animateWordOut = (cw) => {\r\n setTimeout(function () {\r\n cw.className = \"word out\";\r\n }, 80);\r\n };\r\n const animateWordIn = (nw) => {\r\n setTimeout(function () {\r\n nw.className = \"word in\";\r\n }, 80);\r\n };\r\n const animateWordBehind = (nw) => {\r\n nw.className = \"word behind\";\r\n };\r\n const changeWord = () => {\r\n let current = words[index];\r\n let previous = index > 0 ? words[index - 1] : words[words.length - 1];\r\n let newWord = index == words.length - 1 ? words[0] : words[index + 1];\r\n animateWordOut(current);\r\n animateWordIn(newWord);\r\n animateWordBehind(previous);\r\n //update index index.\r\n index = index === words.length - 1 ? 0 : index + 1;\r\n };\r\n //changeWord(); //initial call\r\n setInterval(changeWord, 2000); //call every 4s bac\r\n }\r\n });\r\n },\r\n};\r\nexports.default = heroAnimate;\r\n","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;","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;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst accordionTabs = {\r\n isMobile: function () {\r\n return window.innerWidth < 1056;\r\n },\r\n init: function (el) {\r\n console.log('init accordionTabs');\r\n const tabs = el.querySelectorAll('details');\r\n tabs.forEach((tab) => {\r\n const summary = tab.querySelector('summary');\r\n summary?.addEventListener('click', (e) => {\r\n // Tabs view is only on screens md and up\r\n if (!this.isMobile()) {\r\n if (tab.hasAttribute('open')) {\r\n e.preventDefault();\r\n }\r\n else {\r\n tabs.forEach((t) => {\r\n if (t !== tab) {\r\n t.removeAttribute('open');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n};\r\nexports.default = accordionTabs;\r\n","function _classPrivateFieldBase(e, t) {\n if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\");\n return e;\n}\nexport { _classPrivateFieldBase as default };","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;","\n/**\n * Site main navigation module\n *\n * data-nav-header is optional, it is used for intersection observer. It should be an element that is not sticky.\n * Expects the following markup, where ELEMENT is the constructor element:\n\n
\n \n \n
I am the search
\n\n \n
I am the mobile nav
\n\n \n\n \n
\n
\n\n */\n\ntype NavigationSettings = {\n /** Classname for navigation bar changes on scroll */\n intersectingClassName: string;\n /** Classname for open action */\n actionOpenClassName: string;\n};\n\nclass Navigation {\n #settings: NavigationSettings;\n #el: HTMLElement;\n #actionTriggers: NodeListOf;\n #mobileMenuTriggers: NodeListOf;\n #desktopMenuTriggers: Array;\n #heightWatchElements: NodeListOf;\n #headerObserver: IntersectionObserver | null = null;\n\n constructor(element: HTMLElement, options: Partial = {}) {\n const defaults = {\n intersectingClassName: 'navigation--intersecting',\n actionOpenClassName: 'open',\n };\n const settings = Object.assign({}, defaults, options);\n\n this.#el = element;\n this.#settings = settings;\n this.#actionTriggers = this.#el.querySelectorAll('[data-nav-action-trigger]');\n this.#mobileMenuTriggers = this.#el.querySelectorAll('[data-nav-menu-trigger]');\n this.#desktopMenuTriggers = Array.from(this.#el.querySelectorAll('[data-nav-desktop-menu-trigger]'));\n this.#heightWatchElements = this.#el.querySelectorAll('[data-nav-height-watch]');\n\n this.#initListeners();\n console.log('navigation.init()');\n }\n\n #initListeners() {\n this.#actionTriggers.forEach(trigger => {\n trigger.addEventListener('click', this.onActionTriggerClick.bind(this));\n\n if(typeof trigger.dataset.navActionFocustrap === 'string') {\n const actionTarget = document.getElementById(trigger.getAttribute('aria-controls') || '');\n if(actionTarget) {\n actionTarget.addEventListener('keydown', this.onActionKeyDown.bind(this));\n }\n }\n });\n\n this.#mobileMenuTriggers.forEach(trigger => {\n trigger.addEventListener('click', this.onMobileMenuTriggerClick.bind(this));\n });\n\n this.#desktopMenuTriggers.forEach(trigger => {\n trigger.addEventListener('click', this.onDesktopMenuTriggerClick.bind(this));\n });\n\n document.addEventListener('click', this.onOutsideClick.bind(this));\n\n document.addEventListener('keydown', this.onDocumentKeyDown.bind(this));\n\n if(this.#heightWatchElements.length) {\n const throttle = (cb, delay) => {\n let throttling = false;\n\n return (...args) => {\n if (!throttling) {\n throttling = true;\n\n cb(...args);\n\n setTimeout(() => {\n throttling = false;\n }, delay);\n }\n };\n };\n\n // Since nested menus are absolutely positioned, we need to update parent height on resize manully.\n window.addEventListener('resize', throttle(this.onResize.bind(this), 200));\n }\n\n // Change header class on scroll\n const header = document.querySelector('[data-nav-header]') as HTMLElement;\n if(header) {\n const navHeight = this.#el.getBoundingClientRect().height;\n this.#headerObserver = new IntersectionObserver(this.updateNavClass.bind(this), {\n root: null,\n threshold: 0,\n rootMargin: `${navHeight}px`,\n });\n this.#headerObserver.observe(header);\n }\n\n // Listen to quick search events\n // In this case close all actions when esc is pressed in quick search input\n document.addEventListener('quickSearch.escape', this.closeAllActions.bind(this));\n }\n\n updateNavClass(entries: IntersectionObserverEntry[]): void {\n const [entry] = entries;\n\n this.#el.classList.toggle(this.#settings.intersectingClassName, !entry.isIntersecting);\n }\n\n onActionTriggerClick(event: Event): void {\n const actionTrigger = event.currentTarget as HTMLElement;\n const actionTarget = document.getElementById(actionTrigger.getAttribute('aria-controls') || '');\n\n if(!actionTarget) {\n return;\n }\n\n if(actionTarget.classList.contains(this.#settings.actionOpenClassName)) {\n actionTarget.classList.remove(this.#settings.actionOpenClassName);\n actionTrigger.classList.remove(this.#settings.actionOpenClassName);\n actionTrigger.setAttribute('aria-expanded', 'false');\n document.documentElement.classList.remove('no-scroll');\n } else {\n this.closeAllActions();\n actionTarget.classList.add(this.#settings.actionOpenClassName);\n actionTrigger.classList.add(this.#settings.actionOpenClassName);\n actionTrigger.setAttribute('aria-expanded', 'true');\n document.documentElement.classList.add('no-scroll');\n\n // Focus the first focusable element in the target\n if(typeof actionTrigger.dataset.navActionFocustrap === 'string') {\n const focusable = actionTarget.querySelector('button, a, input, select, textarea, .js-focusable') as HTMLElement;\n if(focusable) {\n focusable.focus();\n }\n }\n }\n }\n\n /**\n * Manual focus control for keyboard navigation\n * Closes action when focus is moved outside of the action\n */\n onActionKeyDown(event: KeyboardEvent): void {\n if(event.key !== 'Tab') {\n return;\n }\n\n const actionTarget = event.currentTarget as HTMLElement;\n const actionTrigger = document.querySelector(`[aria-controls=\"${actionTarget.id}\"]`) as HTMLElement;\n const focusables = (Array.from(actionTarget.querySelectorAll('button, a, input, select, textarea')) as HTMLElement[]).filter(el => (el as any).checkVisibility()); //TS not recognizing checkVisibility\n const firstFocusable = focusables[0];\n const lastFocusable = focusables[focusables.length - 1];\n const direction = event.shiftKey ? 'backwards' : 'forwards';\n\n if(document.activeElement === lastFocusable && direction === 'forwards') {\n // Focused past the last focusable element, should close the action and set focus back to next trigger\n this.closeAction(actionTarget, actionTrigger);\n actionTrigger.focus();\n } else if(document.activeElement === firstFocusable && direction === 'backwards') {\n // Focused before the first focusable element, should close the action and set focus back to prev trigger\n this.closeAction(actionTarget, actionTrigger);\n actionTrigger.focus();\n }\n\n }\n\n closeAction(target: HTMLElement, trigger: HTMLElement): void {\n target.classList.remove(this.#settings.actionOpenClassName);\n trigger.classList.remove(this.#settings.actionOpenClassName);\n trigger.setAttribute('aria-expanded', 'false');\n }\n\n closeAllActions(): void {\n this.#actionTriggers.forEach(trigger => {\n const target = document.getElementById(trigger.getAttribute('aria-controls') || '');\n if(target) {\n this.closeAction(target, trigger);\n }\n });\n }\n\n /**\n * In mobile menu accordion, opening one element should not close others.\n */\n onMobileMenuTriggerClick(event: Event): void {\n const actionTrigger = event.currentTarget as HTMLElement;\n const actionTarget = document.getElementById(actionTrigger.getAttribute('aria-controls') || '');\n\n if(!actionTarget) {\n return;\n }\n\n if(actionTarget.classList.contains(this.#settings.actionOpenClassName)) {\n actionTarget.classList.remove(this.#settings.actionOpenClassName);\n actionTrigger.classList.remove(this.#settings.actionOpenClassName);\n actionTrigger.setAttribute('aria-expanded', 'false');\n this.updateTriggerLabel(actionTrigger, false);\n } else {\n actionTarget.classList.add(this.#settings.actionOpenClassName);\n actionTrigger.classList.add(this.#settings.actionOpenClassName);\n actionTrigger.setAttribute('aria-expanded', 'true');\n this.updateTriggerLabel(actionTrigger, true);\n }\n }\n\n /**\n * In desktop menu, opening one element should close other triggers, but leave current trigger ancestors and descendants open.\n * It also should update height of the parent menu to match the height of the open submenu (because of position absolute)\n */\n onDesktopMenuTriggerClick(event: Event): void {\n const actionTrigger = event.currentTarget as HTMLElement;\n const actionTarget = document.getElementById(actionTrigger.getAttribute('aria-controls') || '');\n\n if(!actionTarget) {\n return;\n }\n\n if(actionTarget.classList.contains(this.#settings.actionOpenClassName)) {\n actionTarget.classList.remove(this.#settings.actionOpenClassName);\n actionTrigger.classList.remove(this.#settings.actionOpenClassName);\n actionTrigger.setAttribute('aria-expanded', 'false');\n this.updateTriggerLabel(actionTrigger, false);\n } else {\n // Close others (not ancestors or descendants of current trigger)\n const openTriggers = this.#desktopMenuTriggers.filter(trigger => trigger.classList.contains(this.#settings.actionOpenClassName));\n const triggersToBeClosed = openTriggers.filter(trigger => {\n const target = document.getElementById(trigger.getAttribute('aria-controls') || '');\n\n if(target && target.contains(actionTrigger)) {\n return false;\n }\n\n return true;\n });\n\n triggersToBeClosed.forEach(trigger => {\n const target = document.getElementById(trigger.getAttribute('aria-controls') || '');\n if(target) {\n target.classList.remove(this.#settings.actionOpenClassName);\n trigger.classList.remove(this.#settings.actionOpenClassName);\n trigger.setAttribute('aria-expanded', 'false');\n this.updateTriggerLabel(trigger, false);\n }\n });\n\n //Open self\n actionTarget.classList.add(this.#settings.actionOpenClassName);\n actionTrigger.classList.add(this.#settings.actionOpenClassName);\n actionTrigger.setAttribute('aria-expanded', 'true');\n this.updateTriggerLabel(actionTrigger, true);\n\n this.updateHeights();\n }\n }\n\n /**\n * Check for escape to close menu\n */\n onDocumentKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'Escape') {\n return;\n }\n\n let activeTrigger;\n this.#actionTriggers.forEach(trigger => {\n const actionTarget = document.getElementById(trigger.getAttribute('aria-controls') || '');\n\n if (actionTarget?.classList.contains(this.#settings.actionOpenClassName)) {\n activeTrigger = trigger;\n }\n });\n\n this.closeAllActions();\n\n // Focus last used trigger\n if (activeTrigger) activeTrigger.focus();\n }\n\n updateTriggerLabel(trigger: HTMLElement, isOpen: boolean): void {\n if(!trigger) {\n return;\n }\n\n if(trigger.hasAttribute('aria-label') && trigger.dataset.labelOpen && trigger.dataset.labelClosed) {\n trigger.setAttribute('aria-label', isOpen ? trigger.dataset.labelOpen : trigger.dataset.labelClosed);\n }\n }\n\n updateHeights(): void {\n this.#heightWatchElements.forEach(element => {\n const listElementHeights = Array.from(element.querySelectorAll(`ul`)).map(el => el.getBoundingClientRect().height);\n const maxHeight = Math.max(...listElementHeights);\n if(maxHeight > 0) {\n element.style.height = `${maxHeight}px`;\n }\n });\n }\n\n onResize(): void {\n this.updateHeights();\n }\n\n onOutsideClick(event: Event): void {\n if(event.target instanceof HTMLElement && !this.#el.contains(event.target)) {\n this.closeAllActions();\n }\n }\n}\n\nexport default Navigation;\n","/**\n * Standalone module for quick search. Does not depend on navigation elements.\n */\nimport Mustache from 'mustache';\n\nexport type QuickSearchSettings = {\n /** Search form element selector */\n formElementSelector: string;\n /** Input element selector */\n inputElementSelector: string;\n /** Results container element selector */\n resultsElementSelector: string;\n /** Results template element selector */\n resultsTemplateSelector: string;\n /** Minimum characters to start search */\n minCharacters: number;\n /** Search delay in ms */\n searchDelay: number;\n /** Api url */\n apiUrl: string;\n /** Language code */\n language: string;\n /** Site id */\n site: string;\n};\n\nclass QuickSearch {\n #elements: {\n root: HTMLElement | null;\n form: HTMLFormElement | null;\n input: HTMLInputElement | null;\n results: HTMLElement | null;\n } = {\n root: null,\n form: null,\n input: null,\n results: null,\n };\n #templates: {\n results: string;\n } = {\n results: '',\n };\n settings: QuickSearchSettings;\n currentSearchTerm: string = '';\n results: {\n hits: any[];\n page: number;\n total_hits: number;\n term: string;\n showAllResults: string;\n } = {\n hits: [],\n page: 1,\n total_hits: 0,\n term: '',\n showAllResults: ''\n };\n controller: AbortController = new AbortController();\n timer: NodeJS.Timeout | null = null;\n processingClickEvent: string | null = null;\n\n constructor(element: HTMLElement, options: Partial) {\n const defaultSettings = {\n formElementSelector: '[data-quick-search-form]',\n inputElementSelector: '[data-quick-search-form] [name=\"search\"]',\n resultsElementSelector: '[data-quick-search-results]',\n resultsTemplateSelector: '[data-quick-search-results-template]',\n minCharacters: 3,\n searchDelay: 500,\n apiUrl: '/stage-ajax/siteSearch/',\n language: document.documentElement.lang || '',\n site: document.body.dataset.site || '',\n };\n\n const settings = Object.assign({}, defaultSettings, options);\n\n this.settings = settings;\n\n this.#elements = {\n root: element,\n form: element.querySelector(settings.formElementSelector),\n input: element.querySelector(settings.inputElementSelector),\n results: element.querySelector(settings.resultsElementSelector),\n };\n\n this.#templates = {\n results: element.querySelector(settings.resultsTemplateSelector)?.textContent || '',\n };\n\n this.#initListeners();\n\n console.log('quick-search.init()');\n }\n\n /**\n * Initialises the functionality.\n * @private\n */\n #initListeners(): void {\n this.#elements.input?.addEventListener('keyup', this.onInputKeyUp.bind(this));\n this.#elements.results?.addEventListener('click', this.onResultsClick.bind(this));\n }\n\n /**\n * Input keyup event handler\n */\n onInputKeyUp(event: KeyboardEvent): void {\n // Emit event so that other components can react to it\n if(event.key === 'Escape') {\n this.#elements.input?.dispatchEvent(new CustomEvent('quickSearch.escape', { bubbles: true, cancelable: false }));\n }\n\n // Do nothing if the value has not changed\n const value = this.#elements.input?.value.trim() || '';\n if(this.currentSearchTerm === value) {\n return;\n }\n\n // Search value is too short\n if(value.length < this.settings.minCharacters) {\n if(!value) {\n this.emptyResults();\n }\n return;\n }\n\n // Perform search\n this.currentSearchTerm = value;\n this.search(value);\n }\n\n /**\n * Result click event handler\n */\n onResultsClick(event: Event): void {\n const target = (event.target as HTMLElement).closest('[data-quick-search-item]') as HTMLElement;\n\n if(target) {\n event.preventDefault();\n\n this.#sendClickEvent({\n url: target.getAttribute('href') || '',\n id: target.dataset?.quickSearchItem || '',\n position: target.dataset?.quickSearchItemPosition || '',\n term: target.dataset?.quickSearchItemTerm || '',\n });\n }\n }\n\n /**\n * Fetches search results from server\n */\n search(value: string): void {\n this.controller.abort();\n this.controller = new AbortController();\n clearTimeout(this.timer as NodeJS.Timeout);\n\n this.timer = setTimeout(async () => {\n try {\n this.#elements.form?.classList.add('loading');\n fetch(this.settings.apiUrl + '?' + new URLSearchParams({\n 'stage-language': this.settings.language,\n site: this.settings.site,\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.#elements.form?.getAttribute('action') + '?search=' + response.term;\n this.results = response;\n this.#renderResults();\n this.showResults();\n this.#elements.form?.classList.remove('loading');\n })\n .catch((err) => {\n console.error(`[quick-search] ${err.message}`, err);\n this.#elements.form?.classList.remove('loading');\n });\n return true;\n } catch (err) {\n if (err instanceof Error && err.name !== 'AbortError') {\n console.error(`[quick-search] ${err.message}`, err);\n this.#elements.form?.classList.remove('loading');\n }\n } finally {\n\n }\n }, this.settings.searchDelay);\n }\n\n /**\n * Send click event to server\n * @private\n */\n #sendClickEvent(data: { url: string, id: string, position: string, term: string }) {\n if(this.processingClickEvent) {\n return;\n }\n\n this.processingClickEvent = data.id;\n\n let locationChanging = false;\n const loadTargetPath = () => {\n if (data.url && !locationChanging) {\n locationChanging = true;\n window.location.href = data.url;\n }\n };\n\n try {\n fetch(`${this.settings.apiUrl}?stage-language=${this.settings.language}&context=reportClick`, {\n method: 'POST',\n signal: this.controller.signal,\n body: JSON.stringify({\n id: data.id,\n position: parseInt(data.position),\n term: data.term,\n }),\n }).then(() => {\n loadTargetPath();\n }).catch((err) => {\n loadTargetPath();\n });\n\n return true;\n } catch (err) {\n if(err instanceof Error && err.name !== 'AbortError') {\n console.error(`[quick-search] ${err.message}`, err);\n }\n }\n\n // Navigate to new url after small delay, even if ajax request has not completed\n setTimeout(loadTargetPath, 500);\n }\n\n /**\n * Render results view with current results.\n * @private\n */\n #renderResults(): void {\n const results = { ...this.results };\n if(this.#elements.results) {\n this.#elements.results.innerHTML = Mustache.render(this.#templates.results, results);\n }\n }\n\n /**\n * Shows results\n */\n showResults(): void {\n if(!this.results.term) {\n return;\n }\n this.#elements.results?.classList.add('open');\n }\n\n /**\n * Clears results\n */\n emptyResults(): void {\n if(this.#elements.results) {\n this.#elements.results.innerHTML = '';\n this.#elements.results.classList.remove('open');\n }\n }\n\n}\n\nexport default QuickSearch;\n","import Mustache from 'mustache';\n\nexport type Settings = {\n ajaxUrl: string;\n};\n\nexport default class SiteSearch {\n dom: {\n root: HTMLElement;\n loadMoreForm: HTMLFormElement;\n resultsContainer: HTMLElement;\n };\n id: string;\n template: string;\n settings: Settings;\n processingClickEvent: string | boolean = false;\n\n\n constructor(element, options?: Partial) {\n const defaultSettings = {\n ajaxUrl: '/stage-ajax/siteSearch/',\n };\n\n this.settings = Object.assign({}, defaultSettings, options);\n\n const form = element.querySelector('[data-search-load-more-form]');\n const id = form?.getAttribute('data-search-load-more-form');\n\n this.id = id;\n\n this.dom = {\n root: element,\n loadMoreForm: form,\n resultsContainer: element.querySelector(`[data-search-results-container=${id}]`),\n };\n\n this.template = document.getElementById(`template-search-item-${id}`)?.textContent || '';\n\n // All neccessary elements found, init\n if(Object.keys(this.dom).every(key => this.dom[key]) && this.id && this.template) {\n console.log('site-search.init()');\n this.attachEventListeners();\n }\n }\n\n attachEventListeners() {\n this.dom.root.addEventListener('click', this.onClickDelegated.bind(this));\n this.dom.loadMoreForm.addEventListener('submit', this.onLoadMore.bind(this));\n }\n\n onClickDelegated(event: Event) {\n const eventTarget = event.target as HTMLElement;\n const clickTarget: HTMLElement | null = eventTarget.classList.contains('search-result') ? eventTarget : eventTarget.closest('.search-result');\n\n if (clickTarget && clickTarget.dataset?.searchItem && clickTarget.dataset?.searchItemUrl === clickTarget.getAttribute('href')) {\n event.preventDefault();\n\n this.sendClickEvent({\n url: clickTarget.getAttribute('href'),\n id: clickTarget.dataset?.searchItem,\n position: clickTarget.dataset?.searchItemPosition,\n term: clickTarget.dataset?.searchItemTerm,\n });\n\n return false;\n }\n }\n\n onLoadMore(event: Event) {\n event.preventDefault();\n this.setLoading(true);\n\n const form = event.target as HTMLFormElement;\n const submitBtn = form.querySelector('[type=\"submit\"]') as HTMLButtonElement;\n const formData = new FormData(form);\n const formProps = Object.fromEntries(formData) as unknown as Record;\n\n fetch(`${this.settings.ajaxUrl}?` + new URLSearchParams(formProps).toString())\n .then(response => response.json())\n .then((response) => {\n if (response.page) {\n const page = form.querySelector('[name=\"page\"]');\n if (page) {\n page.setAttribute('value', response.page + 1);\n }\n }\n\n if (response.hits) {\n const lastChild = this.dom.resultsContainer.lastElementChild;\n lastChild?.insertAdjacentHTML('afterend', response.hits.map((item: any) => Mustache.render(this.template, item)).join(''));\n }\n\n if (response.total_hits <= response.page * response.limit) {\n if(submitBtn) {\n submitBtn.remove();\n }\n }\n })\n .catch((err) => {\n console.error(`Search err error: ${err.message}`);\n })\n .finally(() => {\n this.setLoading(false);\n });\n }\n\n setLoading(state: boolean) {\n this.dom.root.classList.toggle('loading', state);\n }\n\n\n sendClickEvent(data: any) {\n if (this.processingClickEvent) {\n return;\n }\n\n this.processingClickEvent = data.id;\n\n let locationChanging = false;\n const loadTargetPath = () => {\n if (data.url && !locationChanging) {\n locationChanging = true;\n window.location = data.url;\n }\n };\n\n try {\n fetch(`${this.settings.ajaxUrl}?stage-language=${document.documentElement.lang}&context=reportClick`, {\n method: 'POST',\n body: JSON.stringify({\n id: data.id,\n position: parseInt(data.position),\n term: data.term,\n }),\n }).then((res) => {\n loadTargetPath();\n }).catch((err) => {\n loadTargetPath();\n });\n\n return true;\n } catch (err) {\n if (err instanceof Error && err.name !== 'AbortError') {\n console.log(err);\n }\n }\n\n // Navigate to new url after small delay, even if ajax request has not completed\n setTimeout(loadTargetPath, 500);\n }\n};\n","'use strict';\n\nimport storage from './storage';\nimport Mustache from 'mustache';\n\nlet buyingOptionsBar: BuyingOptionsBar = {\n\n buyingOptions: null,\n tyreData: null,\n selectedSize: null,\n selectedVehicle: null,\n foundSizes: [],\n buyingOptionsBar: null,\n buyingOptionsPopover: null,\n buyingOptionsVehicle: null,\n buyingOptionsTyreSize: null,\n buyingOptionsToggler: null,\n buyingOptionsIconToggler: null,\n tyreOptionsContainer: null,\n tyreOptionsTemplate: '',\n tyreselectorLink: null,\n buyingOptionsOpen: '',\n buyingOptionsClose: '',\n\n /**\n * Send analytics event.\n *\n * @param {string} type - Event type.\n * @param {object} data - Additional event data.\n */\n sendAnalyticsEvent(type, data = {}) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: type,\n tyreSize: this.buyingOptionsTyreSize?.textContent || '',\n productCode: (this.tyreOptionsContainer?.querySelector('[data-tyre-option-select]') as HTMLSelectElement)?.value || '',\n ...data,\n });\n },\n\n toggleBuyingOptions(show, sendEvent = false) {\n let shouldHide = (typeof show === 'boolean' ? !show : this.buyingOptionsBar?.classList.contains('opened'));\n if (shouldHide) {\n // hide\n this.buyingOptionsToggler?.classList.remove('opened');\n this.buyingOptionsBar?.classList.remove('opened');\n if (this.buyingOptionsPopover) this.buyingOptionsPopover.style.display = 'none';\n if (this.buyingOptionsToggler) this.buyingOptionsToggler.textContent = this.buyingOptionsOpen;\n // Store that user has once closed the buiyng options so we do not open it on page load\n if (storage.local) {\n localStorage.setItem('buyingOtionsOnceClosed', 'true');\n }\n if (sendEvent) {\n this.sendAnalyticsEvent('quickBuyClose');\n }\n this.buyingOptionsToggler?.setAttribute('aria-expanded', 'false');\n this.buyingOptionsToggler?.focus();\n return false;\n } else {\n // show\n this.buyingOptionsToggler?.classList.add('opened');\n this.buyingOptionsBar?.classList.add('opened');\n if (this.buyingOptionsPopover) this.buyingOptionsPopover.style.display = 'block';\n if (this.buyingOptionsToggler) this.buyingOptionsToggler.textContent = this.buyingOptionsClose;\n if (sendEvent) {\n this.sendAnalyticsEvent('quickBuyOpen');\n }\n this.buyingOptionsToggler?.setAttribute('aria-expanded', 'true');\n return true;\n }\n },\n\n updatePopoverContentAndActions() {\n let self = this;\n\n if (this.buyingOptionsVehicle) this.buyingOptionsVehicle.style.display = \"none\";\n if (this.buyingOptionsTyreSize) this.buyingOptionsTyreSize.style.display = \"none\";\n\n if (!this.foundSizes.length) {\n return;\n }\n\n if (this.selectedVehicle) {\n let vehicleInfo = (this.selectedVehicle.license ? this.selectedVehicle.license + ', ' : '') + this.selectedVehicle.manufacturer + ' ' + this.selectedVehicle.model + ' ' + this.selectedVehicle.year;\n if (this.buyingOptionsVehicle) this.buyingOptionsVehicle.textContent = vehicleInfo;\n if (this.buyingOptionsVehicle) this.buyingOptionsVehicle.style.display = \"block\";\n }\n\n if (this.selectedSize) {\n let tyreSizeInfo = this.selectedSize.width + '/' + this.selectedSize.height + 'R' + this.selectedSize.rim;\n if (this.buyingOptionsTyreSize) this.buyingOptionsTyreSize.textContent = tyreSizeInfo;\n if (this.buyingOptionsTyreSize) this.buyingOptionsTyreSize.style.display = \"block\";\n if (this.tyreOptionsTemplate) {\n if (this.tyreOptionsContainer) this.tyreOptionsContainer.innerHTML = Mustache.render(this.tyreOptionsTemplate, this.foundSizes);\n }\n\n // Initialize tyre options select\n const select = this.tyreOptionsContainer?.querySelector('[data-tyre-option-select]');\n const changeSize = (el) => {\n let sizeId = el.value;\n\n let options = self.tyreOptionsContainer?.querySelectorAll('[data-tyre-size-id]');\n if (options) options.forEach(o => (o as HTMLElement).style.display = \"none\");\n const size = self.tyreOptionsContainer?.querySelector('[data-tyre-size-id=\"' + sizeId + '\"]');\n if (size) (size as HTMLElement).style.display = \"block\";\n };\n select?.addEventListener('change', function () {\n changeSize(select);\n self.sendAnalyticsEvent('quickBuyDropdown');\n });\n changeSize(select);\n\n // Register dealer/hatch button events\n this.tyreOptionsContainer?.querySelector('[data-gtm-button]')?.addEventListener('click', function (evt) {\n const btn = evt.target as HTMLElement;\n if (btn) {\n\n self.sendAnalyticsEvent(btn.dataset.gtmButton || '');\n // Prevent default action so events have a bit of time to get sent\n const isLink = btn.tagName === 'A' && (btn.getAttribute('href') || '').indexOf('#') !== 0;\n if (isLink) {\n evt.preventDefault();\n\n setTimeout(() => {\n if (btn.getAttribute('href') !== null) window.location = btn.getAttribute('href') as unknown as Location;\n }, 500);\n }\n }\n });\n }\n return;\n },\n\n /**\n * Stores product data to sessionStorage.\n *\n * @param {object} data Data to store.\n */\n storeBuyingOptions(data) {\n try {\n const dataToStore = { ...data };\n dataToStore.sizes = data.sizes.map(item => {\n // Unminimize properties\n const { w, h, r, li, sr, info, ...extra } = item;\n return {\n width: w,\n height: h,\n rim: r,\n loadIndex: li,\n speedRating: sr,\n productInfo: info,\n ...extra,\n };\n });\n console.log('Found buying options', dataToStore);\n window.sessionStorage.setItem('buyingOptions', JSON.stringify(dataToStore));\n }\n catch (e) {\n console.error(e);\n }\n },\n\n /**\n * Load buying options from sessionStorage and populate instance variables with loaded data.\n */\n loadBuyingOptions() {\n try {\n // Load buying options\n const sessionOptionsData = window.sessionStorage.getItem('buyingOptions');\n const buyingOptions = sessionOptionsData ? JSON.parse(sessionOptionsData) : null;\n\n if (!buyingOptions) {\n return;\n }\n this.buyingOptions = buyingOptions;\n\n // Get tyre data\n const tyreData = this.tyreData;\n if (!tyreData) {\n return;\n }\n\n\n // Remove tyre sizes that do not match selected size\n this.buyingOptions.sizes = buyingOptions.sizes.filter(item => {\n return item.width === tyreData.width && item.height === tyreData.height && item.rim === tyreData.rim;\n });\n\n this.foundSizes = this.buyingOptions.sizes;\n }\n catch (e) {\n console.error(e);\n }\n },\n\n getSelectedTyreData() {\n // tyreData is created by tyreselector\n // {\"width\":245,\"height\":40,\"rim\":18,\"tsViewNavItem\":\"#filterLicense\",\"license\":{\"text\":\"CGG-964\",\"country\":\"FI\",\"data\":{\"id\":\"17293\",\"manufacturer\":\"BMW\",\"model\":\"5-Serie (E60/E61)\",\"year\":\"2004\",\"kw\":\"141\",\"hp\":\"192\",\"tyres\":{\"245/45R17\":false,\"245/40R18\":true,\"245/35R19\":false,\"225/55R16\":false,\"225/50R17\":false},\"wheels\":{\"245/45R17\":{\"8x17/20\":false},\"245/40R18\":{\"8x18/20\":true},\"245/35R19\":{\"8x19/20\":false},\"225/55R16\":{\"7x16/20\":false},\"225/50R17\":{\"7.5x17/20\":false}},\"pcd\":\"5x120\",\"offset\":\"20\",\"center_bore\":\"72.6\",\"sorted\":[\"225/55R16\",\"225/50R17\",\"245/45R17\",\"245/40R18\",\"245/35R19\"]}},\"tsViews\":\"hidden\"}\n\n // reset\n this.tyreData = null;\n this.selectedSize = null;\n this.selectedVehicle = null;\n\n // do we have HTML5 storage support?\n if (storage.session) {\n let storedData = sessionStorage.getItem('tyreData') || localStorage.getItem('tyreData');\n\n try {\n let tyreData: TyreData = JSON.parse(storedData || '');\n\n if (tyreData) {\n\n // set selected size only if tyreData has width, height and rim\n if (tyreData.width && tyreData.height && tyreData.rim) {\n this.selectedSize = {\n width: tyreData.width,\n height: tyreData.height,\n rim: tyreData.rim,\n };\n }\n\n // Vehicle info, if exists, could be in tyreData object root or in tyreData.license.data\n if (tyreData.manufacturer && tyreData.model && tyreData.year) {\n this.selectedVehicle = {\n license: null,\n manufacturer: tyreData.manufacturer.text,\n model: tyreData.model.text,\n year: tyreData.year.text,\n };\n } else if (tyreData.license && tyreData.license.text && tyreData.license.data && tyreData.license.data.manufacturer && tyreData.license.data.model && tyreData.license.data.year) {\n this.selectedVehicle = {\n license: tyreData.license.text,\n manufacturer: tyreData.license.data.manufacturer,\n model: tyreData.license.data.model,\n year: tyreData.license.data.year,\n };\n }\n }\n\n if (this.selectedSize) {\n this.tyreData = tyreData;\n }\n } catch (e) {\n //\n }\n }\n },\n\n updateFoundSizes() {\n let self = this;\n this.foundSizes = [];\n if (self.selectedSize && window.buyingOptionsTyreSizes) {\n window.buyingOptionsTyreSizes.forEach((size) => {\n if (size.width === self.selectedSize.width && size.height === self.selectedSize.height && size.rim === self.selectedSize.rim) {\n self.foundSizes.push(size);\n }\n });\n }\n },\n\n scrollToTyreselector() {\n let self = this;\n let tyreselector = document.querySelector('#tyreselector_4');\n if (tyreselector) {\n tyreselector.scrollIntoView({ behavior: 'smooth' });\n self.toggleBuyingOptions(false);\n\n let tyreselectorToggler = tyreselector.querySelector('a.toggler');\n // Open tyreselector if it's closed (by checking .tsViews visibility)\n if (tyreselectorToggler && !tyreselectorToggler.classList.contains('closed')) {\n (tyreselectorToggler as HTMLButtonElement).click();\n }\n\n return true;\n }\n return false;\n },\n\n /**\n * Check for escape to close menu\n */\n onDocumentKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'Escape') {\n return;\n }\n\n // Only trigger if buying options bar is open\n if (this.buyingOptionsBar?.classList.contains('opened')) {\n this.toggleBuyingOptions(false);\n }\n },\n\n // =========================================\n // INIT FUNCTION\n // =========================================\n\n init: function () {\n console.log('buyingOptionsBar.init()');\n\n var self = this;\n\n // Store PIH product data to sessionStorage\n if (window.buyingOptionsData) {\n this.storeBuyingOptions(window.buyingOptionsData);\n }\n\n this.getSelectedTyreData();\n const template = document.getElementById('buying-options-template')?.innerHTML;\n if (template) {\n this.loadBuyingOptions();\n if (this.buyingOptions && this.foundSizes.length > 0) {\n const insertEl = document.querySelector('main') || document.body;\n\n insertEl.insertAdjacentHTML('afterend', Mustache.render(template, this.buyingOptions));\n }\n }\n else {\n this.updateFoundSizes();\n }\n\n // End if missing buying options DOM element (not included on the page) or missing tyre data (nothing is chosen) or selected size is not found\n if (!document.querySelector('.buying-options-bar') || !this.tyreData || !this.selectedSize || !this.foundSizes.length) {\n return\n }\n\n // Get html elements\n\n this.buyingOptionsBar = document.querySelector('.buying-options-bar');\n this.buyingOptionsPopover = this.buyingOptionsBar?.querySelector('.buying-options-bar__pop-over') || null;\n this.buyingOptionsVehicle = this.buyingOptionsPopover?.querySelector('[data-buying-options-vehicle]') || null;\n this.buyingOptionsTyreSize = this.buyingOptionsPopover?.querySelector('[data-buying-options-tyre-size]') || null;\n this.buyingOptionsToggler = document.querySelector('[data-buying-options-toggler]');\n this.buyingOptionsIconToggler = document.querySelector('[data-buying-options-icon-toggler]');\n this.tyreOptionsContainer = this.buyingOptionsBar?.querySelector('[data-tyre-options]') || null;\n this.tyreselectorLink = this.buyingOptionsBar?.querySelector('[data-buying-options-tyreselector-link]') || null;\n this.buyingOptionsOpen = this.buyingOptionsToggler?.textContent || '';\n this.buyingOptionsClose = this.buyingOptionsBar?.getAttribute('data-buying-options-close') || '';\n\n //this.tyreOptionsTemplate = this.buyingOptionsBar.querySelector('[data-template=\"tyre-options\"]').textContent;\n\n // Set event listeners\n\n // Buying options pop-over togglers click event listeners\n this.buyingOptionsToggler?.addEventListener('click', function (e) {\n self.toggleBuyingOptions(null, true);\n });\n\n // Icon button in modal, separate event\n this.buyingOptionsIconToggler?.addEventListener('click', function () {\n self.toggleBuyingOptions(null, true);\n });\n\n // Prevent link from loading if tyre selector locates on same page\n this.tyreselectorLink?.addEventListener('click', function (evt) {\n evt.preventDefault();\n self.sendAnalyticsEvent('quickBuyChange');\n\n // Load group page after small delay\n if (!self.scrollToTyreselector()) {\n setTimeout(() => {\n if (self.tyreselectorLink) window.location = self.tyreselectorLink.getAttribute('href') as unknown as Location;\n }, 500);\n }\n });\n\n document.addEventListener('keydown', this.onDocumentKeyDown.bind(this));\n\n // Set popover texts and button actions\n this.updatePopoverContentAndActions();\n\n // Automatically hide $buyingOptionsBar when footer is reached and show it again when footer is off screen\n\n/* let documentFooter = document.querySelector('.footer');\n\n // Create intersection observer\n const footerObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n if (self.buyingOptionsBar) self.buyingOptionsBar.style.display = 'none';\n self.toggleBuyingOptions(false);\n } else {\n if (self.buyingOptionsBar) self.buyingOptionsBar.style.display = 'flex';\n }\n });\n }, {\n rootMargin: '0px 0px 0px 0px',\n threshold: 0.2\n });\n\n if (documentFooter) {\n // show options bar\n if (this.buyingOptionsBar) this.buyingOptionsBar.style.display = 'none';\n // Add intersection observer for document footer\n footerObserver.observe(documentFooter);\n } */\n\n if (this.buyingOptionsBar) this.buyingOptionsBar.style.display = 'flex';\n if (this.buyingOptionsToggler) this.buyingOptionsToggler.style.display = 'flex';\n\n // Open buying options popover on page load IF user has not closed it before OR we are on product page\n if (window.innerWidth >= 768) {\n // Only 768+ screens\n if (document.body.classList.contains('open-buying-options') || (storage.local && localStorage.getItem('buyingOtionsOnceClosed') !== 'true')) {\n self.toggleBuyingOptions(true);\n }\n }\n\n } // init()\n\n};\n\ninterface BuyingOptionsBar {\n buyingOptions: any;\n tyreData: TyreData | null;\n selectedSize: any;\n selectedVehicle: any;\n foundSizes: any[];\n buyingOptionsBar: HTMLElement | null;\n buyingOptionsPopover: HTMLElement | null;\n buyingOptionsVehicle: HTMLElement | null;\n buyingOptionsTyreSize: HTMLElement | null;\n buyingOptionsToggler: HTMLElement | null;\n buyingOptionsIconToggler: HTMLElement | null;\n tyreOptionsContainer: HTMLElement | null;\n tyreOptionsTemplate: string;\n tyreselectorLink: HTMLElement | null;\n buyingOptionsOpen: string;\n buyingOptionsClose: string;\n sendAnalyticsEvent: (type: string, data?: any) => void;\n toggleBuyingOptions: (show: boolean | null, sendEvent?: boolean) => boolean;\n updatePopoverContentAndActions: () => void;\n storeBuyingOptions: (data: any) => void;\n loadBuyingOptions: () => void;\n getSelectedTyreData: () => void;\n updateFoundSizes: () => void;\n scrollToTyreselector: () => boolean;\n onDocumentKeyDown: (event: KeyboardEvent) => void;\n init: () => void;\n}\n\ninterface TyreData {\n width: number;\n height: number;\n rim: number;\n tsViewNavItem: string;\n tsViews: string;\n manufacturer?: {\n text: string;\n value: string;\n };\n model?: {\n text: string;\n value: string;\n };\n vehicle?: {\n text: string;\n value: string;\n }\n year?: {\n text: string;\n value: string;\n };\n license?: {\n text: string;\n data: {\n id: string;\n manufacturer: string;\n model: string;\n year: string;\n kw: string;\n hp: string;\n tyres: any;\n wheels: any;\n pcd: string;\n offset: string;\n center_bore: string;\n sorted: string[];\n };\n }\n}\n\ndeclare global {\n interface Window {\n dataLayer: any[];\n buyingOptionsData: any;\n buyingOptionsTyreSizes: Array<{\n code: string;\n height: number;\n loadIndex: number;\n productInfo: string;\n rim: number;\n speedRating: string;\n width: number;\n }>;\n }\n}\n\nexport default buyingOptionsBar;\n","'use_strict';\n\nimport Mustache from 'mustache';\n\n/**\n * Animations for location prompt\n */\nconst animations = {\n slideUp(el, delay?) {\n el.style.display = '';\n const animation = el.animate({ transform: ['translateY(0%)', 'translateY(-100%)'] }, delay || 200);\n animation.onfinish = () => {\n el.style.display = 'none';\n };\n return animation;\n },\n\n slideDown(el, delay?) {\n const animation = el.animate({ transform: ['translateY(-100%)', 'translateY(0px)'] }, delay || 200);\n return animation;\n },\n};\n\n/**\n * Partition function. Divides array into two based on a filter function.\n *\n * @param {array} array - Array to divide\n * @param {function} filter - Filtering function\n *\n * @returns {array}\n */\nfunction partition(array, filter) {\n let pass: any[] = [], fail: any[] = [];\n array.forEach((e, idx, arr) => (filter(e, idx, arr) ? pass : fail).push(e));\n return [pass, fail];\n}\n\nfunction isAdmin() {\n return document.body.classList.contains('view-admin-editor');\n}\n\nlet locationPrompts: LocationPrompt = {\n\n /**\n * Redirect to another page\n * @param {string} address - url to redirect to\n * @param {boolean} matchPage - Check if current page exists in target site language. Otherwise redirects to target url in db (usually homepage).\n *\n * @returns {void}\n */\n redirect: function (address, matchPage = false) {\n let targetAddress = address;\n\n if (matchPage) {\n const targetAddressHost = new URL(address).host;\n const langVersionUrls = Array.from(document.querySelectorAll('link[rel=\"alternate\"]')).map(el => (el as HTMLLinkElement).href);\n const matchedPageUrl = langVersionUrls.find(url => new URL(url).host === targetAddressHost);\n\n if (matchedPageUrl) {\n targetAddress = matchedPageUrl;\n }\n\n // NTCONT-1396: No redirect on news article page.\n if (document.location.pathname.indexOf('/about-us/news-article/') === 0) {\n return;\n }\n }\n\n document.location.replace(targetAddress);\n },\n\n /**\n * Hide the prompt\n * @param {boolean} chosenValue - true or false\n * @param {object} rule - Object with prompt data\n *\n * @returns {void}\n */\n hideCountryPrompt: function (chosenValue, rule) {\n let locationPrompt = document.getElementById('locationPrompt');\n document.querySelector(':root')?.classList.toggle('locationPromptOpen', false);\n animations.slideUp(locationPrompt);\n locationPrompt?.blur();\n locationPrompt?.setAttribute('aria-hidden', 'true');\n if (window.sessionStorage) {\n sessionStorage.setItem('prompt_' + rule.uuid, chosenValue.toString());\n if (rule.analytics_id) {\n sessionStorage.setItem('campaign_popover_click', (chosenValue ? '1' : '0'));\n }\n }\n if (chosenValue) {\n setTimeout(function () {\n locationPrompts.redirect(rule.redirection_target);\n }, 500);\n }\n },\n\n /**\n * Show the prompt\n * @param {object} rule - Object with prompt data\n *\n * @returns {void}\n */\n showCountryPrompt: function (rule) {\n\n let locationPrompt = document.getElementById('locationPrompt');\n\n if (!locationPrompt) {\n\n locationPrompt = locationPrompts.createPromptElement(rule)\n\n locationPrompt.setAttribute('aria-hidden', 'true');\n\n document.body.insertBefore(locationPrompt, document.body.firstChild);\n\n document.querySelector('a.yes')?.addEventListener('click', function (e) {\n e.preventDefault();\n\n /* send analytics event for clicking the prompt for redirect */\n if (rule.analytics_id) {\n locationPrompts.sendToAnalytics('campaign_popover_click', false, { campaign_popover_id: rule.analytics_id });\n } else {\n locationPrompts.sendToAnalytics('geo_redirect_click', rule.redirection_target);\n }\n\n locationPrompts.hideCountryPrompt(true, rule);\n });\n\n document.querySelector('a.no')?.addEventListener('click', function (e) {\n e.preventDefault();\n locationPrompts.hideCountryPrompt(false, rule);\n });\n\n document.querySelector(':root')?.classList.toggle('locationPromptOpen', true);\n\n\n locationPrompt.classList.toggle('locationPromptOpen', true);\n locationPrompt.blur();\n locationPrompt.setAttribute('aria-hidden', 'false');\n animations.slideDown(locationPrompt);\n }\n\n },\n\n /**\n * Send event to Google Analytics\n * @param {string} eventName - name of the event\n * @param {string} target - target url\n * @param {object} optional - optional event properties\n */\n sendToAnalytics: function (eventName, target, optional) {\n\n if (!isAdmin()) {\n window.dataLayer = window.dataLayer || []; // Not in admin > Push event to dataLayer\n let dataObject: {\n event: string,\n geo_from?: string,\n geo_to?: string,\n } = {\n 'event': eventName,\n }\n\n if (typeof target === 'string') {\n dataObject.geo_from = window.location.origin;\n dataObject.geo_to = target;\n }\n\n if (optional) dataObject = { ...dataObject, ...optional };\n\n window.dataLayer.push(dataObject);\n }\n\n },\n\n /**\n * Create a div with id locationPrompt\n * add svg icon, text and buttons\n * @param {object} rule - Object with prompt data\n * @returns {object} - locationPrompt element\n */\n createPromptElement: function (rule) {\n let locationPrompt = document.createElement('div');\n locationPrompt.setAttribute('id', 'locationPrompt');\n locationPrompt.innerHTML = Mustache.render(window.location_prompts!.template, rule);\n return locationPrompt\n },\n\n /**\n * Check redirection rules. These might have automatic redirects or manual prompt\n * @param location\n * @param rules\n * @returns {boolean}\n */\n\n checkRedirectRules(location: UserLocation, rules) {\n\n const [automaticRules, promptRules] = partition(rules, rule => rule.automatic_redirect === true);\n\n // Check automatic redirects first\n // They are not active in admin & editor views, unless testing with ?runRedirects=1 queryparam\n const isAdminView = isAdmin();\n const urlParams = new URLSearchParams(window.location.search);\n const testParam = urlParams.get('runRedirects');\n\n if (!isAdminView || (isAdminView && testParam)) {\n for (const automaticRule of automaticRules) {\n let rule = automaticRule as LocationRule;\n const countryCodes = rule.location_codes ? rule.location_codes.split(',') : [];\n const subdivisionCodes = rule.subdivision_codes ? rule.subdivision_codes.split(',') : [];\n\n // Do redirect only once. Has this redirect been performed before during this session?\n const item = window.sessionStorage ? sessionStorage.getItem('prompt_auto_' + rule.uuid) : false;\n\n if (!item) {\n if (rule.rule === 'inside_country_inside_subdivision') {\n if (countryCodes.length === 0 || subdivisionCodes.length === 0) {\n // Invalid rule, cannot match both if both not set. Skip this rule.\n console.log('[LocationPrompts] Skipping invalid rule: ' + rule.uuid);\n continue;\n }\n\n if (countryCodes.includes(location.countryCode || '') && subdivisionCodes.includes(location.subdivisionCode || '')) {\n // Match, redirect\n if (window.sessionStorage) {\n sessionStorage.setItem('prompt_auto_' + rule.uuid, 'true');\n }\n locationPrompts.redirect(rule.redirection_target, true);\n return true;\n }\n } else if (rule.rule === 'inside_country_outside_subdivision') {\n if (countryCodes.length === 0 || subdivisionCodes.length === 0) {\n // Invalid rule, cannot match both if both not set. Skip this rule.\n console.log('[LocationPrompts] Skipping invalid rule: ' + rule.uuid);\n continue;\n }\n\n if (countryCodes.includes(location.countryCode || '') && !subdivisionCodes.includes(location.subdivisionCode || '')) {\n // Match, redirect\n if (window.sessionStorage) {\n sessionStorage.setItem('prompt_auto_' + rule.uuid, 'true');\n }\n locationPrompts.redirect(rule.redirection_target, true);\n return true;\n }\n } else if (rule.rule === 'inside_country') {\n if (countryCodes.includes(location.countryCode || '')) {\n if (window.sessionStorage) {\n sessionStorage.setItem('prompt_auto_' + rule.uuid, 'true');\n }\n locationPrompts.redirect(rule.redirection_target, true);\n return true;\n }\n } else if (rule.rule === 'outside_country') {\n if (!countryCodes.includes(location.countryCode || '')) {\n if (window.sessionStorage) {\n sessionStorage.setItem('prompt_auto_' + rule.uuid, 'true');\n }\n locationPrompts.redirect(rule.redirection_target, true);\n return true;\n }\n }\n }\n }\n }\n\n // Normal prompts for other rules\n for (let i = 0; i < promptRules.length; i++) {\n\n const rule = rules[i];\n const location_codes = rule.location_codes ? rule.location_codes.split(',') : null;\n\n // has this prompt been answered?\n const item = window.sessionStorage ? sessionStorage.getItem('prompt_' + rule.uuid) : false; /* if sessionstorage is available, but item was not found, item becomes null */\n if (item || !location_codes) return false;\n\n // rule match\n if ((rule.rule === 'inside_country' && location_codes.indexOf(location.countryCode || '') !== -1) ||\n (rule.rule === 'outside_country' && location_codes.indexOf(location.countryCode || '') === -1)) {\n\n setTimeout(function () {\n locationPrompts.showCountryPrompt(rule);\n\n /* send analytics event for showing the prompt */\n locationPrompts.sendToAnalytics('geo_redirect_impression', rule.redirection_target);\n }, 1000);\n\n return true;\n }\n }\n\n return false;\n },\n\n /**\n * Check campaign rules. These might have AB testing active, where prompt is only shown to certain amount of users.\n * Only show prompt once, compared to redirection where it is shown every time until closed or redirected.\n *\n * @param location\n * @param rules\n * @returns {boolean}\n */\n\n checkCampaignRules(location, rules) {\n for (let i = 0; i < rules.length; i++) {\n\n const rule = rules[i];\n const location_codes = rule.location_codes ? rule.location_codes.split(',') : null;\n\n // /* has this prompt been answered? */\n const item = window.sessionStorage ? sessionStorage.getItem('prompt_' + rule.uuid) : false; /* if sessionstorage is available, but item was not found, item becomes null */\n if (item || !location_codes) return false;\n\n // Randomize for AB testing.\n let skipByABTest = false;\n const random = Math.random() * 100;\n // AB_test_ratio should be a string 1-100. If faulty format or missing, show prompt to all\n if (!isNaN(rule.ab_test_ratio as unknown as number) ? random >= parseInt(rule.ab_test_ratio as unknown as string) : false) {\n skipByABTest = true;\n }\n\n // rule match\n if ((rule.rule === 'inside_country' && location_codes.indexOf(location.countryCode || '') !== -1) ||\n (rule.rule === 'outside_country' && location_codes.indexOf(location.countryCode || '') === -1)) {\n\n if (!skipByABTest) {\n setTimeout(function () {\n locationPrompts.showCountryPrompt(rule);\n }, 1000);\n }\n\n /* send analytics event for the prompt whether we show it or not */\n locationPrompts.sendToAnalytics(\n 'campaign_popover_impression',\n false,\n {\n campaign_popover_id: rule.analytics_id,\n campaign_popover_show: skipByABTest ? 0 : 1\n }\n );\n\n // Store that this prompt has been shown, we only want to show it once\n sessionStorage.setItem('prompt_' + rule.uuid, false.toString());\n sessionStorage.setItem('campaign_popover_show', (skipByABTest ? '0' : '1'));\n\n return !skipByABTest;\n }\n }\n\n return false;\n },\n\n /**\n * Check if there are any redirection rules that apply to the user\n * @param {Location} location - user's detected location\n * @returns {void}\n */\n checkRules: function (location = {}) {\n const rules = window.location_prompts?.rules || false;\n const campaignRules = window.location_prompts?.campaignRules || false;\n\n if (typeof location !== 'object' || !location.countryCode) {\n return;\n }\n\n let promptShown = false;\n\n // Redirection rules take precedence over campaign rules\n if (Array.isArray(rules)) {\n promptShown = this.checkRedirectRules(location, rules);\n }\n\n // Show campaign prompt only if no redirection prompt was shown\n if (!promptShown && Array.isArray(campaignRules)) {\n this.checkCampaignRules(location, campaignRules);\n }\n },\n\n /**\n * Initialize location prompts\n * @returns {void}\n */\n init: function () {\n // Check if there any redirection rules in page source\n if (!window.location_prompts) {\n return false; // no rules no worry\n }\n\n if (!window.sessionStorage) {\n return false; // no sessionstorage, no worry\n }\n\n // Get user's location from session storage.\n const userLocation = window.sessionStorage ? sessionStorage.getItem('user_location') : false;\n\n if (!userLocation) {\n const currentLanguage = document.documentElement.lang;\n\n /* fetch country code from server */\n fetch(`/stage-ajax/getCountryAndIP?currentLanguage=${currentLanguage}`, {\n method: 'get',\n cache: 'no-cache',\n headers: {\n 'X-Requested-With': 'XMLHttpRequest'\n },\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (data) {\n // Store response to session storage. We don't want to query location service every time.\n sessionStorage.setItem('user_location', JSON.stringify(data));\n // At least countrycode must exist. Others optional.\n if (data?.countryCode) {\n locationPrompts.checkRules(data);\n }\n })\n .catch(function (error) {\n console.error(error);\n });\n\n }\n else if (userLocation) {\n let userLocationData;\n try {\n userLocationData = JSON.parse(userLocation);\n } catch (e) {\n userLocationData = false;\n }\n\n locationPrompts.checkRules(userLocationData);\n }\n }\n};\n\ninterface LocationRule {\n redirection_target: string;\n rule: string;\n uuid: string;\n location_codes: string;\n subdivision_codes: string;\n yes_text: string;\n no_text: string;\n question: string;\n}\n\ninterface RedirectRule extends LocationRule {\n automatic_redirect: boolean;\n}\n\ninterface CampaignRule extends LocationRule {\n title?: string;\n ab_test_ratio?: string;\n analytics_id: string;\n}\n\ndeclare global {\n interface Window {\n location_prompts?: {\n rules: RedirectRule[];\n campaignRules: CampaignRule[];\n template: string;\n }\n }\n}\n\ninterface UserLocation {\n countryCode?: string;\n subdivisionCode?: string;\n}\ninterface LocationPrompt {\n redirect(address: string, matchPage?: boolean): void;\n hideCountryPrompt(chosenValue: boolean, rule: any): void;\n showCountryPrompt(rule: any): void;\n sendToAnalytics(eventName: string, target: string | boolean, optional?: object): void;\n createPromptElement(rule: any): HTMLElement;\n checkRules(location: UserLocation): void;\n checkRedirectRules(location: UserLocation, rules: RedirectRule[]): boolean;\n checkCampaignRules(location: UserLocation, rules: CampaignRule[]): boolean;\n init: () => void;\n}\n\nexport default locationPrompts;\n","const DEFAULT_CHUNK_SIZE = 8 * 1024 * 1024;\n\n/**\n * Class for uploading file to google cloud storage via resumable upload.\n *\n * @example\n *\n * const upload = new GoogleCloudStorageUpload();\n * const uploadResult = await upload.createUpload(file, { context: 'mycampaign' });\n * if (uploadResult) {\n * upload.upload();\n * }\n *\n * @see {@link https://cloud.google.com/storage/docs/resumable-uploads}\n */\nclass GoogleCloudStorageUpload {\n\n #id = '';\n\n /**\n * @type {AbortController}\n */\n #abortController = null;\n /**\n * @type {File}\n */\n #file = null;\n /**\n * @type {UploadResult}\n */\n #uploadResult = null;\n #listeners = [];\n\n constructor() {\n this.#id = 'gcsu-' + crypto.randomUUID();\n }\n\n /**\n * Get id for this upload instance.\n *\n * @returns {string} Unique id.\n */\n getId() {\n return this.#id;\n }\n\n /**\n * Get file that will be uploaded.\n *\n * @returns {File}\n */\n getFile() {\n return this.#file;\n }\n\n /**\n * Get upload result.\n *\n * @returns {UploadResult | null} Result object if {@link startResumableUpload} has been called, null otherwise.\n */\n getUploadResult() {\n return this.#uploadResult;\n }\n\n addEventListener(name, callback) {\n this.#listeners.push({ name, callback });\n }\n\n removeEventListener(name, callback) {\n this.#listeners.filter(item => item.name !== name && item.callback !== callback);\n }\n\n #trigger(name, data = []) {\n this.#listeners.filter(item => item.name === name).forEach(item => {\n item.callback.apply(null, data);\n });\n }\n\n /**\n * Creates resumable file upload which will enable uploading file data directly to Google Cloud Storage bucket.\n *\n * @param {File} file File to upload.\n * @param {object} options File options.\n * @param {string} options.context Defines context where this file belongs to (eg. campaign id), this is internally mapped to correct bucket and folder.\n * @param {string} [options.name] Preferred file name, this may or may not be used in bucket.\n * @param {boolean} [options.startUpload] Whether data upload is started immediately. If false, upload must be started by calling {@link upload} method.\n * @param {number} [options.chunkSize] Size of single chunk in bytes. Defaults to 4MB.\n * @return {Promise} Upload result object or error if upload could not be created.\n */\n async createUpload(file, options = {}) {\n if (this.getUploadResult()) {\n throw new Error('Upload session already started');\n }\n\n const response = await fetch('/api/v1/uploads/upload/', {\n method: 'POST',\n body: JSON.stringify({\n context: options.context,\n name: options.name || file.name || '',\n contentType: file.type,\n contentLength: file.size,\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Requested-with': 'XMLHttpRequest',\n },\n });\n const body = await response.json();\n if (response.status !== 201) {\n throw new Error(body.message);\n }\n\n const chunkSize = options.chunkSize || DEFAULT_CHUNK_SIZE;\n this.#file = file;\n this.#setUploadResult({\n ...body,\n resultUrl: null,\n status: 'new',\n bytesUploaded: 0,\n chunkSize,\n progress: 0,\n });\n if (options.startUpload) {\n this.upload();\n }\n\n return this.getUploadResult();\n }\n\n #setUploadResult(result = {}) {\n const newResult = {\n ...(this.#uploadResult || {}),\n ...result,\n };\n const oldResult = this.#uploadResult;\n this.#uploadResult = newResult;\n this.#trigger('change', [newResult, oldResult]);\n\n if (newResult.status !== oldResult?.status) {\n this.#trigger('status', [newResult.status]);\n }\n\n if (newResult.status === 'uploading' && newResult.progress !== oldResult?.progress) {\n this.#trigger('progress', [newResult.progress]);\n }\n }\n\n /**\n * Get amount of bytes sent from range header.\n *\n * @param {string} value Header value.\n * @returns {number} Amount of bytes sent.\n */\n #parseRangeHeader(value) {\n const range = value ? value.replace('bytes=', '').trim() : '';\n if (!value || value.includes(',')) {\n throw new Error('Unsupported range value: ' + value);\n }\n const lastByte = parseInt(range.split('-')[1]);\n if (isNaN(lastByte)) {\n throw new Error('Byte amount not defined in range header: ' + value);\n }\n\n return lastByte === 0 ? 0 : lastByte + 1;\n }\n\n /**\n * Get upload session status from storage api.\n *\n * @param {string} url Upload url.\n * @param {number} contentLength Total file size.\n * @returns {Promise} Upload status and amount of bytesUploaded if current status is `waiting`.\n */\n async #fetchUploadStatus(url, contentLength) {\n try {\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n 'Content-Length': '0',\n 'Content-Range': `bytes */${contentLength}`\n }\n });\n\n if (response.status === 200 || response.status === 201) {\n return {\n status: 'completed'\n };\n }\n else if (response.status === 308) {\n return {\n status: 'waiting',\n bytesUploaded: this.#parseRangeHeader(response.headers.get('range')),\n };\n }\n else if (response.status >= 500) {\n return {\n status: 'interrupted'\n };\n }\n else {\n return {\n status: 'failed'\n };\n }\n }\n catch (e) {\n return {\n status: 'failed'\n };\n }\n }\n\n /**\n * Uploads next chunk of data to Google Cloud Storage.\n */\n async #uploadNextChunk() {\n const result = this.getUploadResult();\n if (['error', 'failed', 'completed'].includes(result.status)) {\n return;\n }\n let bytesUploaded = result.bytesUploaded;\n\n // Since upload was stopped, we should request up-to-date status from server so that we do not accidentally corrupt uploaded file\n if (['paused', 'interrupted'].includes(result.status)) {\n const statusResult = await this.#fetchUploadStatus(result.url, result.contentLength);\n if (statusResult.status === 'waiting') {\n bytesUploaded = statusResult.bytesUploaded;\n }\n else if (statusResult.status === 'completed') {\n this.#setUploadResult({\n bytesUploaded: result.contentLength,\n progress: 1,\n status: 'completed'\n });\n return;\n }\n else {\n this.#setUploadResult({\n status: statusResult.status,\n });\n return;\n }\n }\n\n const file = this.getFile();\n const start = bytesUploaded;\n const end = Math.min(result.chunkSize + start, file.size);\n const body = file.slice(start, end, file.type);\n this.#abortController = new AbortController();\n\n this.#setUploadResult({\n status: 'uploading',\n });\n\n try {\n const headers = {\n 'Content-Length': body.size,\n };\n\n if (result.bytesUploaded > 0 || result.chunkSize < result.contentLength) {\n headers['Content-Range'] = `bytes ${start}-${end - 1}/${file.size}`;\n }\n\n const response = await fetch(result.url, {\n method: 'PUT',\n headers,\n body,\n signal: this.#abortController.signal,\n });\n //console.log('Upload', response);\n\n if (response.status === 308) {\n const newBytesUploaded = this.#parseRangeHeader(response.headers.get('range'));\n this.#setUploadResult({\n bytesUploaded: newBytesUploaded,\n progress: newBytesUploaded / result.contentLength\n });\n //console.log(this.getUploadResult());\n\n if (this.getUploadResult().status === 'uploading') {\n this.#uploadNextChunk();\n }\n this.#abortController = null;\n return;\n }\n\n const newResult = {};\n if (response.status === 200 || response.status === 201) {\n const responseBody = await response.json();\n newResult.bytesUploaded = result.contentLength;\n newResult.progress = 1;\n newResult.status = 'completed';\n newResult.resultUrl = responseBody.mediaLink;\n }\n else if (response.status >= 500) {\n newResult.status = 'interrupted';\n }\n else {\n newResult.status = 'failed';\n }\n\n this.#setUploadResult(newResult);\n }\n catch(e) {\n console.error('Upload', e);\n\n // Error was caused manual call to abort controller, status change is handled by caller\n if (['PAUSED', 'CANCELED'].includes(e?.message || e)) {\n return;\n }\n\n this.#setUploadResult({\n status: 'failed'\n });\n }\n finally {\n this.#abortController = null;\n }\n }\n\n /**\n * Continues or starts upload process.\n *\n * @return {boolean} True if upload was started/continued.\n */\n upload() {\n const result = this.getUploadResult();\n if (!result.status || !['new', 'paused', 'interrupted'].includes(result.status)) {\n return false;\n }\n\n this.#uploadNextChunk();\n\n return true;\n }\n\n /**\n * Pauses upload process after current chunk has been uploaded.\n *\n * @return {boolean} True if upload was paused.\n */\n pauseUpload() {\n const result = this.getUploadResult();\n if (!result?.status || !['new', 'uploading'].includes(result.status)) {\n return false;\n }\n\n if (this.#abortController) {\n this.#abortController.abort('PAUSED');\n this.#abortController = null;\n }\n this.#setUploadResult({\n status: 'paused',\n });\n\n return true;\n }\n\n /**\n * Cancels created resumable upload instance.\n *\n * Note! If upload is already completed, this does nothing.\n *\n * @returns {boolean} True if upload was canceled.\n */\n cancelUpload() {\n const result = this.getUploadResult();\n if (!result || result?.status === 'completed') {\n return false;\n }\n\n if (this.#abortController) {\n this.#abortController.abort('CANCELED');\n this.#abortController = null;\n }\n this.#setUploadResult({\n status: 'canceled',\n });\n\n // Send request to server that attempts to cancel upload session\n fetch(`/api/v1/uploads/upload/${result.id}/`, {\n method: 'DELETE',\n headers: {\n 'X-Requested-with': 'XMLHttpRequest',\n },\n }).then((response) => {\n console.log('Cancel', response);\n }).catch((e) => {\n console.error('Cancel', e);\n });\n\n return true;\n }\n\n}\n\n/**\n * @export\n * @typedef {object} UploadResult\n * @prop {string} id Upload id.\n * @prop {string} url Upload url.\n * @prop {string|null} resultUrl Url to uploaded file.\n * @prop {string} contentType File content type.\n * @prop {number} contentLength File length in bytes.\n * @prop {string} status Current upload status. One of: `new`, `uploading`, `paused`, `completed`, `canceled`, `failed`, 'interrupted'\n * @prop {number} bytesUploaded Amount of uploaded chunks.\n * @prop {number} chunkSize Maximum amount of bytes sent in one request.\n * @prop {number} progress Upload progress as a float between 0 and 1.\n */\n\nexport default GoogleCloudStorageUpload;\n","class I18N {\n\n #translations = {};\n\n /**\n * Adds translations to global translation object.\n *\n * @param {object} translations Translations key and value.\n */\n addTranslations(translations) {\n if (typeof translations !== 'object') {\n throw new Error('Object containing localisation key and value expected.');\n }\n\n this.#translations = {\n ...this.#translations,\n ...translations,\n };\n }\n\n /**\n * Get translated string.\n *\n * @param {string} key Translation key.\n * @param {object} params Replacement values.\n * @return {string} Localized string\n */\n translate(key, params = {}) {\n const value = this.#translations[key];\n if (typeof value === 'string') {\n return replacePlaceholders(value, params);\n }\n return key;\n }\n\n}\n\nconst i18n = new I18N();\nexport default i18n;\n\n\n/**\n * Get translated string.\n *\n * @param {string} key Translation key.\n * @param {object} params Replacement values.\n * @return {string} Localized string\n */\nfunction t(key, params) {\n return i18n.translate(key, params);\n}\n\n/**\n * Replaces placeholders with provided values.\n *\n * @param {string} string Value with placeholders.\n * @param {object} params Replacement values.\n * @return {string} String with replaced placeholders.\n */\nfunction replacePlaceholders(string, params) {\n if (typeof params === 'object') {\n for (let param in params) {\n string = string.split('%' + param + '%').join(params[param]);\n }\n }\n return string;\n}\n\nexport { t, replacePlaceholders };\n","import GoogleCloudStorageUpload from './google-cloud-storage-upload';\n\nimport i18n, { t } from './i18n';\n\nif (window.fileUploaderTranslations) {\n i18n.addTranslations(window.fileUploaderTranslations);\n}\n\nconst icons = {\n loading: `\n \n \n \n `,\n success: `\n \n \n \n `,\n};\n\n/**\n * Component which converts basic file input field to more advanced input that supports resumable uploads.\n */\nclass FileUploader {\n\n /**\n * @type {GoogleCloudStorageUpload[]}\n */\n #fileUploads = [];\n\n #maxFileCount = 1;\n #elements = {\n /**\n * @type {HTMLInputElement}\n */\n input: null,\n /**\n * @type {HTMLDivElement}\n */\n fileContainer: null,\n /**\n * @type {HTMLDivElement}\n */\n dragArea: null,\n };\n\n /**\n * Create FileUploader instance.\n *\n * @param {HTMLInputElement} fileInput File input to convert to file uploader component.\n */\n constructor(fileInput) {\n this.#maxFileCount = fileInput.multiple ? parseInt(fileInput.dataset.maxFiles || '5') : 1;\n const id = fileInput.id || fileInput.name;\n\n fileInput.insertAdjacentHTML('afterend', `\n \n
\n
\n
\n ${t('file_uploader__input__draganddrop')}\n ${t('file_uploader__input__or')}\n ${t('file_uploader__input__click')}\n
\n
\n `);\n\n fileInput.multiple = false;\n fileInput.dataset.originalName = fileInput.name;\n fileInput.name = '';\n\n this.#elements.input = fileInput;\n this.#elements.hiddenInput = document.querySelector(`.js-file-uploader-hidden-input[data-id=\"${id}\"]`);\n this.#elements.fileContainer = document.querySelector(`.js-file-uploader-files[data-id=\"${id}\"]`);\n this.#elements.dragArea = document.querySelector(`.js-file-uploader-dragarea[data-id=\"${id}\"]`);\n this.#elements.dragArea.appendChild(fileInput);\n fileInput.addEventListener('dragenter', (e) => {\n //console.log('dragover', { e });\n e.target.classList.add('dragover');\n });\n fileInput.addEventListener('dragleave', (e) => {\n //console.log('dragleave', { e });\n e.target.classList.remove('dragover');\n });\n fileInput.addEventListener('dragend', (e) => {\n //console.log('dragend', { e });\n e.target.classList.remove('dragover');\n });\n fileInput.addEventListener('drop', (e) => {\n //console.log('drop', { e });\n e.target.classList.remove('dragover');\n });\n\n fileInput.addEventListener('change', (e) => {\n const newFiles = Array.from(fileInput.files).filter(file => {\n const oldFile = this.#fileUploads.find(upload => upload.getFile()?.name === file.name && upload.getFile()?.size === file.size);\n return !oldFile;\n });\n newFiles.forEach(file => {\n const uploadInstance = new GoogleCloudStorageUpload();\n const uploadId = uploadInstance.getId();\n const html = this.#renderFileTemplate(uploadId, file);\n this.#elements.fileContainer.insertAdjacentHTML('beforeend', html);\n const fileEl = this.#elements.fileContainer.querySelector(`.js-upload-file[data-upload=\"${uploadId}\"]`);\n const fileStatus = fileEl.querySelector('.js-upload-file-status');\n const fileButtons = fileEl.querySelectorAll('.js-upload-file-button');\n\n const updateHiddenInput = () => {\n const completedUploads = this.#fileUploads.filter(item => item.getUploadResult()?.status === 'completed');\n const fileUrls = completedUploads.map(item => item.getUploadResult().resultUrl || item.getUploadResult().id);\n this.#elements.hiddenInput.value = fileUrls.join(',');\n };\n\n const updateFileCount = () => {\n const fileLimitReached = this.#isMaxFiles();\n this.#elements.dragArea.hidden = fileLimitReached;\n this.#elements.input.disabled = fileLimitReached;\n };\n\n const removeFile = () => {\n fileEl.remove();\n this.#fileUploads = this.#fileUploads.filter(item => item !== uploadInstance);\n };\n\n function updateFileView(status = 'create', progress = 0, message = '') {\n let visibleButtons = [];\n let icon = '';\n let statusText = '';\n const formattedProgress = progress > 0 || status === 'uploading' ? ` - ${Math.floor(progress * 100)}%` : '';\n if (status === 'new') {\n statusText = t('file_uploader__status__new');\n icon = icons.loading;\n visibleButtons = ['continue', 'cancel'];\n }\n else if (status === 'uploading') {\n statusText = t('file_uploader__status__uploading') + formattedProgress;\n icon = icons.loading;\n visibleButtons = ['pause', 'cancel'];\n }\n else if (status === 'paused') {\n statusText = t('file_uploader__status__paused') + formattedProgress;\n visibleButtons = ['continue', 'cancel'];\n }\n else if (status === 'completed') {\n statusText = t('file_uploader__status__completed');\n icon = icons.success;\n visibleButtons = ['remove'];\n }\n else if (status === 'interrupted') {\n statusText = t('file_uploader__status__interrupted') + formattedProgress;\n visibleButtons = ['continue', 'cancel'];\n }\n else if (status === 'failed') {\n statusText = t('file_uploader__status__failed');\n visibleButtons = ['remove'];\n }\n else if (status === 'error') {\n statusText = t('file_uploader__error__upload_start') + (message ? ': ' + message : '');\n visibleButtons = ['remove'];\n }\n\n fileEl.dataset.status = status;\n fileStatus.innerHTML = icon + statusText;\n fileButtons.forEach(btn => {\n btn.hidden = !visibleButtons.includes(btn.dataset.action);\n });\n }\n\n fileButtons.forEach(el => {\n el.addEventListener('click', (e) => {\n if (e.target.dataset.action === 'cancel') {\n if (uploadInstance.cancelUpload()) {\n e.target.disabled = true;\n }\n }\n else if (e.target.dataset.action === 'pause') {\n if (uploadInstance.pauseUpload()) {\n e.target.disabled = true;\n }\n }\n else if (e.target.dataset.action === 'continue') {\n if (uploadInstance.upload()) {\n e.target.disabled = true;\n }\n }\n else if (e.target.dataset.action === 'remove') {\n removeFile();\n updateFileCount();\n updateHiddenInput();\n }\n });\n });\n\n uploadInstance.addEventListener('status', (status) => {\n if (status === 'canceled') {\n removeFile();\n }\n\n updateFileView(status, uploadInstance.getUploadResult().progress);\n updateFileCount();\n updateHiddenInput();\n\n this.#toggleFormSubmit();\n fileButtons.forEach(btn => {\n btn.disabled = false;\n });\n });\n uploadInstance.addEventListener('progress', (progress) => {\n updateFileView(uploadInstance.getUploadResult().status, progress);\n });\n\n uploadInstance.createUpload(file, {\n context: fileInput.dataset.uploadContext,\n startUpload: true\n }).then(() => {\n uploadInstance.error = false;\n }).catch((e) => {\n uploadInstance.error = e.message;\n updateFileView('error', 0, e.message);\n updateFileCount();\n });\n\n this.#fileUploads.push(uploadInstance);\n updateFileCount();\n });\n\n this.#toggleFormSubmit();\n fileInput.value = '';\n });\n }\n\n #toggleFormSubmit() {\n const form = this.#elements.input?.form;\n if (!form) {\n return;\n }\n\n const hasActiveUploads = this.#fileUploads.some(item => {\n const status = item.getUploadResult()?.status;\n return !status || ['new', 'uploading', 'paused', 'stopped'].includes(status);\n });\n form.querySelectorAll('[type=\"submit\"]').forEach(btn => {\n btn.disabled = hasActiveUploads;\n });\n }\n\n #isMaxFiles() {\n const validUploads = this.#fileUploads.filter(upload => {\n const status = upload.getUploadResult()?.status;\n return (!status && !upload.error) || ['new', 'uploading', 'paused', 'completed'].includes(status);\n });\n return validUploads.length >= this.#maxFileCount;\n }\n\n /**\n * Get maximum amount of files that can be uploaded.\n *\n * @returns {number}\n */\n getFileLimit() {\n return this.#maxFileCount;\n }\n\n /**\n * Get wrapped file input.\n *\n * @returns {HTMLInputElement}\n */\n getInput() {\n return this.#elements.input;\n }\n\n /**\n * Get file upload instances.\n *\n * @returns {GoogleCloudStorageUpload[]}\n */\n getFileUploads() {\n return this.#fileUploads;\n }\n\n /**\n * Get rendered template for single upload.\n *\n * @param {string} id Upload id.\n * @param {File} file File to be uploaded.\n * @returns {string} Rendered html.\n */\n #renderFileTemplate(id, file) {\n let filesize = file.size;\n\n if (file.size > 1024 * 1024 * 1024) {\n filesize = (file.size / (1024 * 1024 * 1024)).toFixed(1) + 'GB';\n }\n else if (file.size > 1024 * 1024) {\n filesize = (file.size / (1024 * 1024)).toFixed(1) + 'MB';\n }\n else {\n filesize = (file.size / 1024).toFixed(3) + 'KB';\n }\n\n const name = file.name;\n return `\n
\n
\n
\n ${name}\n (${filesize})\n
\n
\n \n \n \n ${t('file_uploader__status__new')}\n
\n
\n\n
\n \n \n \n \n
\n
\n `;\n }\n\n}\n\nexport default FileUploader;\n","// Trigger GTM send event for campaign forms (for now)\nconst analytics = {\n _storageId: 'stageNtFormSubmit',\n\n /**\n * Send form analytics to gtm.\n *\n * @param {Object} data Event properties.\n * @returns {void}\n */\n sendToGTM(data) {\n window.dataLayer = window.dataLayer || [];\n\n console.log(`form event ={\n event: ${data.eventType},\n form_campaign: ${data.eventName}\n }`)\n\n window.dataLayer.push({\n event: data.eventType,\n form_campaign: data.eventName\n });\n },\n\n /**\n * Queue stage form submit event to be resolved on following page load.\n *\n * @param {String} eventType Form gtm event type.\n * @param {String} eventName Form gtm event name.\n * @returns {Boolean} True if event was queued, false if not.\n */\n queueStageFormSubmitEvent(eventType, eventName) {\n try {\n window.localStorage.setItem(this._storageId, JSON.stringify({\n eventType: eventType,\n eventName: eventName,\n pageUrl: window.location.pathname,\n time: Date.now(),\n }));\n return true;\n } catch (e) {\n return false;\n }\n },\n\n /**\n * Resolves queued stage form submit event on page load.\n * @returns {Boolean} True if event was resolved, false if not.\n */\n resolveStageFormSubmitEvent() {\n try {\n const event = JSON.parse(window.localStorage.getItem(this._storageId)) || null;\n if (event) {\n if (\n window.location.pathname.indexOf(event.pageUrl) === 0 && // Current page must be either originating form page or direct child (thank you page)\n event.time + 10000 > Date.now() && // Queued event must not be expired (10 seconds)\n !document.querySelector(`[data-gtm-event-name=\"${event.eventName}\"]`) // Originating form must not exist on page (should be thank you message instead)\n ) {\n this.sendToGTM(event);\n }\n window.localStorage.removeItem(this._storageId);\n }\n return true;\n } catch (e) {\n return false;\n }\n }\n};\n\n\n/**\n * Provides GTM event sending for stage forms\n */\nclass FormAnalytics {\n\n #form = null;\n #submitting = false;\n\n /**\n * Create new form.\n *\n * @param {HTMLFormElement} form Form element.\n * @param {object} options Form options.\n */\n constructor(form) {\n this.#form = form;\n\n this.gtmEventType = form.querySelector('[data-gtm-event-type]')?.dataset?.gtmEventType\n this.gtmEventName = form.querySelector('[data-gtm-event-name]')?.dataset?.gtmEventName\n\n if (this.gtmEventName && this.gtmEventType) {\n console.log(`FormAnalytics init, data: event: ${this.gtmEventType}, form_campaign: ${this.gtmEventName}`)\n\n this.#form.addEventListener('submit', (e) => {\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.submit();\n });\n }\n\n }\n /**\n * Validates and submits form.\n */\n submit() {\n if (this.#submitting) {\n return;\n }\n\n this.#submitting = true;\n\n if (this.gtmEventType && this.gtmEventName) {\n analytics.queueStageFormSubmitEvent(this.gtmEventType, this.gtmEventName);\n }\n this.#form.submit();\n }\n}\n\n\nfunction initFormAnalytics() {\n analytics.resolveStageFormSubmitEvent();\n\n // Common form, newsletter, myvianor profile form\n document.querySelectorAll('form.form--stage').forEach(form => {\n new FormAnalytics(form);\n });\n}\n\nexport default FormAnalytics;\nexport { initFormAnalytics, analytics };\n","import Navigation from './modules/navigation';\nimport QuickSearch from './modules/quick-search';\nimport SiteSearch from './modules/site-search';\nimport seasonDependingContent from '../../../common/build/helpers/season-depending';\nimport buyingOptionsBar from './modules/buying-options-bar';\nimport locationPrompts from './modules/location-prompts';\nimport FileUploader from './modules/file-uploader';\nimport { initFormAnalytics } from './modules/form-analytics';\n\ndeclare global {\n interface Window {\n Hatch?: {\n init?: () => void;\n };\n hatchInit?: string;\n }\n}\n\nimport { common, toggle } from '@nt-workspace/common';\n\ndocument.addEventListener(\"DOMContentLoaded\", function (event) {\n // Core website functionality, loaded always\n\n common.lazyLoadMedia.init();\n locationPrompts.init();\n\n document.querySelectorAll('.js-file-uploader').forEach(fileInput => {\n new FileUploader(fileInput as HTMLInputElement);\n });\n\n if (window.Hatch && typeof window.Hatch.init === 'function') {\n window.Hatch.init();\n }\n\n buyingOptionsBar.init();\n initFormAnalytics();\n\n new seasonDependingContent();\n\n const navEl = document.querySelector('[data-main-navigation]') as HTMLElement;\n if (navEl) {\n new Navigation(navEl);\n }\n\n const quickSearchEl = document.querySelector('[data-quick-search]') as HTMLElement;\n if (quickSearchEl) {\n new QuickSearch(quickSearchEl, {\n site: quickSearchEl.dataset.site || '',\n });\n }\n\n const siteSearchEl = document.querySelectorAll('.js-site-search');\n if(siteSearchEl.length) {\n siteSearchEl.forEach((el) => {\n new SiteSearch(el as HTMLElement);\n });\n }\n\n const toggles = document.querySelectorAll('.js-toggle');\n if (toggles.length) {\n for (let toggleEl of toggles) {\n toggle.initToggle(toggleEl as HTMLElement);\n }\n }\n\n // Component functionality, loaded only when needed\n\n const accordionTabs = document.querySelectorAll('.js-accordion-tabs');\n if (accordionTabs.length) {\n import(/* webpackChunkName: \"accordionTabs\", webpackMode: \"lazy\" */ '../../../common/build/helpers/accordionTabs').then(m => {\n for (let element of accordionTabs) {\n m.default.init(element as HTMLElement);\n }\n });\n }\n\n const tooltips = document.getElementsByClassName('js-tooltip');\n if (tooltips.length) {\n import(/* webpackChunkName: \"tooltip\", webpackMode: \"lazy\" */ '../../../common/build/helpers/tooltip').then(m => {\n for (let collection of tooltips) {\n m.init(collection as HTMLElement);\n }\n });\n }\n\n const contentCardsliders = document.getElementsByClassName('js-content-card-slider');\n if (contentCardsliders.length) {\n import(/* webpackChunkName: \"slider\", webpackMode: \"lazy\" */ './modules/content-card-slider').then(({ init }) => {\n for (let element of contentCardsliders) {\n init(element as HTMLElement);\n }\n });\n }\n\n // Product elements\n\n const productSliderElements = document.querySelectorAll('.product-slider');\n if (productSliderElements.length) {\n import(/* webpackChunkName: \"product-slider\", webpackMode: \"lazy\" */'./modules/product-slider/product-slider').then(m => { // jshint ignore:line\n m.init(productSliderElements);\n });\n }\n\n // Hatch\n const hatch = window.hatchInit === '1';\n if (hatch) {\n import(/* webpackChunkName: \"hatch\", webpackMode: \"lazy\" */'./modules/hatch').then(m => { // jshint ignore:line\n m.default.init();\n });\n }\n\n const productAwardSliders = document.getElementsByClassName('js-product-awards-slider');\n if (productAwardSliders.length) {\n import(/* webpackChunkName: \"slider\", webpackMode: \"lazy\" */ './modules/products/product-awards-slider').then(({ init }) => {\n for (let element of productAwardSliders) {\n init(element as HTMLElement);\n }\n });\n }\n\n if (document.querySelectorAll('.reviews').length > 0) {\n import(/* webpackChunkName: \"reviews\", webpackMode: \"lazy\" */ './modules/products/reviews').then(m => {\n m.default.init();\n });\n }\n\n const tireSizes = document.querySelector('.tire-sizes');\n if (tireSizes) {\n import(/* webpackChunkName: \"tire-sizes\", webpackMode: \"lazy\" */'./modules/products/tire-sizes').then(m => { // jshint ignore:line\n m.default.init();\n });\n }\n\n // Modals\n\n const a11ymodals = document.querySelectorAll('[data-modal], [data-modal-v2]');\n if (a11ymodals.length) {\n import(/* webpackChunkName: \"tooltip\", webpackMode: \"lazy\" */ '../../../common/build/helpers/a11y-modal').then(m => {\n m.default.init(a11ymodals);\n });\n }\n\n // Forms\n\n const phoneInputs = document.querySelectorAll('input.js-phone-input');\n if(phoneInputs.length) {\n import(/* webpackChunkName: \"phoneInput\", webpackMode: \"lazy\" */ './modules/intl-tel-input/Intl-tel-input').then(m => {\n for(let element of phoneInputs) {\n m.init(element as HTMLInputElement);\n }\n });\n }\n\n const comboDateInputs = document.querySelectorAll('.js-combodate');\n if(comboDateInputs.length) {\n import(/* webpackChunkName: \"input-combodate\", webpackMode: \"lazy\" */'./modules/combodate/combodate').then(m => { // jshint ignore:line\n for(let element of comboDateInputs) {\n m.init(element as HTMLInputElement);\n }\n });\n }\n\n const guaranteeForms = document.querySelectorAll('select[name=\"guarantee_tyre_model\"]');\n if(guaranteeForms.length) {\n import(/* webpackChunkName: \"guarantee-form\", webpackMode: \"lazy\" */'./modules/products/guarantee-form').then(m => {\n for(let element of guaranteeForms) {\n m.init(element as HTMLSelectElement);\n }\n });\n }\n\n // Old hakkaturva\n const hakkaForm = document.getElementById('rengasmalli')?.closest('form');\n if(hakkaForm?.length) {\n import(/* webpackChunkName: \"hakka-form\", webpackMode: \"lazy\" */'./modules/products/hakka-form').then(m => {\n m.default.init(hakkaForm as HTMLFormElement);\n });\n }\n\n const dotForms = document.querySelectorAll('[data-dot-form]');\n if(dotForms.length) {\n import(/* webpackChunkName: \"nt-dot-form\", webpackMode: \"lazy\" */'./modules/dot-form/dot-form').then(({init}) => { // jshint ignore:line\n for(let element of dotForms) {\n init(element as HTMLElement);\n }\n });\n }\n\n const feedbackTopics = document.querySelectorAll('.js-form__feedback-subjects');\n if(feedbackTopics.length) {\n import(/* webpackChunkName: \"feedback-topics\", webpackMode: \"lazy\" */'./modules/feedback-topics').then(m => { // jshint ignore:line\n for(let element of feedbackTopics) {\n m.init(element as HTMLSelectElement);\n }\n });\n }\n\n const gotoEls = document.querySelectorAll('.js-goto');\n if(gotoEls.length) {\n import(/* webpackChunkName: \"go-to\", webpackMode: \"lazy\" */'./modules/goto').then(({init}) => {\n for(let element of gotoEls) {\n init(element as HTMLElement);\n }\n });\n }\n\n const triggerAnalyticsEls = document.querySelectorAll('.js-trigger-analytics') as NodeListOf;\n if(triggerAnalyticsEls.length) {\n import(/* webpackChunkName: \"trigger-analytics\", webpackMode: \"lazy\" */'./modules/trigger-analytics').then((m) => {\n m.default.init(triggerAnalyticsEls);\n });\n }\n\n const mediaCarousels = document.querySelectorAll('.js-media-carousel');\n if(mediaCarousels.length) {\n import(/* webpackChunkName: \"feedback-topics\", webpackMode: \"lazy\" */'../../../common/build/components/media-carousel').then(m => { // jshint ignore:line\n for(let element of mediaCarousels) {\n m.default.initMediaCarousel(element as HTMLElement);\n }\n });\n }\n\n // Dealer map (react app)\n if(document.querySelectorAll('#dealers').length){\n import(/* webpackChunkName: \"dealers-react\", webpackMode: \"lazy\" */'./dealers').then(m => {\n console.log('dealers.init()');\n });\n }\n\n const csEls = document.querySelectorAll('[data-customer-service]') as NodeListOf;\n if(csEls.length) {\n import(/* webpackChunkName: \"customer-service\", webpackMode: \"lazy\" */'./modules/customer-service').then(({init}) => {\n init(csEls);\n });\n }\n\n const timeToRead = document.querySelectorAll('.js-time-to-read');\n if (timeToRead.length) {\n import(/* webpackChunkName: \"timeToRead\", webpackMode: \"lazy\" */'../../../common/build/helpers/timeToRead').then(m => { // jshint ignore:line\n timeToRead.forEach((el) => {\n m.default.init((el as HTMLElement));\n });\n });\n }\n\n const interactiveImages = document.getElementsByClassName('js-interactive-image');\n if(interactiveImages.length) {\n import(/* webpackChunkName: \"interactive-image\", webpackMode: \"lazy\" */'./modules/interactive-image').then(m => {\n for (let image of interactiveImages) {\n m.init(image);\n }\n });\n }\n\n // Dealer list\n if(document.querySelectorAll('.dealer-list').length){\n import(/* webpackChunkName: \"dealer-list\", webpackMode: \"lazy\" */'./modules/dealer-list').then(m => { // jshint ignore:line\n m.default.init();\n });\n }\n\n const tsElements = document.querySelectorAll('[data-ts]') as NodeListOf;\n if(tsElements.length) {\n import(/* webpackChunkName: \"tyreselector\", webpackMode: \"lazy\" */'./modules/tyreselector/Tyreselector').then(({ init }) => {\n init(tsElements);\n });\n }\n\n const comboboxElements = document.querySelectorAll('.js-combobox-autocomplete') as NodeListOf;\n if(comboboxElements.length) {\n import(/* webpackChunkName: \"combobox-autocomplete\", webpackMode: \"lazy\" */'./modules/combobox/autocomplete-combobox').then((m) => {\n for(let element of comboboxElements) {\n new m.default({\n select: element,\n });\n }\n });\n }\n\n const gdprElements = document.querySelectorAll('.js-gdpr') as NodeListOf;\n if(gdprElements.length) {\n import(/* webpackChunkName: \"gdpr\", webpackMode: \"lazy\" */'./modules/gdpr').then((m) => {\n m.default.init(gdprElements);\n });\n }\n\n const cmTyreselectors = document.getElementsByClassName('js-cm-tyreselector');\n if(cmTyreselectors.length) {\n import(/* webpackChunkName: \"nt-cm-tyreselector\", webpackMode: \"lazy\" */'./modules/car-manufacturers/cm-tyreselector').then(({init}) => {\n for (let collection of cmTyreselectors) {\n init(collection as HTMLElement);\n }\n });\n }\n\n const tyreAwards = document.getElementsByClassName('js-tyre-awards');\n if(tyreAwards.length) {\n import(/* webpackChunkName: \"tyre-awards\", webpackMode: \"lazy\" */'./modules/tyre-awards').then((m) => {\n for (let awards of tyreAwards) {\n m.default.init(awards as HTMLElement);\n }\n });\n }\n\n const countdownElements = document.querySelectorAll('[data-countdown-date]');\n if(countdownElements.length) {\n import(/* webpackChunkName: \"nt-countdown\", webpackMode: \"lazy\" */'./modules/countdown').then(m => { // jshint ignore:line\n m.init(countdownElements);\n });\n }\n\n const tabbedContentElements = document.querySelectorAll('[data-tabbed-content]');\n if(tabbedContentElements.length) {\n import(/* webpackChunkName: \"tabbed-content\", webpackMode: \"lazy\" */'./modules/tabs').then(m => { // jshint ignore:line\n for (let tabsElement of tabbedContentElements) {\n new m.default(tabsElement as HTMLElement);\n }\n });\n }\n\n const paginatedForms = document.querySelectorAll('[data-paginated-form]');\n if(paginatedForms.length) {\n import(/* webpackChunkName: \"form-paginator\", webpackMode: \"lazy\" */'./modules/form-paginator').then(m => {\n for (let form of paginatedForms) {\n new m.default(form as HTMLFormElement);\n }\n });\n }\n\n const careersElement = document.querySelector('.section-careers');\n if (careersElement) {\n import(/* webpackChunkName: \"careers\", webpackMode: \"lazy\" */'./modules/careers').then(m => { // jshint ignore:line\n m.default.init(careersElement as HTMLElement);\n });\n }\n\n const youtubeSliders = document.querySelectorAll('[data-youtube-video-slider]');\n if(youtubeSliders.length) {\n import(/* webpackChunkName: \"youtube-video-slider\", webpackMode: \"lazy\" */'./modules/youtube-video-slider').then(m => {\n for (let element of youtubeSliders) {\n new m.default(element as HTMLElement);\n }\n });\n }\n\n});\n","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass SeasonDependingContent {\r\n settings;\r\n elements = [];\r\n geoSeason = '';\r\n constructor(options = {}) {\r\n const defaultSettings = {\r\n className: 'season-depending',\r\n hiddenClassName: 'hidden',\r\n fallbackClassName: 'fallback',\r\n apiUrl: '/stage-ajax/geo-season/',\r\n };\r\n this.settings = Object.assign({}, defaultSettings, options);\r\n this.elements = Array.from(document.querySelectorAll('.' + this.settings.className));\r\n if (this.elements.length) {\r\n this.init();\r\n }\r\n }\r\n async init() {\r\n console.log('seasonDependingContent.init()');\r\n this.geoSeason = await this.getSeason();\r\n // Hide all elements at first\r\n this.elements.forEach(element => {\r\n element.classList.add(this.settings.hiddenClassName);\r\n });\r\n this.showSeasonContent(this.geoSeason);\r\n }\r\n getSeason() {\r\n const seasonFromStorage = sessionStorage.getItem('geo_season');\r\n if (typeof seasonFromStorage === 'string' && seasonFromStorage.length) {\r\n return Promise.resolve(seasonFromStorage);\r\n }\r\n // Fetch geo-ip season\r\n return fetch(this.settings.apiUrl)\r\n .then(response => response.json())\r\n .then(response => {\r\n if (response.season) {\r\n const season = response.season.toLowerCase();\r\n sessionStorage.setItem('geo_season', season);\r\n return season;\r\n }\r\n else {\r\n console.error('[season-depending-content] No season found', response);\r\n return '';\r\n }\r\n })\r\n .catch(error => {\r\n console.error('[season-depending-content] Error fetching season', error);\r\n return '';\r\n });\r\n }\r\n showElement(element) {\r\n element.classList.remove(this.settings.hiddenClassName);\r\n // Lagacy support: some old elements have inline display styles\r\n element.style.display = '';\r\n }\r\n showSeasonContent(visibleSeason) {\r\n if (visibleSeason) {\r\n this.elements\r\n .filter(element => element.classList.contains(visibleSeason))\r\n .forEach(visibleElement => {\r\n this.showElement(visibleElement);\r\n });\r\n // For some season-depending links there is an added class \"fallback\".\r\n // If chosen geo-ip-season's link is not available (for example \"Van tyres\" do not have 'all season' tires @ en_US)\r\n // then the whole link disappears. We cannot have that.\r\n // .fallback class to the rescue!\r\n // This loops through .season-depending.fallback links and checks if the do not have any visible siblings.\r\n // If not, then it shows the .fallback link (e.g. /tires/van-tires/winter-tires/)\r\n this.elements\r\n .filter(element => element.classList.contains(this.settings.fallbackClassName))\r\n .forEach(fallbackElement => {\r\n const visibleSiblings = Array.from(fallbackElement.parentElement?.children || []).filter(child => {\r\n // Filter out self\r\n if (child === fallbackElement) {\r\n return false;\r\n }\r\n //.season-depending:not('.hidden')\r\n if (child.classList.contains(this.settings.className) && !child.classList.contains(this.settings.hiddenClassName)) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (visibleSiblings.length === 0) {\r\n this.showElement(fallbackElement);\r\n fallbackElement.classList.add(`${this.settings.fallbackClassName}-active`);\r\n }\r\n });\r\n }\r\n }\r\n}\r\nexports.default = SeasonDependingContent;\r\n","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;","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;","import toPropertyKey from \"./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}\nexport { _createClass as default };","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst timeToRead = {\r\n /**\r\n * Initialises the functionality.\r\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.\r\n * https://w3collective.com/calculate-reading-time-javascript/\r\n *\r\n * @param {HTMLElement} el - The element to initialise the functionality on.\r\n * @returns {void}\r\n *\r\n * @example\r\n *\r\n * \r\n */\r\n init: function (el) {\r\n const text = el.dataset.target ? document.getElementById(el.dataset.target)?.innerText : null;\r\n if (text) {\r\n const wpm = 225;\r\n const words = text.trim().split(/\\s+/).length;\r\n const time = Math.ceil(words / wpm);\r\n const loc = el.dataset.loc ? el.dataset.loc : '';\r\n el.innerText = loc.replace('%time%', time.toString());\r\n }\r\n },\r\n};\r\nexports.default = timeToRead;\r\n","\"use strict\";\r\n/*!\r\n * Virtual Select v1.0.44\r\n * https://sa-si-dev.github.io/virtual-select\r\n * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE)\r\n */ /******/ (function () {\r\n var __webpack_exports__ = {};\r\n // This entry need to be wrapped in an IIFE because it need to be in strict mode.\r\n !function () {\r\n \"use strict\";\r\n // UNUSED EXPORTS: VirtualSelect\r\n ; // CONCATENATED MODULE: ./src/utils/utils.js\r\n function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\r\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.\"); }\r\n function _unsupportedIterableToArray(o, minLen) { if (!o)\r\n return; if (typeof o === \"string\")\r\n return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor)\r\n n = o.constructor.name; if (n === \"Map\" || n === \"Set\")\r\n return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\r\n return _arrayLikeToArray(o, minLen); }\r\n function _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\r\n return Array.from(iter); }\r\n function _arrayWithoutHoles(arr) { if (Array.isArray(arr))\r\n return _arrayLikeToArray(arr); }\r\n function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length)\r\n len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i];\r\n } return arr2; }\r\n function _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\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);\r\n }\r\n function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n } }\r\n function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor)\r\n descriptor.writable = true;\r\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\r\n } }\r\n function _createClass(Constructor, protoProps, staticProps) { if (protoProps)\r\n _defineProperties(Constructor.prototype, protoProps); if (staticProps)\r\n _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\r\n function _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\r\n function _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null)\r\n return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) {\r\n var res = prim.call(input, hint || \"default\");\r\n if (_typeof(res) !== \"object\")\r\n return res;\r\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\r\n } return (hint === \"string\" ? String : Number)(input); }\r\n var Utils = /*#__PURE__*/ function () {\r\n function Utils() {\r\n _classCallCheck(this, Utils);\r\n }\r\n _createClass(Utils, null, [{\r\n key: \"getString\",\r\n value: \r\n /**\r\n * @param {any} text\r\n * @returns {string}\r\n * @memberof Utils\r\n */\r\n function getString(text) {\r\n return text || text === 0 ? text.toString() : '';\r\n }\r\n /**\r\n * @param {any} value\r\n * @param {boolean} defaultValue\r\n * @returns {boolean}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"convertToBoolean\",\r\n value: function convertToBoolean(value) {\r\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n var result;\r\n if (value === true || value === 'true') {\r\n result = true;\r\n }\r\n else if (value === false || value === 'false') {\r\n result = false;\r\n }\r\n else {\r\n result = defaultValue;\r\n }\r\n return result;\r\n }\r\n /**\r\n * @param {any} value\r\n * @returns {boolean}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"isEmpty\",\r\n value: function isEmpty(value) {\r\n var result = false;\r\n if (!value) {\r\n result = true;\r\n }\r\n else if (Array.isArray(value)) {\r\n if (value.length === 0) {\r\n result = true;\r\n }\r\n }\r\n else if (_typeof(value) === 'object' && Object.keys(value).length === 0) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n /**\r\n * @param {any} value\r\n * @returns {boolean}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"isNotEmpty\",\r\n value: function isNotEmpty(value) {\r\n return !this.isEmpty(value);\r\n }\r\n /**\r\n * @param {any[]} array\r\n * @param {any} value\r\n * @param {boolean} cloneArray\r\n * @returns {any[]}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"removeItemFromArray\",\r\n value: function removeItemFromArray(array, value) {\r\n var cloneArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n if (!Array.isArray(array) || !array.length) {\r\n return array;\r\n }\r\n var inputArr = cloneArray ? _toConsumableArray(array) : array;\r\n var index = inputArr.indexOf(value);\r\n if (index !== -1) {\r\n inputArr.splice(index, 1);\r\n }\r\n return inputArr;\r\n }\r\n /**\r\n * @param {any[]} array\r\n * @returns {any[]}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"removeArrayEmpty\",\r\n value: function removeArrayEmpty(array) {\r\n if (!Array.isArray(array) || !array.length) {\r\n return [];\r\n }\r\n return array.filter(function (d) {\r\n return !!d;\r\n });\r\n }\r\n /**\r\n * @param {number} max\r\n * @param {number} max\r\n * @returns {number}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"getRandomInt\",\r\n value: function getRandomInt(max) {\r\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\r\n var minN = Math.ceil(min);\r\n var maxN = Math.floor(max);\r\n return Math.floor(Math.random() * (maxN - minN - 1)) + minN;\r\n }\r\n /**\r\n * @param {string} text\r\n * @return {string}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"regexEscape\",\r\n value: function regexEscape(text) {\r\n var ESC_REGEX = /[-/\\\\^$*+?.()|[\\]{}]/g;\r\n return text.replace(ESC_REGEX, '\\\\$&');\r\n }\r\n /**\r\n * @param {string} text\r\n * @return {string}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"normalizeString\",\r\n value: function normalizeString(text) {\r\n var NON_WORD_REGEX = /[^\\w]/g;\r\n return text.normalize('NFD').replace(NON_WORD_REGEX, '');\r\n }\r\n /**\r\n * @static\r\n * @param {*} container\r\n * @param {string} text\r\n * @return {boolean}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"willTextOverflow\",\r\n value: function willTextOverflow(container, text) {\r\n var tempElement = document.createElement('div');\r\n tempElement.style.position = 'absolute';\r\n tempElement.style.visibility = 'hidden';\r\n tempElement.style.whiteSpace = 'nowrap';\r\n tempElement.style.fontSize = window.getComputedStyle(container).fontSize;\r\n tempElement.style.fontFamily = window.getComputedStyle(container).fontFamily;\r\n tempElement.textContent = text;\r\n document.body.appendChild(tempElement);\r\n var textWidth = tempElement.clientWidth;\r\n document.body.removeChild(tempElement);\r\n return textWidth > container.clientWidth;\r\n }\r\n /**\r\n * @static\r\n * @param {string} text\r\n * @return {string}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"replaceDoubleQuotesWithHTML\",\r\n value: function replaceDoubleQuotesWithHTML(text) {\r\n return text.replace(/\"/g, '"');\r\n }\r\n /**\r\n * @static\r\n * @param {string} text\r\n * @return {boolean}\r\n * @memberof Utils\r\n */\r\n }, {\r\n key: \"containsHTML\",\r\n value: function containsHTML(text) {\r\n return /<[a-z][\\s\\S]*>/i.test(text);\r\n }\r\n }]);\r\n return Utils;\r\n }();\r\n ; // CONCATENATED MODULE: ./src/utils/dom-utils.js\r\n function dom_utils_typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\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);\r\n }\r\n function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || dom_utils_unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\r\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.\"); }\r\n function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) {\r\n var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1;\r\n try {\r\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\r\n if (Object(_i) !== _i)\r\n return;\r\n _n = !1;\r\n }\r\n else\r\n for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\r\n ;\r\n }\r\n }\r\n catch (err) {\r\n _d = !0, _e = err;\r\n }\r\n finally {\r\n try {\r\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r))\r\n return;\r\n }\r\n finally {\r\n if (_d)\r\n throw _e;\r\n }\r\n }\r\n return _arr;\r\n } }\r\n function _arrayWithHoles(arr) { if (Array.isArray(arr))\r\n return arr; }\r\n function dom_utils_toConsumableArray(arr) { return dom_utils_arrayWithoutHoles(arr) || dom_utils_iterableToArray(arr) || dom_utils_unsupportedIterableToArray(arr) || dom_utils_nonIterableSpread(); }\r\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.\"); }\r\n function dom_utils_unsupportedIterableToArray(o, minLen) { if (!o)\r\n return; if (typeof o === \"string\")\r\n return dom_utils_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor)\r\n n = o.constructor.name; if (n === \"Map\" || n === \"Set\")\r\n return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\r\n return dom_utils_arrayLikeToArray(o, minLen); }\r\n function dom_utils_iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\r\n return Array.from(iter); }\r\n function dom_utils_arrayWithoutHoles(arr) { if (Array.isArray(arr))\r\n return dom_utils_arrayLikeToArray(arr); }\r\n function dom_utils_arrayLikeToArray(arr, len) { if (len == null || len > arr.length)\r\n len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i];\r\n } return arr2; }\r\n function dom_utils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n } }\r\n function dom_utils_defineProperties(target, props) { for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor)\r\n descriptor.writable = true;\r\n Object.defineProperty(target, dom_utils_toPropertyKey(descriptor.key), descriptor);\r\n } }\r\n function dom_utils_createClass(Constructor, protoProps, staticProps) { if (protoProps)\r\n dom_utils_defineProperties(Constructor.prototype, protoProps); if (staticProps)\r\n dom_utils_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\r\n function dom_utils_toPropertyKey(arg) { var key = dom_utils_toPrimitive(arg, \"string\"); return dom_utils_typeof(key) === \"symbol\" ? key : String(key); }\r\n function dom_utils_toPrimitive(input, hint) { if (dom_utils_typeof(input) !== \"object\" || input === null)\r\n return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) {\r\n var res = prim.call(input, hint || \"default\");\r\n if (dom_utils_typeof(res) !== \"object\")\r\n return res;\r\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\r\n } return (hint === \"string\" ? String : Number)(input); }\r\n var DomUtils = /*#__PURE__*/ function () {\r\n function DomUtils() {\r\n dom_utils_classCallCheck(this, DomUtils);\r\n }\r\n dom_utils_createClass(DomUtils, null, [{\r\n key: \"addClass\",\r\n value: \r\n /**\r\n * @param {HTMLElement | NodeListOf} $ele\r\n * @param {string} classNames\r\n */\r\n function addClass($ele, classNames) {\r\n if (!$ele) {\r\n return;\r\n }\r\n var classNamesArr = classNames.split(' ');\r\n DomUtils.getElements($ele).forEach(function ($this) {\r\n var _$this$classList;\r\n (_$this$classList = $this.classList).add.apply(_$this$classList, dom_utils_toConsumableArray(classNamesArr));\r\n });\r\n }\r\n /**\r\n * @param {HTMLElement | NodeListOf} $ele\r\n * @param {string} classNames\r\n */\r\n }, {\r\n key: \"removeClass\",\r\n value: function removeClass($ele, classNames) {\r\n if (!$ele) {\r\n return;\r\n }\r\n var classNamesArr = classNames.split(' ');\r\n DomUtils.getElements($ele).forEach(function ($this) {\r\n var _$this$classList2;\r\n (_$this$classList2 = $this.classList).remove.apply(_$this$classList2, dom_utils_toConsumableArray(classNamesArr));\r\n });\r\n }\r\n /**\r\n * @param {HTMLElement | NodeListOf} $ele\r\n * @param {string} classNames\r\n * @param {boolean} [isAdd]\r\n */\r\n }, {\r\n key: \"toggleClass\",\r\n value: function toggleClass($ele, classNames, isAdd) {\r\n if (!$ele) {\r\n return;\r\n }\r\n /** @type {boolean | undefined} */\r\n var isAdding;\r\n if (isAdd !== undefined) {\r\n isAdding = Boolean(isAdd);\r\n }\r\n DomUtils.getElements($ele).forEach(function ($this) {\r\n $this.classList.toggle(classNames, isAdding);\r\n });\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} className\r\n * @returns {boolean}\r\n */\r\n }, {\r\n key: \"hasClass\",\r\n value: function hasClass($ele, className) {\r\n if (!$ele) {\r\n return false;\r\n }\r\n return $ele.classList.contains(className);\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @returns {boolean}\r\n */\r\n }, {\r\n key: \"hasEllipsis\",\r\n value: function hasEllipsis($ele) {\r\n if (!$ele) {\r\n return false;\r\n }\r\n return $ele.scrollWidth > $ele.offsetWidth;\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} name\r\n * @param {string} [type]\r\n * @returns {any}\r\n */\r\n }, {\r\n key: \"getData\",\r\n value: function getData($ele, name, type) {\r\n if (!$ele) {\r\n return undefined;\r\n }\r\n /** @type {any} */\r\n var value = $ele ? $ele.dataset[name] : '';\r\n if (type === 'number') {\r\n value = parseFloat(value) || 0;\r\n }\r\n else if (value === 'true') {\r\n value = true;\r\n }\r\n else if (value === 'false') {\r\n value = false;\r\n }\r\n return value;\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} name\r\n * @param {string} value\r\n */\r\n }, {\r\n key: \"setData\",\r\n value: function setData($ele, name, value) {\r\n if (!$ele) {\r\n return;\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n $ele.dataset[name] = value;\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} name\r\n * @param {string} value\r\n */\r\n }, {\r\n key: \"setAttr\",\r\n value: function setAttr($ele, name, value) {\r\n if (!$ele) {\r\n return;\r\n }\r\n $ele.setAttribute(name, value);\r\n }\r\n /**\r\n * @param {HTMLElement} $from\r\n * @param {HTMLElement} $to\r\n * @param {string[]} attrList\r\n * @param {string[]} valueLessProps\r\n */\r\n }, {\r\n key: \"setAttrFromEle\",\r\n value: function setAttrFromEle($from, $to, attrList, valueLessProps) {\r\n /** @type {any} */\r\n var values = {};\r\n attrList.forEach(function (attr) {\r\n values[attr] = $from.getAttribute(attr);\r\n });\r\n attrList.forEach(function (attr) {\r\n var value = values[attr];\r\n if (value || valueLessProps.indexOf(attr) !== -1 && value === '') {\r\n $to.setAttribute(attr, value);\r\n }\r\n });\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} name\r\n * @param {string} value\r\n */\r\n }, {\r\n key: \"setStyle\",\r\n value: function setStyle($ele, name, value) {\r\n if (!$ele) {\r\n return;\r\n }\r\n // @ts-ignore\r\n // eslint-disable-next-line no-param-reassign\r\n $ele.style[name] = value;\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {any} props\r\n */\r\n }, {\r\n key: \"setStyles\",\r\n value: function setStyles($ele, props) {\r\n if (!$ele || !props) {\r\n return;\r\n }\r\n Object.keys(props).forEach(function (name) {\r\n // @ts-ignore\r\n // eslint-disable-next-line no-param-reassign\r\n $ele.style[name] = props[name];\r\n });\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} name\r\n * @param {string} value\r\n */\r\n }, {\r\n key: \"setAria\",\r\n value: function setAria($ele, name, value) {\r\n var attrName = name;\r\n if (attrName !== 'role') {\r\n attrName = \"aria-\".concat(attrName);\r\n }\r\n $ele.setAttribute(attrName, value);\r\n }\r\n /**\r\n * @param {any} $ele\r\n * @returns {any[]}\r\n */\r\n }, {\r\n key: \"getElements\",\r\n value: function getElements($ele) {\r\n if (!$ele) {\r\n return [];\r\n }\r\n return $ele.forEach === undefined ? [$ele] : $ele;\r\n }\r\n /**\r\n * @static\r\n * @param {string} [$selector='']\r\n * @param {*} [$parentEle=undefined]\r\n * @return {*}\r\n * @memberof DomUtils\r\n */\r\n }, {\r\n key: \"getElementsBySelector\",\r\n value: function getElementsBySelector() {\r\n var $selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\r\n var $parentEle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\r\n var elements;\r\n var parent = $parentEle !== undefined ? $parentEle : document;\r\n if ($selector !== '') {\r\n elements = parent.querySelectorAll($selector);\r\n }\r\n return elements !== undefined ? Array.from(elements) : [];\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} events\r\n * @param {Function} callback\r\n */\r\n }, {\r\n key: \"addEvent\",\r\n value: function addEvent($ele, events, callback) {\r\n if (!$ele) {\r\n return;\r\n }\r\n var eventsArray = Utils.removeArrayEmpty(events.split(' '));\r\n eventsArray.forEach(function (event) {\r\n var $eleArray = DomUtils.getElements($ele);\r\n $eleArray.forEach(function ($this) {\r\n $this.addEventListener(event, callback);\r\n });\r\n });\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} eventName\r\n * @param {boolean} [bubbles]\r\n */\r\n }, {\r\n key: \"dispatchEvent\",\r\n value: function dispatchEvent($ele, eventName) {\r\n var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n if (!$ele) {\r\n return;\r\n }\r\n var $eleArray = DomUtils.getElements($ele);\r\n /** using setTimeout to trigger asynchronous event */\r\n setTimeout(function () {\r\n $eleArray.forEach(function ($this) {\r\n $this.dispatchEvent(new CustomEvent(eventName, {\r\n bubbles: bubbles\r\n }));\r\n });\r\n }, 0);\r\n }\r\n /**\r\n * convert object to dom attributes\r\n * @param {ObjectString} data\r\n */\r\n }, {\r\n key: \"getAttributesText\",\r\n value: function getAttributesText(data) {\r\n var html = '';\r\n if (!data) {\r\n return html;\r\n }\r\n // @ts-ignore\r\n Object.entries(data).forEach(function (_ref) {\r\n var _ref2 = _slicedToArray(_ref, 2), k = _ref2[0], v = _ref2[1];\r\n if (v !== undefined) {\r\n html += \" \".concat(k, \"=\\\"\").concat(v, \"\\\" \");\r\n }\r\n });\r\n return html;\r\n }\r\n /**\r\n * convert \"maxValue\" to \"data-max-value\"\r\n * @param {string} prop\r\n */\r\n }, {\r\n key: \"convertPropToDataAttr\",\r\n value: function convertPropToDataAttr(prop) {\r\n return prop ? \"data-\".concat(prop).replace(/([A-Z])/g, '-$1').toLowerCase() : '';\r\n }\r\n /**\r\n * Changes the tab index of an element passed as an input\r\n * @static\r\n * @param {HTMLElement | NodeListOf} $ele\r\n * @param {number} newTabIndex\r\n * @memberof DomUtils\r\n */\r\n }, {\r\n key: \"changeTabIndex\",\r\n value: function changeTabIndex($ele, newTabIndex) {\r\n if (!$ele) {\r\n // eslint-disable-next-line no-console\r\n console.log($ele, 'Invalid element provided.');\r\n return;\r\n }\r\n DomUtils.getElements($ele).forEach(function ($this) {\r\n // eslint-disable-next-line no-param-reassign\r\n $this.tabIndex = newTabIndex;\r\n });\r\n }\r\n /**\r\n * @param {HTMLElement} $ele\r\n * @param {string} event\r\n * @param {Function} callback\r\n */\r\n }, {\r\n key: \"removeEvent\",\r\n value: function removeEvent($ele, event, callback) {\r\n if (!$ele) {\r\n return;\r\n }\r\n var $eleArray = DomUtils.getElements($ele);\r\n $eleArray.forEach(function ($this) {\r\n $this.removeEventListener(event, callback);\r\n });\r\n }\r\n }]);\r\n return DomUtils;\r\n }();\r\n ; // CONCATENATED MODULE: ./src/virtual-select.js\r\n function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols);\r\n } return keys; }\r\n function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\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)); });\r\n } return target; }\r\n function _defineProperty(obj, key, value) { key = virtual_select_toPropertyKey(key); if (key in obj) {\r\n Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });\r\n }\r\n else {\r\n obj[key] = value;\r\n } return obj; }\r\n function virtual_select_typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\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);\r\n }\r\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(); }\r\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.\"); }\r\n function virtual_select_iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) {\r\n var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1;\r\n try {\r\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\r\n if (Object(_i) !== _i)\r\n return;\r\n _n = !1;\r\n }\r\n else\r\n for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\r\n ;\r\n }\r\n }\r\n catch (err) {\r\n _d = !0, _e = err;\r\n }\r\n finally {\r\n try {\r\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r))\r\n return;\r\n }\r\n finally {\r\n if (_d)\r\n throw _e;\r\n }\r\n }\r\n return _arr;\r\n } }\r\n function virtual_select_arrayWithHoles(arr) { if (Array.isArray(arr))\r\n return arr; }\r\n function virtual_select_toConsumableArray(arr) { return virtual_select_arrayWithoutHoles(arr) || virtual_select_iterableToArray(arr) || virtual_select_unsupportedIterableToArray(arr) || virtual_select_nonIterableSpread(); }\r\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.\"); }\r\n function virtual_select_unsupportedIterableToArray(o, minLen) { if (!o)\r\n return; if (typeof o === \"string\")\r\n return virtual_select_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor)\r\n n = o.constructor.name; if (n === \"Map\" || n === \"Set\")\r\n return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\r\n return virtual_select_arrayLikeToArray(o, minLen); }\r\n function virtual_select_iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null)\r\n return Array.from(iter); }\r\n function virtual_select_arrayWithoutHoles(arr) { if (Array.isArray(arr))\r\n return virtual_select_arrayLikeToArray(arr); }\r\n function virtual_select_arrayLikeToArray(arr, len) { if (len == null || len > arr.length)\r\n len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i];\r\n } return arr2; }\r\n function virtual_select_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n } }\r\n function virtual_select_defineProperties(target, props) { for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor)\r\n descriptor.writable = true;\r\n Object.defineProperty(target, virtual_select_toPropertyKey(descriptor.key), descriptor);\r\n } }\r\n function virtual_select_createClass(Constructor, protoProps, staticProps) { if (protoProps)\r\n virtual_select_defineProperties(Constructor.prototype, protoProps); if (staticProps)\r\n virtual_select_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\r\n function virtual_select_toPropertyKey(arg) { var key = virtual_select_toPrimitive(arg, \"string\"); return virtual_select_typeof(key) === \"symbol\" ? key : String(key); }\r\n function virtual_select_toPrimitive(input, hint) { if (virtual_select_typeof(input) !== \"object\" || input === null)\r\n return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) {\r\n var res = prim.call(input, hint || \"default\");\r\n if (virtual_select_typeof(res) !== \"object\")\r\n return res;\r\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\r\n } return (hint === \"string\" ? String : Number)(input); }\r\n /** cSpell:ignore nocheck, Labelledby, vscomp, tabindex, combobox, haspopup, listbox, activedescendant */\r\n /* eslint-disable class-methods-use-this */\r\n // @ts-nocheck\r\n var dropboxCloseButtonFullHeight = 48;\r\n var searchHeight = 40;\r\n var keyDownMethodMapping = {\r\n 13: 'onEnterPress',\r\n 38: 'onUpArrowPress',\r\n 40: 'onDownArrowPress',\r\n 46: 'onBackspaceOrDeletePress',\r\n // Delete\r\n 8: 'onBackspaceOrDeletePress' // Backspace\r\n };\r\n var valueLessProps = ['autofocus', 'disabled', 'multiple', 'required'];\r\n var nativeProps = ['autofocus', 'class', 'disabled', 'id', 'multiple', 'name', 'placeholder', 'required'];\r\n var attrPropsMapping;\r\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'];\r\n /** Class representing VirtualSelect */\r\n var VirtualSelect = /*#__PURE__*/ function () {\r\n /**\r\n * @param {virtualSelectOptions} options\r\n */\r\n function VirtualSelect(options) {\r\n virtual_select_classCallCheck(this, VirtualSelect);\r\n try {\r\n this.createSecureTextElements();\r\n this.setProps(options);\r\n this.setDisabledOptions(options.disabledOptions);\r\n this.setOptions(options.options);\r\n this.render();\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Couldn't initiate Virtual Select\");\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n }\r\n /** render methods - start */\r\n virtual_select_createClass(VirtualSelect, [{\r\n key: \"render\",\r\n value: function render() {\r\n if (!this.$ele) {\r\n return;\r\n }\r\n var uniqueId = this.uniqueId;\r\n var wrapperClasses = 'vscomp-wrapper';\r\n var valueTooltip = this.showValueAsTags ? '' : this.getTooltipAttrText(this.placeholder, true, true);\r\n var clearButtonTooltip = this.getTooltipAttrText(this.clearButtonText);\r\n var ariaLabelledbyText = this.ariaLabelledby ? \"aria-labelledby=\\\"\".concat(this.ariaLabelledby, \"\\\"\") : '';\r\n var ariaLabelText = this.ariaLabelText ? \"aria-label=\\\"\".concat(this.ariaLabelText, \"\\\"\") : '';\r\n var ariaLabelClearBtnTxt = this.ariaLabelClearButtonText ? \"aria-label=\\\"\".concat(this.ariaLabelClearButtonText, \"\\\"\") : '';\r\n var isExpanded = false;\r\n if (this.additionalClasses) {\r\n wrapperClasses += \" \".concat(this.additionalClasses);\r\n }\r\n if (this.multiple) {\r\n wrapperClasses += ' multiple';\r\n if (!this.disableSelectAll) {\r\n wrapperClasses += ' has-select-all';\r\n }\r\n }\r\n if (!this.hideClearButton) {\r\n wrapperClasses += ' has-clear-button';\r\n }\r\n if (this.keepAlwaysOpen) {\r\n wrapperClasses += ' keep-always-open';\r\n isExpanded = true;\r\n }\r\n else {\r\n wrapperClasses += ' closed';\r\n }\r\n if (this.showAsPopup) {\r\n wrapperClasses += ' show-as-popup';\r\n }\r\n if (this.hasSearch) {\r\n wrapperClasses += ' has-search-input';\r\n }\r\n if (this.showValueAsTags) {\r\n wrapperClasses += ' show-value-as-tags';\r\n }\r\n if (this.textDirection) {\r\n wrapperClasses += \" text-direction-\".concat(this.textDirection);\r\n }\r\n if (this.popupPosition) {\r\n wrapperClasses += \" popup-position-\".concat(this.popupPosition.toLowerCase());\r\n }\r\n // eslint-disable-next-line no-trailing-spaces\r\n var html = \"
\\n \\n
\\n
\\n \").concat(this.placeholder, \"\\n
\\n
\\n
\\n \\n
\\n
\\n\\n \").concat(this.renderDropbox({\r\n wrapperClasses: wrapperClasses\r\n }), \"\\n
\");\r\n this.$ele.innerHTML = html;\r\n this.$body = document.querySelector('body');\r\n this.$wrapper = this.$ele.querySelector('.vscomp-wrapper');\r\n if (this.hasDropboxWrapper) {\r\n this.$allWrappers = [this.$wrapper, this.$dropboxWrapper];\r\n this.$dropboxContainer = this.$dropboxWrapper.querySelector('.vscomp-dropbox-container');\r\n DomUtils.addClass(this.$dropboxContainer, 'pop-comp-wrapper');\r\n }\r\n else {\r\n this.$allWrappers = [this.$wrapper];\r\n this.$dropboxContainer = this.$wrapper.querySelector('.vscomp-dropbox-container');\r\n }\r\n this.$toggleButton = this.$ele.querySelector('.vscomp-toggle-button');\r\n this.$clearButton = this.$ele.querySelector('.vscomp-clear-button');\r\n this.$valueText = this.$ele.querySelector('.vscomp-value');\r\n this.$hiddenInput = this.$ele.querySelector('.vscomp-hidden-input');\r\n this.$dropbox = this.$dropboxContainer.querySelector('.vscomp-dropbox');\r\n this.$dropboxCloseButton = this.$dropboxContainer.querySelector('.vscomp-dropbox-close-button');\r\n this.$dropboxContainerBottom = this.$dropboxContainer.querySelector('.vscomp-dropbox-container-bottom');\r\n this.$dropboxContainerTop = this.$dropboxContainer.querySelector('.vscomp-dropbox-container-top');\r\n this.$search = this.$dropboxContainer.querySelector('.vscomp-search-wrapper');\r\n this.$optionsContainer = this.$dropboxContainer.querySelector('.vscomp-options-container');\r\n this.$optionsList = this.$dropboxContainer.querySelector('.vscomp-options-list');\r\n this.$options = this.$dropboxContainer.querySelector('.vscomp-options');\r\n this.$noOptions = this.$dropboxContainer.querySelector('.vscomp-no-options');\r\n this.$noSearchResults = this.$dropboxContainer.querySelector('.vscomp-no-search-results');\r\n this.afterRenderWrapper();\r\n }\r\n }, {\r\n key: \"renderDropbox\",\r\n value: function renderDropbox(_ref) {\r\n var wrapperClasses = _ref.wrapperClasses;\r\n var $wrapper = this.dropboxWrapper !== 'self' ? document.querySelector(this.dropboxWrapper) : null;\r\n // eslint-disable-next-line no-trailing-spaces\r\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
\");\r\n if ($wrapper) {\r\n var $dropboxWrapper = document.createElement('div');\r\n this.$dropboxWrapper = $dropboxWrapper;\r\n this.hasDropboxWrapper = true;\r\n $dropboxWrapper.innerHTML = html;\r\n $wrapper.appendChild($dropboxWrapper);\r\n DomUtils.addClass($dropboxWrapper, \"vscomp-dropbox-wrapper \".concat(wrapperClasses));\r\n return '';\r\n }\r\n this.hasDropboxWrapper = false;\r\n return html;\r\n }\r\n }, {\r\n key: \"renderOptions\",\r\n value: function renderOptions() {\r\n var _this = this;\r\n var html = '';\r\n var visibleOptions = this.getVisibleOptions();\r\n var checkboxHtml = '';\r\n var newOptionIconHtml = '';\r\n var markSearchResults = !!(this.markSearchResults && this.searchValue);\r\n var searchRegex;\r\n var labelRenderer = this.labelRenderer, disableOptionGroupCheckbox = this.disableOptionGroupCheckbox, uniqueId = this.uniqueId, searchGroup = this.searchGroup;\r\n var hasLabelRenderer = typeof labelRenderer === 'function';\r\n var convertToBoolean = Utils.convertToBoolean;\r\n var groupName = '';\r\n if (markSearchResults) {\r\n searchRegex = new RegExp(\"(\".concat(Utils.regexEscape(this.searchValue), \")(?!([^<]+)?>)\"), 'gi');\r\n }\r\n if (this.multiple) {\r\n checkboxHtml = '';\r\n }\r\n if (this.allowNewOption) {\r\n var newOptionTooltip = this.getTooltipAttrText('New Option');\r\n newOptionIconHtml = \"\");\r\n }\r\n visibleOptions.forEach(function (d) {\r\n var index = d.index;\r\n var optionLabel;\r\n var optionClasses = 'vscomp-option';\r\n var optionTooltip = _this.getTooltipAttrText('', true, true);\r\n var leftSection = checkboxHtml;\r\n var rightSection = '';\r\n var description = '';\r\n var groupIndexText = '';\r\n var ariaLabel = '';\r\n var tabIndexValue = '-1';\r\n var isSelected = convertToBoolean(d.isSelected);\r\n var ariaDisabledText = '';\r\n if (d.classNames) {\r\n optionClasses += \" \".concat(d.classNames);\r\n }\r\n if (d.isFocused) {\r\n tabIndexValue = '0';\r\n optionClasses += ' focused';\r\n }\r\n if (d.isDisabled) {\r\n optionClasses += ' disabled';\r\n ariaDisabledText = 'aria-disabled=\"true\"';\r\n }\r\n if (d.isGroupTitle) {\r\n groupName = d.label;\r\n optionClasses += ' group-title';\r\n if (disableOptionGroupCheckbox) {\r\n leftSection = '';\r\n }\r\n }\r\n if (isSelected) {\r\n optionClasses += ' selected';\r\n }\r\n if (d.isGroupOption) {\r\n var optionDesc = '';\r\n optionClasses += ' group-option';\r\n groupIndexText = \"data-group-index=\\\"\".concat(d.groupIndex, \"\\\"\");\r\n if (d.customData) {\r\n groupName = d.customData.group_name !== undefined ? \"\".concat(d.customData.group_name, \", \") : '';\r\n optionDesc = d.customData.description !== undefined ? \" \".concat(d.customData.description, \",\") : '';\r\n ariaLabel = \"aria-label=\\\"\".concat(groupName, \" \").concat(d.label, \", \").concat(optionDesc, \"\\\"\");\r\n }\r\n else {\r\n ariaLabel = \"aria-label=\\\"\".concat(groupName, \", \").concat(d.label, \"\\\"\");\r\n }\r\n }\r\n if (hasLabelRenderer) {\r\n optionLabel = labelRenderer(d);\r\n }\r\n else {\r\n optionLabel = d.label;\r\n }\r\n if (d.description) {\r\n description = \"
\").concat(d.description, \"
\");\r\n }\r\n if (d.isCurrentNew) {\r\n optionClasses += ' current-new';\r\n rightSection += newOptionIconHtml;\r\n }\r\n else if (markSearchResults && (!d.isGroupTitle || searchGroup)) {\r\n optionLabel = optionLabel.replace(searchRegex, '$1');\r\n }\r\n html += \"
\\n \").concat(leftSection, \"\\n \\n \").concat(optionLabel, \"\\n \\n \").concat(description, \"\\n \").concat(rightSection, \"\\n
\");\r\n });\r\n groupName = '';\r\n this.$options.innerHTML = html;\r\n this.$visibleOptions = this.$options.querySelectorAll('.vscomp-option');\r\n this.afterRenderOptions();\r\n }\r\n }, {\r\n key: \"renderSearch\",\r\n value: function renderSearch() {\r\n if (!this.hasSearchContainer) {\r\n return;\r\n }\r\n var checkboxHtml = '';\r\n var searchInput = '';\r\n if (this.multiple && !this.disableSelectAll) {\r\n checkboxHtml = \"\\n \\n \".concat(this.selectAllText, \"\\n \");\r\n }\r\n if (this.hasSearch) {\r\n searchInput = \"\\n \\n ×\");\r\n }\r\n var html = \"
\\n \".concat(checkboxHtml, \"\\n \").concat(searchInput, \"\\n
\");\r\n this.$search.innerHTML = html;\r\n this.$searchInput = this.$dropboxContainer.querySelector('.vscomp-search-input');\r\n this.$searchClear = this.$dropboxContainer.querySelector('.vscomp-search-clear');\r\n this.$toggleAllButton = this.$dropboxContainer.querySelector('.vscomp-toggle-all-button');\r\n this.$toggleAllCheckbox = this.$dropboxContainer.querySelector('.vscomp-toggle-all-checkbox');\r\n this.addEvent(this.$searchInput, 'input', 'onSearch');\r\n this.addEvent(this.$searchClear, 'click', 'onSearchClear');\r\n this.addEvent(this.$toggleAllButton, 'click', 'onToggleAllOptions');\r\n this.addEvent(this.$dropboxContainerBottom, 'focus', 'onDropboxContainerTopOrBottomFocus');\r\n this.addEvent(this.$dropboxContainerTop, 'focus', 'onDropboxContainerTopOrBottomFocus');\r\n }\r\n /** render methods - end */\r\n /** dom event methods - start */\r\n }, {\r\n key: \"addEvents\",\r\n value: function addEvents() {\r\n this.addEvent(document, 'click', 'onDocumentClick');\r\n this.addEvent(this.$allWrappers, 'keydown', 'onKeyDown');\r\n this.addEvent(this.$toggleButton, 'click', 'onToggleButtonClick');\r\n this.addEvent(this.$clearButton, 'click keydown', 'onClearButtonClick');\r\n this.addEvent(this.$dropboxContainer, 'click', 'onDropboxContainerClick');\r\n this.addEvent(this.$dropboxCloseButton, 'click', 'onDropboxCloseButtonClick');\r\n this.addEvent(this.$optionsContainer, 'scroll', 'onOptionsScroll');\r\n this.addEvent(this.$options, 'click', 'onOptionsClick');\r\n this.addEvent(this.$options, 'mouseover', 'onOptionsMouseOver');\r\n this.addEvent(this.$options, 'touchmove', 'onOptionsTouchMove');\r\n this.addMutationObserver();\r\n }\r\n }, {\r\n key: \"addEvent\",\r\n value: function addEvent($ele, events, method) {\r\n var _this2 = this;\r\n if (!$ele) {\r\n return;\r\n }\r\n var eventsArray = Utils.removeArrayEmpty(events.split(' '));\r\n eventsArray.forEach(function (event) {\r\n var eventsKey = \"\".concat(method, \"-\").concat(event);\r\n var callback = _this2.events[eventsKey];\r\n if (!callback) {\r\n callback = _this2[method].bind(_this2);\r\n _this2.events[eventsKey] = callback;\r\n }\r\n DomUtils.addEvent($ele, event, callback);\r\n });\r\n }\r\n /** dom event methods - start */\r\n }, {\r\n key: \"removeEvents\",\r\n value: function removeEvents() {\r\n this.removeEvent(document, 'click', 'onDocumentClick');\r\n this.removeEvent(this.$allWrappers, 'keydown', 'onKeyDown');\r\n this.removeEvent(this.$toggleButton, 'click', 'onToggleButtonClick');\r\n this.removeEvent(this.$clearButton, 'click keydown', 'onClearButtonClick');\r\n this.removeEvent(this.$dropboxContainer, 'click', 'onDropboxContainerClick');\r\n this.removeEvent(this.$dropboxCloseButton, 'click', 'onDropboxCloseButtonClick');\r\n this.removeEvent(this.$optionsContainer, 'scroll', 'onOptionsScroll');\r\n this.removeEvent(this.$options, 'click', 'onOptionsClick');\r\n this.removeEvent(this.$options, 'mouseover', 'onOptionsMouseOver');\r\n this.removeEvent(this.$options, 'touchmove', 'onOptionsTouchMove');\r\n this.removeMutationObserver();\r\n }\r\n }, {\r\n key: \"removeEvent\",\r\n value: function removeEvent($ele, events, method) {\r\n var _this3 = this;\r\n if (!$ele) {\r\n return;\r\n }\r\n var eventsArray = Utils.removeArrayEmpty(events.split(' '));\r\n eventsArray.forEach(function (event) {\r\n var eventsKey = \"\".concat(method, \"-\").concat(event);\r\n var callback = _this3.events[eventsKey];\r\n if (callback) {\r\n DomUtils.removeEvent($ele, event, callback);\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"onDocumentClick\",\r\n value: function onDocumentClick(e) {\r\n var $eleToKeepOpen = e.target.closest('.vscomp-wrapper');\r\n if ($eleToKeepOpen !== this.$wrapper && $eleToKeepOpen !== this.$dropboxWrapper && this.isOpened()) {\r\n this.closeDropbox();\r\n }\r\n }\r\n }, {\r\n key: \"onKeyDown\",\r\n value: function onKeyDown(e) {\r\n var key = e.which || e.keyCode;\r\n var method = keyDownMethodMapping[key];\r\n if (document.activeElement === this.$searchInput && e.shiftKey && key === 9) {\r\n e.preventDefault();\r\n this.$dropboxContainerTop.focus();\r\n return;\r\n }\r\n if (document.activeElement === this.$searchInput && key === 9) {\r\n e.preventDefault();\r\n this.focusFirstVisibleOption();\r\n return;\r\n }\r\n // Handle the Escape key when showing the dropdown as a popup, closing it\r\n if (document.activeElement === this.$wrapper && (key === 27 || e.key === 'Escape') && this.showAsPopup) {\r\n this.closeDropbox();\r\n return;\r\n }\r\n if (method) {\r\n this[method](e);\r\n }\r\n }\r\n }, {\r\n key: \"onEnterPress\",\r\n value: function onEnterPress(e) {\r\n e.preventDefault();\r\n if (this.isOpened()) {\r\n this.selectFocusedOption();\r\n }\r\n else if (this.$ele.disabled === false) {\r\n this.openDropbox();\r\n }\r\n }\r\n }, {\r\n key: \"onDownArrowPress\",\r\n value: function onDownArrowPress(e) {\r\n e.preventDefault();\r\n if (this.isOpened()) {\r\n this.focusOption({\r\n direction: 'next'\r\n });\r\n }\r\n else {\r\n this.openDropbox();\r\n }\r\n }\r\n }, {\r\n key: \"onUpArrowPress\",\r\n value: function onUpArrowPress(e) {\r\n e.preventDefault();\r\n if (this.isOpened()) {\r\n this.focusOption({\r\n direction: 'previous'\r\n });\r\n }\r\n else {\r\n this.openDropbox();\r\n }\r\n }\r\n }, {\r\n key: \"onBackspaceOrDeletePress\",\r\n value: function onBackspaceOrDeletePress(e) {\r\n if (e.target === this.$wrapper) {\r\n e.preventDefault();\r\n if (this.selectedValues.length > 0) {\r\n this.reset();\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"onToggleButtonClick\",\r\n value: function onToggleButtonClick(e) {\r\n var $target = e.target;\r\n if ($target.closest('.vscomp-value-tag-clear-button')) {\r\n this.removeValue($target.closest('.vscomp-value-tag'));\r\n }\r\n else if (!$target.closest('.toggle-button-child')) {\r\n this.toggleDropbox();\r\n }\r\n }\r\n }, {\r\n key: \"onClearButtonClick\",\r\n value: function onClearButtonClick(e) {\r\n if (e.type === 'click') {\r\n this.reset();\r\n }\r\n else if (e.type === 'keydown' && (e.code === 'Enter' || e.code === 'Space')) {\r\n e.stopPropagation();\r\n this.reset();\r\n }\r\n }\r\n }, {\r\n key: \"onOptionsScroll\",\r\n value: function onOptionsScroll() {\r\n this.setVisibleOptions();\r\n }\r\n }, {\r\n key: \"onOptionsClick\",\r\n value: function onOptionsClick(e) {\r\n var $option = e.target.closest('.vscomp-option');\r\n if ($option && !DomUtils.hasClass($option, 'disabled')) {\r\n if (DomUtils.hasClass($option, 'group-title')) {\r\n this.onGroupTitleClick($option);\r\n }\r\n else {\r\n this.selectOption($option, {\r\n event: e\r\n });\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"onGroupTitleClick\",\r\n value: function onGroupTitleClick($ele) {\r\n if (!$ele || !this.multiple || this.disableOptionGroupCheckbox) {\r\n return;\r\n }\r\n var isAdding = !DomUtils.hasClass($ele, 'selected');\r\n this.toggleGroupTitleCheckbox($ele, isAdding);\r\n this.toggleGroupOptions($ele, isAdding);\r\n }\r\n }, {\r\n key: \"onDropboxContainerClick\",\r\n value: function onDropboxContainerClick(e) {\r\n if (!e.target.closest('.vscomp-dropbox')) {\r\n this.closeDropbox();\r\n }\r\n }\r\n }, {\r\n key: \"onDropboxCloseButtonClick\",\r\n value: function onDropboxCloseButtonClick() {\r\n this.closeDropbox();\r\n }\r\n }, {\r\n key: \"onOptionsMouseOver\",\r\n value: function onOptionsMouseOver(e) {\r\n var $ele = e.target.closest('.vscomp-option');\r\n if ($ele && this.isOpened()) {\r\n if (DomUtils.hasClass($ele, 'disabled') || DomUtils.hasClass($ele, 'group-title')) {\r\n this.removeOptionFocus();\r\n }\r\n else {\r\n this.focusOption({\r\n $option: $ele\r\n });\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"onOptionsTouchMove\",\r\n value: function onOptionsTouchMove() {\r\n this.removeOptionFocus();\r\n }\r\n }, {\r\n key: \"onSearch\",\r\n value: function onSearch(e) {\r\n e.stopPropagation();\r\n this.setSearchValue(e.target.value, true);\r\n }\r\n }, {\r\n key: \"onSearchClear\",\r\n value: function onSearchClear() {\r\n this.setSearchValue('');\r\n this.focusSearchInput();\r\n }\r\n }, {\r\n key: \"onToggleAllOptions\",\r\n value: function onToggleAllOptions() {\r\n this.toggleAllOptions();\r\n }\r\n }, {\r\n key: \"onDropboxContainerTopOrBottomFocus\",\r\n value: function onDropboxContainerTopOrBottomFocus() {\r\n this.closeDropbox();\r\n }\r\n }, {\r\n key: \"onResize\",\r\n value: function onResize() {\r\n this.setOptionsContainerHeight(true);\r\n }\r\n /** to remove dropboxWrapper on removing vscomp-ele when it is rendered outside of vscomp-ele */\r\n }, {\r\n key: \"addMutationObserver\",\r\n value: function addMutationObserver() {\r\n var _this4 = this;\r\n if (!this.hasDropboxWrapper) {\r\n return;\r\n }\r\n var $vscompEle = this.$ele;\r\n this.mutationObserver = new MutationObserver(function (mutations) {\r\n var isAdded = false;\r\n var isRemoved = false;\r\n mutations.forEach(function (mutation) {\r\n if (!isAdded) {\r\n isAdded = virtual_select_toConsumableArray(mutation.addedNodes).some(function ($ele) {\r\n return !!($ele === $vscompEle || $ele.contains($vscompEle));\r\n });\r\n }\r\n if (!isRemoved) {\r\n isRemoved = virtual_select_toConsumableArray(mutation.removedNodes).some(function ($ele) {\r\n return !!($ele === $vscompEle || $ele.contains($vscompEle));\r\n });\r\n }\r\n });\r\n if (isRemoved && !isAdded) {\r\n _this4.destroy();\r\n }\r\n });\r\n this.mutationObserver.observe(document.querySelector('body'), {\r\n childList: true,\r\n subtree: true\r\n });\r\n }\r\n }, {\r\n key: \"removeMutationObserver\",\r\n value: function removeMutationObserver() {\r\n this.mutationObserver.disconnect();\r\n }\r\n /** dom event methods - end */\r\n /** before event methods - start */\r\n }, {\r\n key: \"beforeValueSet\",\r\n value: function beforeValueSet(isReset) {\r\n this.toggleAllOptionsClass(isReset ? false : undefined);\r\n }\r\n }, {\r\n key: \"beforeSelectNewValue\",\r\n value: function beforeSelectNewValue() {\r\n var _this5 = this;\r\n var newOption = this.getNewOption();\r\n var newIndex = newOption.index;\r\n this.newValues.push(newOption.value);\r\n this.setOptionProp(newIndex, 'isCurrentNew', false);\r\n this.setOptionProp(newIndex, 'isNew', true);\r\n /** using setTimeout to fix the issue of dropbox getting closed on select */\r\n setTimeout(function () {\r\n _this5.setSearchValue('');\r\n _this5.focusSearchInput();\r\n }, 0);\r\n }\r\n /** before event methods - end */\r\n /** after event methods - start */\r\n }, {\r\n key: \"afterRenderWrapper\",\r\n value: function afterRenderWrapper() {\r\n DomUtils.addClass(this.$ele, 'vscomp-ele');\r\n this.renderSearch();\r\n this.setEleStyles();\r\n this.setDropboxStyles();\r\n this.setOptionsHeight();\r\n this.setVisibleOptions();\r\n this.setOptionsContainerHeight();\r\n this.addEvents();\r\n this.setEleProps();\r\n if (!this.keepAlwaysOpen && !this.showAsPopup) {\r\n this.initDropboxPopover();\r\n }\r\n if (this.initialSelectedValue) {\r\n this.setValueMethod(this.initialSelectedValue, this.silentInitialValueSet);\r\n }\r\n else if (this.autoSelectFirstOption && this.visibleOptions.length) {\r\n this.setValueMethod(this.visibleOptions[0].value, this.silentInitialValueSet);\r\n }\r\n if (this.showOptionsOnlyOnSearch) {\r\n this.setSearchValue('', false, true);\r\n }\r\n if (this.initialDisabled) {\r\n this.disable();\r\n }\r\n if (this.autofocus) {\r\n this.focus();\r\n }\r\n }\r\n }, {\r\n key: \"afterRenderOptions\",\r\n value: function afterRenderOptions() {\r\n var visibleOptions = this.getVisibleOptions();\r\n var hasNoOptions = !this.options.length && !this.hasServerSearch;\r\n var hasNoSearchResults = !hasNoOptions && !visibleOptions.length;\r\n if (!this.allowNewOption || this.hasServerSearch || this.showOptionsOnlyOnSearch) {\r\n DomUtils.toggleClass(this.$allWrappers, 'has-no-search-results', hasNoSearchResults);\r\n if (hasNoSearchResults) {\r\n DomUtils.setAttr(this.$noSearchResults, 'tabindex', '0');\r\n DomUtils.setAttr(this.$noSearchResults, 'aria-hidden', 'false');\r\n }\r\n else {\r\n DomUtils.setAttr(this.$noSearchResults, 'tabindex', '-1');\r\n DomUtils.setAttr(this.$noSearchResults, 'aria-hidden', 'true');\r\n }\r\n }\r\n DomUtils.toggleClass(this.$allWrappers, 'has-no-options', hasNoOptions);\r\n if (hasNoOptions) {\r\n DomUtils.setAttr(this.$noOptions, 'tabindex', '0');\r\n DomUtils.setAttr(this.$noOptions, 'aria-hidden', 'false');\r\n }\r\n else {\r\n DomUtils.setAttr(this.$noOptions, 'tabindex', '-1');\r\n DomUtils.setAttr(this.$noOptions, 'aria-hidden', 'true');\r\n }\r\n this.setOptionAttr();\r\n this.setOptionsPosition();\r\n this.setOptionsTooltip();\r\n if (document.activeElement !== this.$searchInput) {\r\n var focusedOption = DomUtils.getElementsBySelector('.focused', this.$dropboxContainer)[0];\r\n if (focusedOption !== undefined) {\r\n focusedOption.focus();\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"afterSetOptionsContainerHeight\",\r\n value: function afterSetOptionsContainerHeight(reset) {\r\n if (reset && this.showAsPopup) {\r\n this.setVisibleOptions();\r\n }\r\n }\r\n }, {\r\n key: \"afterSetSearchValue\",\r\n value: function afterSetSearchValue() {\r\n var _this6 = this;\r\n if (this.hasServerSearch) {\r\n clearInterval(this.serverSearchTimeout);\r\n this.serverSearchTimeout = setTimeout(function () {\r\n _this6.serverSearch();\r\n }, this.searchDelay);\r\n }\r\n else {\r\n this.setVisibleOptionsCount();\r\n }\r\n if (this.selectAllOnlyVisible) {\r\n this.toggleAllOptionsClass();\r\n }\r\n this.focusOption({\r\n focusFirst: true\r\n });\r\n }\r\n }, {\r\n key: \"afterSetVisibleOptionsCount\",\r\n value: function afterSetVisibleOptionsCount() {\r\n this.scrollToTop();\r\n this.setOptionsHeight();\r\n this.setVisibleOptions();\r\n this.updatePosition();\r\n }\r\n }, {\r\n key: \"afterValueSet\",\r\n value: function afterValueSet() {\r\n this.scrollToTop();\r\n this.setSearchValue('');\r\n this.renderOptions();\r\n }\r\n }, {\r\n key: \"afterSetOptions\",\r\n value: function afterSetOptions(keepValue) {\r\n if (keepValue) {\r\n this.setSelectedProp();\r\n }\r\n this.setOptionsHeight();\r\n this.setVisibleOptions();\r\n if (this.showOptionsOnlyOnSearch) {\r\n this.setSearchValue('', false, true);\r\n }\r\n if (!keepValue) {\r\n this.reset();\r\n }\r\n }\r\n /** after event methods - end */\r\n /** set methods - start */\r\n /**\r\n * @param {virtualSelectOptions} params\r\n */\r\n }, {\r\n key: \"setProps\",\r\n value: function setProps(params) {\r\n var options = this.setDefaultProps(params);\r\n this.setPropsFromElementAttr(options);\r\n var convertToBoolean = Utils.convertToBoolean;\r\n this.$ele = options.ele;\r\n this.dropboxWrapper = options.dropboxWrapper;\r\n this.valueKey = options.valueKey;\r\n this.labelKey = options.labelKey;\r\n this.descriptionKey = options.descriptionKey;\r\n this.aliasKey = options.aliasKey;\r\n this.optionHeightText = options.optionHeight;\r\n this.optionHeight = parseFloat(this.optionHeightText);\r\n this.multiple = convertToBoolean(options.multiple);\r\n this.hasSearch = convertToBoolean(options.search);\r\n this.searchByStartsWith = convertToBoolean(options.searchByStartsWith);\r\n this.searchGroup = convertToBoolean(options.searchGroup);\r\n this.hideClearButton = convertToBoolean(options.hideClearButton);\r\n this.autoSelectFirstOption = convertToBoolean(options.autoSelectFirstOption);\r\n this.hasOptionDescription = convertToBoolean(options.hasOptionDescription);\r\n this.silentInitialValueSet = convertToBoolean(options.silentInitialValueSet);\r\n this.allowNewOption = convertToBoolean(options.allowNewOption);\r\n this.markSearchResults = convertToBoolean(options.markSearchResults);\r\n this.showSelectedOptionsFirst = convertToBoolean(options.showSelectedOptionsFirst);\r\n this.disableSelectAll = convertToBoolean(options.disableSelectAll);\r\n this.keepAlwaysOpen = convertToBoolean(options.keepAlwaysOpen);\r\n this.showDropboxAsPopup = convertToBoolean(options.showDropboxAsPopup);\r\n this.hideValueTooltipOnSelectAll = convertToBoolean(options.hideValueTooltipOnSelectAll);\r\n this.showOptionsOnlyOnSearch = convertToBoolean(options.showOptionsOnlyOnSearch);\r\n this.selectAllOnlyVisible = convertToBoolean(options.selectAllOnlyVisible);\r\n this.alwaysShowSelectedOptionsCount = convertToBoolean(options.alwaysShowSelectedOptionsCount);\r\n this.alwaysShowSelectedOptionsLabel = convertToBoolean(options.alwaysShowSelectedOptionsLabel);\r\n this.disableAllOptionsSelectedText = convertToBoolean(options.disableAllOptionsSelectedText);\r\n this.showValueAsTags = convertToBoolean(options.showValueAsTags);\r\n this.disableOptionGroupCheckbox = convertToBoolean(options.disableOptionGroupCheckbox);\r\n this.enableSecureText = convertToBoolean(options.enableSecureText);\r\n this.setValueAsArray = convertToBoolean(options.setValueAsArray);\r\n this.disableValidation = convertToBoolean(options.disableValidation);\r\n this.initialDisabled = convertToBoolean(options.disabled);\r\n this.required = convertToBoolean(options.required);\r\n this.autofocus = convertToBoolean(options.autofocus);\r\n this.useGroupValue = convertToBoolean(options.useGroupValue);\r\n this.focusSelectedOptionOnOpen = convertToBoolean(options.focusSelectedOptionOnOpen);\r\n this.noOptionsText = options.noOptionsText;\r\n this.noSearchResultsText = options.noSearchResultsText;\r\n this.selectAllText = options.selectAllText;\r\n this.searchNormalize = options.searchNormalize;\r\n this.searchPlaceholderText = options.searchPlaceholderText;\r\n this.searchFormLabel = options.searchFormLabel;\r\n this.optionsSelectedText = options.optionsSelectedText;\r\n this.optionSelectedText = options.optionSelectedText;\r\n this.allOptionsSelectedText = options.allOptionsSelectedText;\r\n this.clearButtonText = options.clearButtonText;\r\n this.moreText = options.moreText;\r\n this.placeholder = options.placeholder;\r\n this.position = options.position;\r\n this.textDirection = options.textDirection;\r\n this.dropboxWidth = options.dropboxWidth;\r\n this.tooltipFontSize = options.tooltipFontSize;\r\n this.tooltipAlignment = options.tooltipAlignment;\r\n this.tooltipMaxWidth = options.tooltipMaxWidth;\r\n this.updatePositionThrottle = options.updatePositionThrottle;\r\n this.noOfDisplayValues = parseInt(options.noOfDisplayValues);\r\n this.zIndex = parseInt(options.zIndex);\r\n this.maxValues = parseInt(options.maxValues);\r\n this.minValues = parseInt(options.minValues);\r\n this.name = this.secureText(options.name);\r\n this.additionalClasses = options.additionalClasses;\r\n this.popupDropboxBreakpoint = options.popupDropboxBreakpoint;\r\n this.popupPosition = options.popupPosition;\r\n this.onServerSearch = options.onServerSearch;\r\n this.labelRenderer = options.labelRenderer;\r\n this.initialSelectedValue = options.selectedValue === 0 ? '0' : options.selectedValue;\r\n this.emptyValue = options.emptyValue;\r\n this.ariaLabelledby = options.ariaLabelledby;\r\n this.ariaLabelText = options.ariaLabelText;\r\n this.ariaLabelClearButtonText = options.ariaLabelClearButtonText;\r\n this.maxWidth = options.maxWidth;\r\n this.searchDelay = options.searchDelay;\r\n /** @type {string[]} */\r\n this.selectedValues = [];\r\n /** @type {virtualSelectOption[]} */\r\n this.selectedOptions = [];\r\n this.newValues = [];\r\n this.events = {};\r\n this.tooltipEnterDelay = 200;\r\n this.searchValue = '';\r\n this.searchValueOriginal = '';\r\n this.isAllSelected = false;\r\n if (options.search === undefined && this.multiple || this.allowNewOption || this.showOptionsOnlyOnSearch) {\r\n this.hasSearch = true;\r\n }\r\n this.hasServerSearch = typeof this.onServerSearch === 'function';\r\n if (this.maxValues || this.hasServerSearch || this.showOptionsOnlyOnSearch) {\r\n this.disableSelectAll = true;\r\n this.disableOptionGroupCheckbox = true;\r\n }\r\n if (this.keepAlwaysOpen) {\r\n this.dropboxWrapper = 'self';\r\n }\r\n this.showAsPopup = this.showDropboxAsPopup && !this.keepAlwaysOpen && window.innerWidth <= parseFloat(this.popupDropboxBreakpoint);\r\n this.hasSearchContainer = this.hasSearch || this.multiple && !this.disableSelectAll;\r\n this.optionsCount = this.getOptionsCount(options.optionsCount);\r\n this.halfOptionsCount = Math.ceil(this.optionsCount / 2);\r\n this.optionsHeight = this.getOptionsHeight();\r\n this.uniqueId = this.getUniqueId();\r\n }\r\n /**\r\n * @param {virtualSelectOptions} options\r\n */\r\n }, {\r\n key: \"setDefaultProps\",\r\n value: function setDefaultProps(options) {\r\n var defaultOptions = {\r\n dropboxWrapper: 'self',\r\n valueKey: 'value',\r\n labelKey: 'label',\r\n descriptionKey: 'description',\r\n aliasKey: 'alias',\r\n ariaLabelText: 'Options list',\r\n ariaLabelClearButtonText: 'Clear button',\r\n optionsCount: 5,\r\n noOfDisplayValues: 50,\r\n optionHeight: '40px',\r\n noOptionsText: 'No options found',\r\n noSearchResultsText: 'No results found',\r\n selectAllText: 'Select All',\r\n searchNormalize: false,\r\n searchPlaceholderText: 'Search...',\r\n searchFormLabel: 'Search',\r\n clearButtonText: 'Clear',\r\n moreText: 'more...',\r\n optionsSelectedText: 'options selected',\r\n optionSelectedText: 'option selected',\r\n allOptionsSelectedText: 'All',\r\n placeholder: 'Select',\r\n position: 'bottom left',\r\n zIndex: options.keepAlwaysOpen ? 1 : 2,\r\n tooltipFontSize: '14px',\r\n tooltipAlignment: 'center',\r\n tooltipMaxWidth: '300px',\r\n updatePositionThrottle: 100,\r\n name: '',\r\n additionalClasses: '',\r\n maxValues: 0,\r\n showDropboxAsPopup: true,\r\n popupDropboxBreakpoint: '576px',\r\n popupPosition: 'center',\r\n hideValueTooltipOnSelectAll: true,\r\n emptyValue: '',\r\n searchDelay: 300,\r\n focusSelectedOptionOnOpen: true\r\n };\r\n if (options.hasOptionDescription) {\r\n defaultOptions.optionsCount = 4;\r\n defaultOptions.optionHeight = '50px';\r\n }\r\n return Object.assign(defaultOptions, options);\r\n }\r\n }, {\r\n key: \"setPropsFromElementAttr\",\r\n value: function setPropsFromElementAttr(options) {\r\n var $ele = options.ele;\r\n Object.keys(attrPropsMapping).forEach(function (k) {\r\n var value = $ele.getAttribute(k);\r\n if (valueLessProps.indexOf(k) !== -1 && (value === '' || value === 'true')) {\r\n value = true;\r\n }\r\n if (value) {\r\n // eslint-disable-next-line no-param-reassign\r\n options[attrPropsMapping[k]] = value;\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"setEleProps\",\r\n value: function setEleProps() {\r\n var $ele = this.$ele;\r\n $ele.virtualSelect = this;\r\n $ele.value = this.multiple ? [] : '';\r\n $ele.name = this.name;\r\n $ele.disabled = false;\r\n $ele.required = this.required;\r\n $ele.autofocus = this.autofocus;\r\n $ele.multiple = this.multiple;\r\n $ele.form = $ele.closest('form');\r\n $ele.reset = VirtualSelect.reset;\r\n $ele.setValue = VirtualSelect.setValueMethod;\r\n $ele.setOptions = VirtualSelect.setOptionsMethod;\r\n $ele.setDisabledOptions = VirtualSelect.setDisabledOptionsMethod;\r\n $ele.setEnabledOptions = VirtualSelect.setEnabledOptionsMethod;\r\n $ele.toggleSelectAll = VirtualSelect.toggleSelectAll;\r\n $ele.isAllSelected = VirtualSelect.isAllSelected;\r\n $ele.addOption = VirtualSelect.addOptionMethod;\r\n $ele.getNewValue = VirtualSelect.getNewValueMethod;\r\n $ele.getDisplayValue = VirtualSelect.getDisplayValueMethod;\r\n $ele.getSelectedOptions = VirtualSelect.getSelectedOptionsMethod;\r\n $ele.getDisabledOptions = VirtualSelect.getDisabledOptionsMethod;\r\n $ele.open = VirtualSelect.openMethod;\r\n $ele.close = VirtualSelect.closeMethod;\r\n $ele.focus = VirtualSelect.focusMethod;\r\n $ele.enable = VirtualSelect.enableMethod;\r\n $ele.disable = VirtualSelect.disableMethod;\r\n $ele.destroy = VirtualSelect.destroyMethod;\r\n $ele.validate = VirtualSelect.validateMethod;\r\n $ele.toggleRequired = VirtualSelect.toggleRequiredMethod;\r\n if (this.hasDropboxWrapper) {\r\n this.$dropboxWrapper.virtualSelect = this;\r\n }\r\n }\r\n }, {\r\n key: \"setValueMethod\",\r\n value: function setValueMethod(newValue, silentChange) {\r\n var valuesMapping = {};\r\n var valuesOrder = {};\r\n var validValues = [];\r\n var isMultiSelect = this.multiple;\r\n var value = newValue;\r\n if (value) {\r\n if (!Array.isArray(value)) {\r\n value = [value];\r\n }\r\n if (isMultiSelect) {\r\n var maxValues = this.maxValues;\r\n if (maxValues && value.length > maxValues) {\r\n value.splice(maxValues);\r\n }\r\n }\r\n else if (value.length > 1) {\r\n value = [value[0]];\r\n }\r\n /** converting value to string */\r\n value = value.map(function (v) {\r\n return v || v === 0 ? v.toString() : '';\r\n });\r\n if (this.useGroupValue) {\r\n value = this.setGroupOptionsValue(value);\r\n }\r\n value.forEach(function (d, i) {\r\n valuesMapping[d] = true;\r\n valuesOrder[d] = i;\r\n });\r\n if (this.allowNewOption && value) {\r\n this.setNewOptionsFromValue(value);\r\n }\r\n }\r\n this.options.forEach(function (d) {\r\n if (valuesMapping[d.value] === true && !d.isDisabled && !d.isGroupTitle) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isSelected = true;\r\n validValues.push(d.value);\r\n }\r\n else {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isSelected = false;\r\n }\r\n });\r\n if (isMultiSelect) {\r\n if (this.hasOptionGroup) {\r\n this.setGroupsSelectedProp();\r\n }\r\n /** sorting validValues in the given values order */\r\n validValues.sort(function (a, b) {\r\n return valuesOrder[a] - valuesOrder[b];\r\n });\r\n }\r\n else {\r\n /** taking first value for single select */\r\n var _validValues = validValues;\r\n var _validValues2 = virtual_select_slicedToArray(_validValues, 1);\r\n validValues = _validValues2[0];\r\n }\r\n this.beforeValueSet();\r\n this.setValue(validValues, {\r\n disableEvent: silentChange\r\n });\r\n this.afterValueSet();\r\n }\r\n }, {\r\n key: \"setGroupOptionsValue\",\r\n value: function setGroupOptionsValue(preparedValues) {\r\n var selectedValues = [];\r\n var selectedGroups = {};\r\n var valuesMapping = {};\r\n preparedValues.forEach(function (d) {\r\n valuesMapping[d] = true;\r\n });\r\n this.options.forEach(function (d) {\r\n var value = d.value;\r\n var isSelected = valuesMapping[value] === true;\r\n if (d.isGroupTitle) {\r\n if (isSelected) {\r\n selectedGroups[d.index] = true;\r\n }\r\n }\r\n else if (isSelected || selectedGroups[d.groupIndex]) {\r\n selectedValues.push(value);\r\n }\r\n });\r\n return selectedValues;\r\n }\r\n }, {\r\n key: \"setGroupsSelectedProp\",\r\n value: function setGroupsSelectedProp() {\r\n var isAllGroupOptionsSelected = this.isAllGroupOptionsSelected.bind(this);\r\n this.options.forEach(function (d) {\r\n if (d.isGroupTitle) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isSelected = isAllGroupOptionsSelected(d.index);\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"setOptionsMethod\",\r\n value: function setOptionsMethod(options, keepValue) {\r\n this.setOptions(options);\r\n this.afterSetOptions(keepValue);\r\n }\r\n }, {\r\n key: \"setDisabledOptionsMethod\",\r\n value: function setDisabledOptionsMethod(disabledOptions) {\r\n var keepValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n this.setDisabledOptions(disabledOptions, true);\r\n if (!keepValue) {\r\n this.setValueMethod(null);\r\n this.toggleAllOptionsClass();\r\n }\r\n this.setVisibleOptions();\r\n }\r\n }, {\r\n key: \"setDisabledOptions\",\r\n value: function setDisabledOptions(disabledOptions) {\r\n var setOptionsProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n var disabledOptionsArr = [];\r\n if (!disabledOptions) {\r\n if (setOptionsProp) {\r\n this.options.forEach(function (d) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isDisabled = false;\r\n return d;\r\n });\r\n }\r\n }\r\n else if (disabledOptions === true) {\r\n if (setOptionsProp) {\r\n this.options.forEach(function (d) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isDisabled = true;\r\n disabledOptionsArr.push(d.value);\r\n return d;\r\n });\r\n }\r\n }\r\n else {\r\n disabledOptionsArr = disabledOptions.map(function (d) {\r\n return d.toString();\r\n });\r\n var disabledOptionsMapping = {};\r\n disabledOptionsArr.forEach(function (d) {\r\n disabledOptionsMapping[d] = true;\r\n });\r\n if (setOptionsProp) {\r\n this.options.forEach(function (d) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isDisabled = disabledOptionsMapping[d.value] === true;\r\n return d;\r\n });\r\n }\r\n }\r\n this.disabledOptions = disabledOptionsArr;\r\n }\r\n }, {\r\n key: \"setEnabledOptionsMethod\",\r\n value: function setEnabledOptionsMethod(disabledOptions) {\r\n var keepValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n this.setEnabledOptions(disabledOptions);\r\n if (!keepValue) {\r\n this.setValueMethod(null);\r\n this.toggleAllOptionsClass();\r\n }\r\n this.setVisibleOptions();\r\n }\r\n }, {\r\n key: \"setEnabledOptions\",\r\n value: function setEnabledOptions(enabledOptions) {\r\n if (enabledOptions === undefined) {\r\n return;\r\n }\r\n var disabledOptionsArr = [];\r\n if (enabledOptions === true) {\r\n this.options.forEach(function (d) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isDisabled = false;\r\n return d;\r\n });\r\n }\r\n else {\r\n var enabledOptionsMapping = {};\r\n enabledOptions.forEach(function (d) {\r\n enabledOptionsMapping[d] = true;\r\n });\r\n this.options.forEach(function (d) {\r\n var isDisabled = enabledOptionsMapping[d.value] !== true;\r\n // eslint-disable-next-line no-param-reassign\r\n d.isDisabled = isDisabled;\r\n if (isDisabled) {\r\n disabledOptionsArr.push(d.value);\r\n }\r\n return d;\r\n });\r\n }\r\n this.disabledOptions = disabledOptionsArr;\r\n }\r\n }, {\r\n key: \"setOptions\",\r\n value: function setOptions() {\r\n var _this7 = this;\r\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\r\n var preparedOptions = [];\r\n var hasDisabledOptions = this.disabledOptions.length;\r\n var valueKey = this.valueKey, labelKey = this.labelKey, descriptionKey = this.descriptionKey, aliasKey = this.aliasKey, hasOptionDescription = this.hasOptionDescription;\r\n var getString = Utils.getString, convertToBoolean = Utils.convertToBoolean;\r\n var secureText = this.secureText.bind(this);\r\n var getAlias = this.getAlias.bind(this);\r\n var index = 0;\r\n var hasOptionGroup = false;\r\n var disabledOptionsMapping = {};\r\n var hasEmptyValueOption = false;\r\n this.disabledOptions.forEach(function (d) {\r\n disabledOptionsMapping[d] = true;\r\n });\r\n var prepareOption = function prepareOption(d) {\r\n if (virtual_select_typeof(d) !== 'object') {\r\n var _d2;\r\n // eslint-disable-next-line no-param-reassign\r\n d = (_d2 = {}, _defineProperty(_d2, valueKey, d), _defineProperty(_d2, labelKey, d), _d2);\r\n }\r\n var value = secureText(getString(d[valueKey]));\r\n var label = secureText(getString(d[labelKey]));\r\n var childOptions = d.options;\r\n var isGroupTitle = !!childOptions;\r\n var option = {\r\n index: index,\r\n value: value,\r\n label: label,\r\n labelNormalized: _this7.searchNormalize ? Utils.normalizeString(label).toLowerCase() : label.toLowerCase(),\r\n alias: getAlias(d[aliasKey]),\r\n isVisible: convertToBoolean(d.isVisible, true),\r\n isNew: d.isNew || false,\r\n isGroupTitle: isGroupTitle,\r\n classNames: d.classNames\r\n };\r\n if (!hasEmptyValueOption && value === '') {\r\n hasEmptyValueOption = true;\r\n }\r\n if (hasDisabledOptions) {\r\n option.isDisabled = disabledOptionsMapping[value] === true;\r\n }\r\n if (d.isGroupOption) {\r\n option.isGroupOption = true;\r\n option.groupIndex = d.groupIndex;\r\n }\r\n if (hasOptionDescription) {\r\n option.description = secureText(getString(d[descriptionKey]));\r\n }\r\n if (d.customData) {\r\n option.customData = d.customData;\r\n }\r\n preparedOptions.push(option);\r\n index += 1;\r\n if (isGroupTitle) {\r\n var groupIndex = option.index;\r\n hasOptionGroup = true;\r\n childOptions.forEach(function (childData) {\r\n // eslint-disable-next-line no-param-reassign\r\n childData.isGroupOption = true;\r\n // eslint-disable-next-line no-param-reassign\r\n childData.groupIndex = groupIndex;\r\n prepareOption(childData);\r\n });\r\n }\r\n };\r\n if (Array.isArray(options)) {\r\n options.forEach(prepareOption);\r\n }\r\n var optionsLength = preparedOptions.length;\r\n var $ele = this.$ele;\r\n $ele.options = preparedOptions;\r\n $ele.length = optionsLength;\r\n this.options = preparedOptions;\r\n this.visibleOptionsCount = optionsLength;\r\n this.lastOptionIndex = optionsLength - 1;\r\n this.newValues = [];\r\n this.hasOptionGroup = hasOptionGroup;\r\n this.hasEmptyValueOption = hasEmptyValueOption;\r\n this.setSortedOptions();\r\n }\r\n }, {\r\n key: \"setServerOptions\",\r\n value: function setServerOptions() {\r\n var _this8 = this;\r\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\r\n this.setOptionsMethod(options, true);\r\n var selectedOptions = this.selectedOptions;\r\n var newOptions = this.options;\r\n var optionsUpdated = false;\r\n /** merging already selected options details with new options */\r\n if (selectedOptions.length) {\r\n var newOptionsValueMapping = {};\r\n optionsUpdated = true;\r\n newOptions.forEach(function (d) {\r\n newOptionsValueMapping[d.value] = true;\r\n });\r\n selectedOptions.forEach(function (d) {\r\n if (newOptionsValueMapping[d.value] !== true) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isVisible = false;\r\n newOptions.push(d);\r\n }\r\n });\r\n this.setOptionsMethod(newOptions, true);\r\n }\r\n /** merging new search option */\r\n if (this.allowNewOption && this.searchValue) {\r\n var hasExactOption = newOptions.some(function (d) {\r\n return d.label.toLowerCase() === _this8.searchValue;\r\n });\r\n if (!hasExactOption) {\r\n optionsUpdated = true;\r\n this.setNewOption();\r\n }\r\n }\r\n if (optionsUpdated) {\r\n this.setVisibleOptionsCount();\r\n if (this.multiple) {\r\n this.toggleAllOptionsClass();\r\n }\r\n this.setValueText();\r\n }\r\n else {\r\n this.updatePosition();\r\n }\r\n this.setVisibleOptionsCount();\r\n DomUtils.removeClass(this.$allWrappers, 'server-searching');\r\n }\r\n }, {\r\n key: \"setSelectedOptions\",\r\n value: function setSelectedOptions() {\r\n this.selectedOptions = this.options.filter(function (d) {\r\n return d.isSelected;\r\n });\r\n }\r\n }, {\r\n key: \"setSortedOptions\",\r\n value: function setSortedOptions() {\r\n var sortedOptions = virtual_select_toConsumableArray(this.options);\r\n if (this.showSelectedOptionsFirst && this.selectedValues.length) {\r\n if (this.hasOptionGroup) {\r\n sortedOptions = this.sortOptionsGroup(sortedOptions);\r\n }\r\n else {\r\n sortedOptions = this.sortOptions(sortedOptions);\r\n }\r\n }\r\n this.sortedOptions = sortedOptions;\r\n }\r\n }, {\r\n key: \"setVisibleOptions\",\r\n value: function setVisibleOptions() {\r\n var visibleOptions = virtual_select_toConsumableArray(this.sortedOptions);\r\n var maxOptionsToShow = this.optionsCount * 2;\r\n var startIndex = this.getVisibleStartIndex();\r\n var newOption = this.getNewOption();\r\n var endIndex = startIndex + maxOptionsToShow - 1;\r\n var i = 0;\r\n if (newOption) {\r\n newOption.visibleIndex = i;\r\n i += 1;\r\n }\r\n visibleOptions = visibleOptions.filter(function (d) {\r\n var inView = false;\r\n if (d.isVisible && !d.isCurrentNew) {\r\n inView = i >= startIndex && i <= endIndex;\r\n // eslint-disable-next-line no-param-reassign\r\n d.visibleIndex = i;\r\n i += 1;\r\n }\r\n return inView;\r\n });\r\n if (newOption) {\r\n visibleOptions = [newOption].concat(virtual_select_toConsumableArray(visibleOptions));\r\n }\r\n this.visibleOptions = visibleOptions;\r\n // update number of visible options\r\n this.visibleOptionsCount = visibleOptions.length;\r\n this.renderOptions();\r\n }\r\n }, {\r\n key: \"setOptionsPosition\",\r\n value: function setOptionsPosition(startIndex) {\r\n // We use the parseInt to fix a Chrome issue when dealing with decimal pixels in translate3d\r\n var top = parseInt((startIndex || this.getVisibleStartIndex()) * this.optionHeight);\r\n this.$options.style.transform = \"translate3d(0, \".concat(top, \"px, 0)\");\r\n DomUtils.setData(this.$options, 'top', top);\r\n }\r\n }, {\r\n key: \"setOptionsTooltip\",\r\n value: function setOptionsTooltip() {\r\n var _this9 = this;\r\n var visibleOptions = this.getVisibleOptions();\r\n var hasOptionDescription = this.hasOptionDescription;\r\n visibleOptions.forEach(function (d) {\r\n var $optionEle = _this9.$dropboxContainer.querySelector(\".vscomp-option[data-index=\\\"\".concat(d.index, \"\\\"]\"));\r\n DomUtils.setData($optionEle.querySelector('.vscomp-option-text'), 'tooltip', d.label);\r\n if (hasOptionDescription) {\r\n DomUtils.setData($optionEle.querySelector('.vscomp-option-description'), 'tooltip', d.description);\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"setValue\",\r\n value: function setValue(value) {\r\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;\r\n var isValidValue = this.hasEmptyValueOption && value === '' || value;\r\n if (!isValidValue) {\r\n this.selectedValues = [];\r\n }\r\n else if (Array.isArray(value)) {\r\n this.selectedValues = virtual_select_toConsumableArray(value);\r\n }\r\n else {\r\n this.selectedValues = [value];\r\n }\r\n var newValue = this.getValue();\r\n this.$ele.value = newValue;\r\n this.$hiddenInput.value = this.getInputValue(newValue);\r\n this.isMaxValuesSelected = !!(this.maxValues && this.maxValues <= this.selectedValues.length);\r\n this.toggleAllOptionsClass();\r\n this.setValueText();\r\n DomUtils.toggleClass(this.$allWrappers, 'has-value', Utils.isNotEmpty(this.selectedValues));\r\n DomUtils.toggleClass(this.$allWrappers, 'max-value-selected', this.isMaxValuesSelected);\r\n if (!disableValidation) {\r\n this.validate();\r\n }\r\n if (!disableEvent) {\r\n DomUtils.dispatchEvent(this.$ele, 'change', true);\r\n }\r\n }\r\n }, {\r\n key: \"setValueText\",\r\n value: function setValueText() {\r\n var _this10 = this;\r\n var multiple = this.multiple, selectedValues = this.selectedValues, noOfDisplayValues = this.noOfDisplayValues, showValueAsTags = this.showValueAsTags, $valueText = this.$valueText;\r\n var valueText = [];\r\n var valueTooltip = [];\r\n var selectedLength = selectedValues.length;\r\n var selectedValuesCount = 0;\r\n var showAllText = this.isAllSelected && !this.hasServerSearch && !this.disableAllOptionsSelectedText && !showValueAsTags;\r\n /** show all values selected text without tooltip text */\r\n if (showAllText && this.hideValueTooltipOnSelectAll) {\r\n $valueText.innerHTML = \"\".concat(this.allOptionsSelectedText, \" (\").concat(selectedLength, \")\");\r\n }\r\n else {\r\n var selectedOptions = this.getSelectedOptions({\r\n fullDetails: true,\r\n keepSelectionOrder: true\r\n });\r\n selectedOptions.some(function (d) {\r\n if (d.isCurrentNew) {\r\n return false;\r\n }\r\n if (selectedValuesCount >= noOfDisplayValues) {\r\n return true;\r\n }\r\n var label = d.label;\r\n valueText.push(label);\r\n selectedValuesCount += 1;\r\n if (showValueAsTags) {\r\n // Will cause text overflow in runtime and if so,the tooltip information is prepared\r\n var valueTooltipForTags = Utils.willTextOverflow($valueText.parentElement, label) ? _this10.getTooltipAttrText(label, false, true) : '';\r\n var valueTagHtml = \"\\n \").concat(label, \"\\n \\n \\n \\n \");\r\n valueTooltip.push(valueTagHtml);\r\n }\r\n else {\r\n valueTooltip.push(label);\r\n }\r\n return false;\r\n });\r\n var moreSelectedOptions = selectedLength - noOfDisplayValues;\r\n if (moreSelectedOptions > 0) {\r\n valueTooltip.push(\"+ \".concat(moreSelectedOptions, \" \").concat(this.moreText, \"\"));\r\n }\r\n var aggregatedValueText = valueText.join(', ');\r\n if (aggregatedValueText === '') {\r\n $valueText.innerHTML = this.placeholder;\r\n }\r\n else {\r\n $valueText.innerHTML = aggregatedValueText;\r\n if (multiple) {\r\n var maxValues = this.maxValues;\r\n var showSelectedCount = this.alwaysShowSelectedOptionsCount || DomUtils.hasEllipsis($valueText);\r\n if (showSelectedCount || maxValues || showValueAsTags) {\r\n var countText = \"\".concat(selectedLength, \"\");\r\n if (maxValues) {\r\n countText += \" / \".concat(maxValues, \"\");\r\n }\r\n /** show all values selected text with tooltip text */\r\n if (showAllText) {\r\n $valueText.innerHTML = \"\".concat(this.allOptionsSelectedText, \" (\").concat(selectedLength, \")\");\r\n }\r\n else if (showValueAsTags) {\r\n $valueText.innerHTML = valueTooltip.join('');\r\n this.$valueTags = $valueText.querySelectorAll('.vscomp-value-tag');\r\n this.setValueTagAttr();\r\n }\r\n else if (!this.alwaysShowSelectedOptionsLabel) {\r\n /** replace comma separated list of selections with shorter text indicating selection count */\r\n var optionsSelectedText = selectedLength === 1 ? this.optionSelectedText : this.optionsSelectedText;\r\n $valueText.innerHTML = \"\".concat(countText, \" \").concat(optionsSelectedText);\r\n }\r\n }\r\n else {\r\n /** removing tooltip if full value text is visible */\r\n valueTooltip = [];\r\n }\r\n }\r\n }\r\n }\r\n var tooltipText = '';\r\n if (selectedLength === 0) {\r\n tooltipText = this.placeholder;\r\n }\r\n else if (!showValueAsTags) {\r\n tooltipText = valueTooltip.join(', ');\r\n }\r\n if (!showValueAsTags) {\r\n DomUtils.setData($valueText, 'tooltip', tooltipText);\r\n }\r\n if (multiple) {\r\n if (!showValueAsTags) {\r\n DomUtils.setData($valueText, 'tooltipEllipsisOnly', selectedLength === 0);\r\n }\r\n else {\r\n this.updatePosition();\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"setSearchValue\",\r\n value: function setSearchValue(value) {\r\n var skipInputSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n var forceSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n if (value === this.searchValueOriginal && !forceSet) {\r\n return;\r\n }\r\n if (!skipInputSet) {\r\n this.$searchInput.value = value;\r\n }\r\n var searchValue = value.replace(/\\\\/g, '').toLowerCase().trim();\r\n this.searchValue = searchValue;\r\n this.searchValueOriginal = value;\r\n DomUtils.toggleClass(this.$allWrappers, 'has-search-value', value);\r\n this.afterSetSearchValue();\r\n }\r\n }, {\r\n key: \"setVisibleOptionsCount\",\r\n value: function setVisibleOptionsCount() {\r\n var visibleOptionsCount = 0;\r\n var hasExactOption = false;\r\n var visibleOptionGroupsMapping;\r\n var searchGroup = this.searchGroup, showOptionsOnlyOnSearch = this.showOptionsOnlyOnSearch, searchByStartsWith = this.searchByStartsWith;\r\n /** If searchNormalize we'll normalize the searchValue */\r\n var searchValue = this.searchValue;\r\n searchValue = this.searchNormalize ? Utils.normalizeString(searchValue) : searchValue;\r\n var isOptionVisible = this.isOptionVisible.bind(this);\r\n if (this.hasOptionGroup) {\r\n visibleOptionGroupsMapping = this.getVisibleOptionGroupsMapping(searchValue);\r\n }\r\n this.options.forEach(function (d) {\r\n if (d.isCurrentNew) {\r\n return;\r\n }\r\n var result;\r\n if (showOptionsOnlyOnSearch && !searchValue) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isVisible = false;\r\n result = {\r\n isVisible: false,\r\n hasExactOption: false\r\n };\r\n }\r\n else {\r\n result = isOptionVisible({\r\n data: d,\r\n searchValue: searchValue,\r\n hasExactOption: hasExactOption,\r\n visibleOptionGroupsMapping: visibleOptionGroupsMapping,\r\n searchGroup: searchGroup,\r\n searchByStartsWith: searchByStartsWith\r\n });\r\n }\r\n if (result.isVisible) {\r\n visibleOptionsCount += 1;\r\n }\r\n if (!hasExactOption) {\r\n hasExactOption = result.hasExactOption;\r\n }\r\n });\r\n if (this.allowNewOption) {\r\n if (searchValue && !hasExactOption) {\r\n this.setNewOption();\r\n visibleOptionsCount += 1;\r\n }\r\n else {\r\n this.removeNewOption();\r\n }\r\n }\r\n this.visibleOptionsCount = visibleOptionsCount;\r\n this.afterSetVisibleOptionsCount();\r\n }\r\n }, {\r\n key: \"setOptionProp\",\r\n value: function setOptionProp(index, key, value) {\r\n if (!this.options[index]) {\r\n return;\r\n }\r\n this.options[index][key] = value;\r\n }\r\n }, {\r\n key: \"setOptionsHeight\",\r\n value: function setOptionsHeight() {\r\n this.$optionsList.style.height = \"\".concat(this.optionHeight * this.visibleOptionsCount, \"px\");\r\n }\r\n }, {\r\n key: \"setOptionsContainerHeight\",\r\n value: function setOptionsContainerHeight(reset) {\r\n var optionsHeight;\r\n if (reset) {\r\n if (this.showAsPopup) {\r\n this.optionsCount = this.getOptionsCount();\r\n this.halfOptionsCount = Math.ceil(this.optionsCount / 2);\r\n optionsHeight = this.getOptionsHeight();\r\n this.optionsHeight = optionsHeight;\r\n }\r\n }\r\n else {\r\n optionsHeight = this.optionsHeight;\r\n if (this.keepAlwaysOpen) {\r\n DomUtils.setStyle(this.$noOptions, 'height', optionsHeight);\r\n DomUtils.setStyle(this.$noSearchResults, 'height', optionsHeight);\r\n }\r\n }\r\n DomUtils.setStyle(this.$optionsContainer, 'max-height', optionsHeight);\r\n this.afterSetOptionsContainerHeight(reset);\r\n }\r\n }, {\r\n key: \"setNewOption\",\r\n value: function setNewOption(newValue) {\r\n var value = newValue || this.searchValueOriginal.trim();\r\n if (!value) {\r\n return;\r\n }\r\n var newOption = this.getNewOption();\r\n if (newOption) {\r\n var newIndex = newOption.index;\r\n this.setOptionProp(newIndex, 'value', this.secureText(value));\r\n this.setOptionProp(newIndex, 'label', this.secureText(value));\r\n }\r\n else {\r\n var data = {\r\n value: value,\r\n label: value\r\n };\r\n if (newValue) {\r\n data.isNew = true;\r\n this.newValues.push(value);\r\n }\r\n else {\r\n data.isCurrentNew = true;\r\n }\r\n this.addOption(data);\r\n }\r\n }\r\n }, {\r\n key: \"setSelectedProp\",\r\n value: function setSelectedProp() {\r\n var valuesMapping = {};\r\n this.selectedValues.forEach(function (d) {\r\n valuesMapping[d] = true;\r\n });\r\n this.options.forEach(function (d) {\r\n if (valuesMapping[d.value] === true) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isSelected = true;\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"setNewOptionsFromValue\",\r\n value: function setNewOptionsFromValue(values) {\r\n if (!values) {\r\n return;\r\n }\r\n var setNewOption = this.setNewOption.bind(this);\r\n var availableValuesMapping = {};\r\n this.options.forEach(function (d) {\r\n availableValuesMapping[d.value] = true;\r\n });\r\n values.forEach(function (d) {\r\n if (d && availableValuesMapping[d] !== true) {\r\n setNewOption(d);\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"setDropboxWrapperWidth\",\r\n value: function setDropboxWrapperWidth() {\r\n if (this.showAsPopup) {\r\n return;\r\n }\r\n var width = this.dropboxWidth || \"\".concat(this.$wrapper.offsetWidth, \"px\");\r\n DomUtils.setStyle(this.$dropboxContainer, 'max-width', width);\r\n }\r\n }, {\r\n key: \"setEleStyles\",\r\n value: function setEleStyles() {\r\n var maxWidth = this.maxWidth;\r\n var styles = {};\r\n if (maxWidth) {\r\n styles['max-width'] = maxWidth;\r\n }\r\n DomUtils.setStyles(this.$ele, styles);\r\n }\r\n }, {\r\n key: \"setDropboxStyles\",\r\n value: function setDropboxStyles() {\r\n var dropboxWidth = this.dropboxWidth;\r\n var styles = {};\r\n var containerStyles = {\r\n 'z-index': this.zIndex\r\n };\r\n if (dropboxWidth) {\r\n if (this.showAsPopup) {\r\n styles['max-width'] = dropboxWidth;\r\n }\r\n else {\r\n containerStyles.width = dropboxWidth;\r\n }\r\n }\r\n DomUtils.setStyles(this.$dropboxContainer, containerStyles);\r\n DomUtils.setStyles(this.$dropbox, styles);\r\n }\r\n }, {\r\n key: \"setOptionAttr\",\r\n value: function setOptionAttr() {\r\n var $visibleOptions = this.$visibleOptions;\r\n var options = this.options;\r\n var optionHeight = \"\".concat(this.optionHeight, \"px\");\r\n var setStyle = DomUtils.setStyle, getData = DomUtils.getData, setData = DomUtils.setData;\r\n if ($visibleOptions && $visibleOptions.length) {\r\n $visibleOptions.forEach(function ($option) {\r\n var optionDetails = options[getData($option, 'index')];\r\n setStyle($option, 'height', optionHeight);\r\n setData($option, 'value', optionDetails.value);\r\n });\r\n }\r\n }\r\n }, {\r\n key: \"setValueTagAttr\",\r\n value: function setValueTagAttr() {\r\n var $valueTags = this.$valueTags;\r\n if (!$valueTags || !$valueTags.length) {\r\n return;\r\n }\r\n var getData = DomUtils.getData, setData = DomUtils.setData;\r\n var options = this.options;\r\n $valueTags.forEach(function ($valueTag) {\r\n var index = getData($valueTag, 'index');\r\n if (typeof index !== 'undefined') {\r\n var optionDetails = options[index];\r\n setData($valueTag, 'value', optionDetails.value);\r\n }\r\n });\r\n }\r\n }, {\r\n key: \"setScrollTop\",\r\n value: function setScrollTop() {\r\n var selectedValues = this.selectedValues;\r\n if (this.showSelectedOptionsFirst || !this.focusSelectedOptionOnOpen || selectedValues.length === 0) {\r\n return;\r\n }\r\n var valuesMapping = {};\r\n var selectedOptionIndex;\r\n selectedValues.forEach(function (d) {\r\n valuesMapping[d] = true;\r\n });\r\n this.options.some(function (d) {\r\n if (valuesMapping[d.value]) {\r\n selectedOptionIndex = d.visibleIndex;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (selectedOptionIndex) {\r\n this.$optionsContainer.scrollTop = this.optionHeight * selectedOptionIndex;\r\n }\r\n }\r\n /** set methods - end */\r\n /** get methods - start */\r\n }, {\r\n key: \"getVisibleOptions\",\r\n value: function getVisibleOptions() {\r\n return this.visibleOptions || [];\r\n }\r\n }, {\r\n key: \"getValue\",\r\n value: function getValue() {\r\n var value;\r\n if (this.multiple) {\r\n if (this.useGroupValue) {\r\n value = this.getGroupValue();\r\n }\r\n else {\r\n value = this.selectedValues;\r\n }\r\n }\r\n else {\r\n value = this.selectedValues[0] || '';\r\n }\r\n return value;\r\n }\r\n }, {\r\n key: \"getGroupValue\",\r\n value: function getGroupValue() {\r\n var selectedValues = [];\r\n var selectedGroups = {};\r\n this.options.forEach(function (d) {\r\n if (!d.isSelected) {\r\n return;\r\n }\r\n var value = d.value;\r\n if (d.isGroupTitle) {\r\n if (value) {\r\n selectedGroups[d.index] = true;\r\n selectedValues.push(value);\r\n }\r\n }\r\n else if (selectedGroups[d.groupIndex] !== true) {\r\n selectedValues.push(value);\r\n }\r\n });\r\n return selectedValues;\r\n }\r\n }, {\r\n key: \"getInputValue\",\r\n value: function getInputValue(preparedValue) {\r\n var value = preparedValue;\r\n if (value && value.length) {\r\n if (this.setValueAsArray && this.multiple) {\r\n value = JSON.stringify(value);\r\n }\r\n }\r\n else {\r\n value = this.emptyValue;\r\n }\r\n return value;\r\n }\r\n }, {\r\n key: \"getFirstVisibleOptionIndex\",\r\n value: function getFirstVisibleOptionIndex() {\r\n return Math.ceil(this.$optionsContainer.scrollTop / this.optionHeight);\r\n }\r\n }, {\r\n key: \"getVisibleStartIndex\",\r\n value: function getVisibleStartIndex() {\r\n var firstVisibleOptionIndex = this.getFirstVisibleOptionIndex();\r\n var startIndex = firstVisibleOptionIndex - this.halfOptionsCount;\r\n if (startIndex < 0) {\r\n startIndex = 0;\r\n }\r\n return startIndex;\r\n }\r\n }, {\r\n key: \"getTooltipAttrText\",\r\n value: function getTooltipAttrText(text) {\r\n var ellipsisOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n var allowHtml = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n var tootltipText = Utils.containsHTML(text) ? Utils.replaceDoubleQuotesWithHTML(text) : text;\r\n var data = {\r\n 'data-tooltip': tootltipText || '',\r\n 'data-tooltip-enter-delay': this.tooltipEnterDelay,\r\n 'data-tooltip-z-index': this.zIndex,\r\n 'data-tooltip-font-size': this.tooltipFontSize,\r\n 'data-tooltip-alignment': this.tooltipAlignment,\r\n 'data-tooltip-max-width': this.tooltipMaxWidth,\r\n 'data-tooltip-ellipsis-only': ellipsisOnly,\r\n 'data-tooltip-allow-html': allowHtml\r\n };\r\n return DomUtils.getAttributesText(data);\r\n }\r\n /**\r\n * @param {any} data\r\n * @returns {any}\r\n */\r\n }, {\r\n key: \"getOptionObj\",\r\n value: function getOptionObj(data) {\r\n if (!data) {\r\n return undefined;\r\n }\r\n var getString = Utils.getString;\r\n var secureText = this.secureText.bind(this);\r\n return {\r\n index: data.index,\r\n value: secureText(getString(data.value)),\r\n label: secureText(getString(data.label)),\r\n description: secureText(getString(data.description)),\r\n alias: this.getAlias(data.alias),\r\n isCurrentNew: data.isCurrentNew || false,\r\n isNew: data.isNew || false,\r\n isVisible: true\r\n };\r\n }\r\n }, {\r\n key: \"getNewOption\",\r\n value: function getNewOption() {\r\n var lastOption = this.options[this.lastOptionIndex];\r\n if (!lastOption || !lastOption.isCurrentNew) {\r\n return undefined;\r\n }\r\n return lastOption;\r\n }\r\n }, {\r\n key: \"getOptionIndex\",\r\n value: function getOptionIndex(value) {\r\n var index;\r\n this.options.some(function (d) {\r\n if (d.value === value) {\r\n index = d.index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return index;\r\n }\r\n }, {\r\n key: \"getNewValue\",\r\n value: function getNewValue() {\r\n var valuesMapping = {};\r\n this.newValues.forEach(function (d) {\r\n valuesMapping[d] = true;\r\n });\r\n var result = this.selectedValues.filter(function (d) {\r\n return valuesMapping[d] === true;\r\n });\r\n return this.multiple ? result : result[0];\r\n }\r\n }, {\r\n key: \"getAlias\",\r\n value: function getAlias(alias) {\r\n var result = alias;\r\n if (result) {\r\n if (Array.isArray(result)) {\r\n result = result.join(',');\r\n }\r\n else {\r\n result = result.toString().trim();\r\n }\r\n result = result.toLowerCase();\r\n }\r\n return result || '';\r\n }\r\n }, {\r\n key: \"getDisplayValue\",\r\n value: function getDisplayValue() {\r\n var displayValues = [];\r\n this.options.forEach(function (d) {\r\n if (d.isSelected) {\r\n displayValues.push(d.label);\r\n }\r\n });\r\n return this.multiple ? displayValues : displayValues[0] || '';\r\n }\r\n }, {\r\n key: \"getSelectedOptions\",\r\n value: function getSelectedOptions() {\r\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;\r\n var valueKey = this.valueKey, labelKey = this.labelKey, selectedValues = this.selectedValues;\r\n var selectedOptions = [];\r\n this.options.forEach(function (d) {\r\n if (d.isSelected && !d.isGroupTitle) {\r\n if (fullDetails) {\r\n selectedOptions.push(d);\r\n }\r\n else {\r\n var _data;\r\n var data = (_data = {}, _defineProperty(_data, valueKey, d.value), _defineProperty(_data, labelKey, d.label), _data);\r\n if (d.isNew) {\r\n data.isNew = true;\r\n }\r\n if (d.customData) {\r\n data.customData = d.customData;\r\n }\r\n selectedOptions.push(data);\r\n }\r\n }\r\n });\r\n if (keepSelectionOrder) {\r\n var valuesOrder = {};\r\n selectedValues.forEach(function (d, i) {\r\n valuesOrder[d] = i;\r\n });\r\n selectedOptions.sort(function (a, b) {\r\n return valuesOrder[a.value] - valuesOrder[b.value];\r\n });\r\n }\r\n return this.multiple || fullDetails ? selectedOptions : selectedOptions[0];\r\n }\r\n }, {\r\n key: \"getDisabledOptions\",\r\n value: function getDisabledOptions() {\r\n var valueKey = this.valueKey, labelKey = this.labelKey, disabledOptions = this.disabledOptions;\r\n var disabledOptionsValueMapping = {};\r\n var result = [];\r\n disabledOptions.forEach(function (value) {\r\n disabledOptionsValueMapping[value] = true;\r\n });\r\n this.options.forEach(function (_ref4) {\r\n var value = _ref4.value, label = _ref4.label;\r\n if (disabledOptionsValueMapping[value]) {\r\n var _result$push;\r\n result.push((_result$push = {}, _defineProperty(_result$push, valueKey, value), _defineProperty(_result$push, labelKey, label), _result$push));\r\n }\r\n });\r\n return result;\r\n }\r\n }, {\r\n key: \"getVisibleOptionGroupsMapping\",\r\n value: function getVisibleOptionGroupsMapping(searchValue) {\r\n var options = this.options;\r\n var result = {};\r\n var isOptionVisible = this.isOptionVisible.bind(this);\r\n options = this.structureOptionGroup(options);\r\n options.forEach(function (d) {\r\n result[d.index] = d.options.some(function (e) {\r\n return isOptionVisible({\r\n data: e,\r\n searchValue: searchValue\r\n }).isVisible;\r\n });\r\n });\r\n return result;\r\n }\r\n }, {\r\n key: \"getOptionsCount\",\r\n value: function getOptionsCount(count) {\r\n var result;\r\n if (this.showAsPopup) {\r\n var availableHeight = window.innerHeight * 80 / 100 - dropboxCloseButtonFullHeight;\r\n if (this.hasSearchContainer) {\r\n availableHeight -= searchHeight;\r\n }\r\n result = Math.floor(availableHeight / this.optionHeight);\r\n }\r\n else {\r\n result = parseInt(count);\r\n }\r\n return result;\r\n }\r\n }, {\r\n key: \"getOptionsHeight\",\r\n value: function getOptionsHeight() {\r\n return \"\".concat(this.optionsCount * this.optionHeight, \"px\");\r\n }\r\n /** getting next/prev valid option element */\r\n }, {\r\n key: \"getSibling\",\r\n value: function getSibling($ele, direction) {\r\n var propName = direction === 'next' ? 'nextElementSibling' : 'previousElementSibling';\r\n var $sibling = $ele;\r\n do {\r\n if ($sibling) {\r\n $sibling = $sibling[propName];\r\n }\r\n } while (DomUtils.hasClass($sibling, 'disabled') || DomUtils.hasClass($sibling, 'group-title'));\r\n return $sibling;\r\n }\r\n }, {\r\n key: \"getUniqueId\",\r\n value: function getUniqueId() {\r\n var uniqueId = Utils.getRandomInt(10000);\r\n var isAlreadyUsed = document.querySelector(\"#vscomp-ele-wrapper-\".concat(uniqueId));\r\n if (isAlreadyUsed) {\r\n return this.getUniqueId();\r\n }\r\n return uniqueId;\r\n }\r\n /** get methods - end */\r\n }, {\r\n key: \"initDropboxPopover\",\r\n value: function initDropboxPopover() {\r\n var data = {\r\n ele: this.$ele,\r\n target: this.$dropboxContainer,\r\n position: this.position,\r\n zIndex: this.zIndex,\r\n margin: 4,\r\n transitionDistance: 30,\r\n hideArrowIcon: true,\r\n disableManualAction: true,\r\n disableUpdatePosition: !this.hasDropboxWrapper,\r\n updatePositionThrottle: this.updatePositionThrottle,\r\n afterShow: this.afterShowPopper.bind(this),\r\n afterHide: this.afterHidePopper.bind(this)\r\n };\r\n this.dropboxPopover = new PopoverComponent(data);\r\n }\r\n }, {\r\n key: \"openDropbox\",\r\n value: function openDropbox(isSilent) {\r\n this.isSilentOpen = isSilent;\r\n if (isSilent) {\r\n DomUtils.setStyle(this.$dropboxContainer, 'display', 'inline-flex');\r\n }\r\n else {\r\n DomUtils.dispatchEvent(this.$ele, 'beforeOpen');\r\n DomUtils.setAria(this.$wrapper, 'expanded', true);\r\n }\r\n this.setDropboxWrapperWidth();\r\n DomUtils.removeClass(this.$allWrappers, 'closed');\r\n DomUtils.changeTabIndex(this.$allWrappers, 0);\r\n if (this.dropboxPopover && !isSilent) {\r\n this.dropboxPopover.show();\r\n }\r\n else {\r\n this.afterShowPopper();\r\n }\r\n }\r\n }, {\r\n key: \"afterShowPopper\",\r\n value: function afterShowPopper() {\r\n var isSilent = this.isSilentOpen;\r\n this.isSilentOpen = false;\r\n if (!isSilent) {\r\n this.moveSelectedOptionsFirst();\r\n this.setScrollTop();\r\n DomUtils.addClass(this.$allWrappers, 'focused');\r\n if (this.showAsPopup) {\r\n DomUtils.addClass(this.$body, 'vscomp-popup-active');\r\n this.isPopupActive = true;\r\n }\r\n else {\r\n this.focusElementOnOpen();\r\n }\r\n DomUtils.dispatchEvent(this.$ele, 'afterOpen');\r\n }\r\n }\r\n }, {\r\n key: \"closeDropbox\",\r\n value: function closeDropbox(isSilent) {\r\n this.isSilentClose = isSilent;\r\n if (this.keepAlwaysOpen) {\r\n this.removeOptionFocus();\r\n return;\r\n }\r\n if (isSilent) {\r\n DomUtils.setStyle(this.$dropboxContainer, 'display', '');\r\n }\r\n else {\r\n DomUtils.dispatchEvent(this.$ele, 'beforeClose');\r\n DomUtils.setAria(this.$wrapper, 'expanded', false);\r\n DomUtils.setAria(this.$wrapper, 'activedescendant', '');\r\n }\r\n if (this.dropboxPopover && !isSilent) {\r\n this.dropboxPopover.hide();\r\n }\r\n else {\r\n this.afterHidePopper();\r\n }\r\n }\r\n }, {\r\n key: \"afterHidePopper\",\r\n value: function afterHidePopper() {\r\n var isSilent = this.isSilentClose;\r\n this.isSilentClose = false;\r\n DomUtils.removeClass(this.$allWrappers, 'focused');\r\n this.removeOptionFocus();\r\n if (!isSilent && this.isPopupActive) {\r\n DomUtils.removeClass(this.$body, 'vscomp-popup-active');\r\n this.isPopupActive = false;\r\n }\r\n DomUtils.addClass(this.$allWrappers, 'closed');\r\n if (!isSilent) {\r\n DomUtils.dispatchEvent(this.$ele, 'afterClose');\r\n // Only focus there are no pre-selected options or when selecting new options\r\n if (this.initialSelectedValue && this.initialSelectedValue.length === 0 || this.selectedValues.length > 0) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"moveSelectedOptionsFirst\",\r\n value: function moveSelectedOptionsFirst() {\r\n if (!this.showSelectedOptionsFirst) {\r\n return;\r\n }\r\n this.setSortedOptions();\r\n if (!this.$optionsContainer.scrollTop || !this.selectedValues.length) {\r\n this.setVisibleOptions();\r\n }\r\n else {\r\n this.scrollToTop();\r\n }\r\n }\r\n }, {\r\n key: \"toggleDropbox\",\r\n value: function toggleDropbox() {\r\n if (this.isOpened()) {\r\n this.closeDropbox();\r\n }\r\n else {\r\n this.openDropbox();\r\n }\r\n }\r\n }, {\r\n key: \"updatePosition\",\r\n value: function updatePosition() {\r\n if (!this.dropboxPopover || !this.isOpened()) {\r\n return;\r\n }\r\n this.$ele.updatePosition();\r\n }\r\n }, {\r\n key: \"isOpened\",\r\n value: function isOpened() {\r\n return !DomUtils.hasClass(this.$wrapper, 'closed');\r\n }\r\n }, {\r\n key: \"focusSearchInput\",\r\n value: function focusSearchInput() {\r\n var $ele = this.$searchInput;\r\n if ($ele) {\r\n $ele.focus();\r\n }\r\n }\r\n }, {\r\n key: \"focusElementOnOpen\",\r\n value: function focusElementOnOpen() {\r\n var $ele = this.$searchInput;\r\n var hasNoOptions = !this.options.length && !this.hasServerSearch;\r\n if ($ele) {\r\n if (hasNoOptions && !this.allowNewOption) {\r\n DomUtils.setAttr($ele, 'disabled', '');\r\n this.$noOptions.focus();\r\n }\r\n else {\r\n $ele.removeAttribute('disabled');\r\n $ele.focus();\r\n }\r\n }\r\n else {\r\n var $focusableEle = this.$dropbox.querySelector('[tabindex=\"0\"]');\r\n var optIndex = DomUtils.getData($focusableEle, 'index');\r\n if (optIndex !== undefined) {\r\n this.focusOption({\r\n direction: 'next'\r\n });\r\n }\r\n else if ($focusableEle) {\r\n $focusableEle.focus();\r\n }\r\n else {\r\n this.focusFirstVisibleOption();\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"focusFirstVisibleOption\",\r\n value: function focusFirstVisibleOption() {\r\n var $focusableEle = this.$optionsContainer.querySelector(\"[data-index='\".concat(this.getFirstVisibleOptionIndex(), \"']\"));\r\n if ($focusableEle) {\r\n if (DomUtils.hasClass($focusableEle, 'group-title')) {\r\n $focusableEle = this.getSibling($focusableEle, 'next');\r\n }\r\n DomUtils.setAttr($focusableEle, 'tabindex', '0');\r\n this.$optionsContainer.scrollTop = this.optionHeight * this.getFirstVisibleOptionIndex();\r\n this.focusOption({\r\n focusFirst: true\r\n });\r\n $focusableEle.focus();\r\n }\r\n else {\r\n $focusableEle = this.$dropbox.querySelector('[tabindex=\"0\"]');\r\n if ($focusableEle) {\r\n $focusableEle.focus();\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"focusOption\",\r\n value: function focusOption() {\r\n var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, direction = _ref5.direction, $option = _ref5.$option, focusFirst = _ref5.focusFirst;\r\n var $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused');\r\n var $newFocusedEle;\r\n if ($option) {\r\n $newFocusedEle = $option;\r\n }\r\n else if (!$focusedEle || focusFirst) {\r\n /* if no element on focus choose first visible one */\r\n var firstVisibleOptionIndex = this.getFirstVisibleOptionIndex();\r\n $newFocusedEle = this.$dropboxContainer.querySelector(\".vscomp-option[data-visible-index=\\\"\".concat(firstVisibleOptionIndex, \"\\\"]\"));\r\n if (DomUtils.hasClass($newFocusedEle, 'disabled') || DomUtils.hasClass($newFocusedEle, 'group-title')) {\r\n $newFocusedEle = this.getSibling($newFocusedEle, 'next');\r\n }\r\n }\r\n else {\r\n $newFocusedEle = this.getSibling($focusedEle, direction);\r\n }\r\n if ($newFocusedEle && $newFocusedEle !== $focusedEle) {\r\n if ($focusedEle) {\r\n this.toggleOptionFocusedState($focusedEle, false);\r\n }\r\n this.toggleOptionFocusedState($newFocusedEle, true);\r\n this.toggleFocusedProp(DomUtils.getData($newFocusedEle, 'index'), true);\r\n this.moveFocusedOptionToView($newFocusedEle);\r\n }\r\n }\r\n }, {\r\n key: \"moveFocusedOptionToView\",\r\n value: function moveFocusedOptionToView($ele) {\r\n var $focusedEle = $ele || this.$dropboxContainer.querySelector('.vscomp-option.focused');\r\n if (!$focusedEle) {\r\n return;\r\n }\r\n var newScrollTop;\r\n var containerRect = this.$optionsContainer.getBoundingClientRect();\r\n var optionRect = $focusedEle.getBoundingClientRect();\r\n var containerTop = containerRect.top;\r\n var containerBottom = containerRect.bottom;\r\n var containerHeight = containerRect.height;\r\n var optionTop = optionRect.top;\r\n var optionBottom = optionRect.bottom;\r\n var optionHeight = optionRect.height;\r\n var optionOffsetTop = $focusedEle.offsetTop;\r\n var optionsTop = DomUtils.getData(this.$options, 'top', 'number');\r\n /* if option hidden on top */\r\n if (containerTop > optionTop) {\r\n newScrollTop = optionOffsetTop + optionsTop;\r\n }\r\n else if (containerBottom < optionBottom) {\r\n /* if option hidden on bottom */\r\n newScrollTop = optionOffsetTop - containerHeight + optionHeight + optionsTop;\r\n }\r\n if (newScrollTop !== undefined) {\r\n this.$optionsContainer.scrollTop = newScrollTop;\r\n }\r\n }\r\n }, {\r\n key: \"removeOptionFocus\",\r\n value: function removeOptionFocus() {\r\n var $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused');\r\n if (!$focusedEle) {\r\n return;\r\n }\r\n this.toggleOptionFocusedState($focusedEle, false);\r\n this.toggleFocusedProp(null);\r\n }\r\n }, {\r\n key: \"selectOption\",\r\n value: function selectOption($ele) {\r\n var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, event = _ref6.event;\r\n if (!$ele) {\r\n return;\r\n }\r\n var isAdding = !DomUtils.hasClass($ele, 'selected');\r\n if (isAdding) {\r\n if (this.multiple && this.isMaxValuesSelected) {\r\n return;\r\n }\r\n }\r\n else if (!this.multiple) {\r\n /** on selecting same value in single select */\r\n this.closeDropbox();\r\n return;\r\n }\r\n var selectedValues = this.selectedValues;\r\n var selectedValue = DomUtils.getData($ele, 'value');\r\n var selectedIndex = DomUtils.getData($ele, 'index', 'number');\r\n var isNewOption = DomUtils.hasClass($ele, 'current-new');\r\n var shouldSelectRange = false;\r\n var lastSelectedOptionIndex = this.lastSelectedOptionIndex;\r\n this.lastSelectedOptionIndex = null;\r\n this.toggleSelectedProp(selectedIndex, isAdding);\r\n if (isAdding) {\r\n if (this.multiple) {\r\n selectedValues.push(selectedValue);\r\n this.toggleAllOptionsClass();\r\n this.toggleGroupOptionsParent($ele);\r\n if (event && event.shiftKey) {\r\n shouldSelectRange = true;\r\n }\r\n }\r\n else {\r\n if (selectedValues.length) {\r\n this.toggleSelectedProp(this.getOptionIndex(selectedValues[0]), false);\r\n }\r\n selectedValues = [selectedValue];\r\n var $prevSelectedOption = this.$dropboxContainer.querySelector('.vscomp-option.selected');\r\n if ($prevSelectedOption) {\r\n this.toggleOptionSelectedState($prevSelectedOption, false);\r\n }\r\n this.closeDropbox();\r\n if (!isNewOption) {\r\n this.setSearchValue('');\r\n }\r\n }\r\n this.lastSelectedOptionIndex = selectedIndex;\r\n this.toggleOptionSelectedState($ele);\r\n }\r\n else if (this.multiple) {\r\n this.toggleOptionSelectedState($ele);\r\n Utils.removeItemFromArray(selectedValues, selectedValue);\r\n this.toggleAllOptionsClass(false);\r\n this.toggleGroupOptionsParent($ele, false);\r\n }\r\n if (isNewOption) {\r\n this.beforeSelectNewValue();\r\n }\r\n this.setValue(selectedValues);\r\n if (shouldSelectRange) {\r\n this.selectRangeOptions(lastSelectedOptionIndex, selectedIndex);\r\n }\r\n }\r\n }, {\r\n key: \"selectFocusedOption\",\r\n value: function selectFocusedOption() {\r\n this.selectOption(this.$dropboxContainer.querySelector('.vscomp-option.focused'));\r\n }\r\n }, {\r\n key: \"selectRangeOptions\",\r\n value: function selectRangeOptions(lastSelectedOptionIndex, selectedIndex) {\r\n var _this11 = this;\r\n if (typeof lastSelectedOptionIndex !== 'number' || this.maxValues) {\r\n return;\r\n }\r\n var selectedValues = this.selectedValues, hasOptionGroup = this.hasOptionGroup;\r\n var groupIndexes = {};\r\n var startIndex;\r\n var endIndex;\r\n if (lastSelectedOptionIndex < selectedIndex) {\r\n startIndex = lastSelectedOptionIndex;\r\n endIndex = selectedIndex;\r\n }\r\n else {\r\n startIndex = selectedIndex;\r\n endIndex = lastSelectedOptionIndex;\r\n }\r\n this.options.forEach(function (d) {\r\n if (d.isDisabled || d.isGroupTitle || !d.isVisible || d.isSelected) {\r\n return;\r\n }\r\n var index = d.index;\r\n if (index > startIndex && index < endIndex) {\r\n if (hasOptionGroup) {\r\n var groupIndex = d.groupIndex;\r\n if (typeof groupIndex === 'number') {\r\n groupIndexes[groupIndex] = true;\r\n }\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n d.isSelected = true;\r\n selectedValues.push(d.value);\r\n }\r\n });\r\n this.toggleAllOptionsClass();\r\n this.setValue(selectedValues);\r\n groupIndexes = Object.keys(groupIndexes);\r\n if (groupIndexes.length) {\r\n var toggleGroupTitleProp = this.toggleGroupTitleProp.bind(this);\r\n groupIndexes.forEach(function (i) {\r\n toggleGroupTitleProp(parseInt(i));\r\n });\r\n }\r\n /** using setTimeout to fix the issue of dropbox getting closed on select */\r\n setTimeout(function () {\r\n _this11.renderOptions();\r\n }, 0);\r\n }\r\n }, {\r\n key: \"toggleAllOptions\",\r\n value: function toggleAllOptions(selectAll) {\r\n if (!this.multiple || this.disableSelectAll) {\r\n return;\r\n }\r\n var selectingAll = typeof isSelected === 'boolean' ? selectAll : !DomUtils.hasClass(this.$toggleAllCheckbox, 'checked');\r\n var selectedValues = [];\r\n var selectAllOnlyVisible = this.selectAllOnlyVisible;\r\n this.options.forEach(function (d) {\r\n var option = d;\r\n if (option.isDisabled || option.isCurrentNew) {\r\n return;\r\n }\r\n var isVisible = option.isVisible, isSelected = option.isSelected;\r\n /** unselected items are */\r\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)) {\r\n option.isSelected = false;\r\n }\r\n else {\r\n option.isSelected = true;\r\n if (!option.isGroupTitle) {\r\n selectedValues.push(option.value);\r\n }\r\n }\r\n });\r\n this.toggleAllOptionsClass(selectingAll);\r\n this.setValue(selectedValues);\r\n this.renderOptions();\r\n }\r\n }, {\r\n key: \"toggleAllOptionsClass\",\r\n value: function toggleAllOptionsClass(isAllSelected) {\r\n if (!this.multiple) {\r\n return;\r\n }\r\n var valuePassed = typeof isAllSelected === 'boolean';\r\n var isAllVisibleSelected = false;\r\n if (!valuePassed) {\r\n // eslint-disable-next-line no-param-reassign\r\n isAllSelected = this.isAllOptionsSelected();\r\n }\r\n /** When all options not selected, checking if all visible options selected\r\n * Also, in a search mode, validate that we still have visible items\r\n */\r\n if (!isAllSelected && this.selectAllOnlyVisible && this.searchValue !== '' && (this.visibleOptionsCount > 0 || this.searchValue === '')) {\r\n isAllVisibleSelected = this.isAllOptionsSelected(true);\r\n }\r\n DomUtils.toggleClass(this.$toggleAllCheckbox, 'checked', isAllSelected || isAllVisibleSelected);\r\n this.isAllSelected = isAllSelected;\r\n }\r\n }, {\r\n key: \"isAllOptionsSelected\",\r\n value: function isAllOptionsSelected(visibleOnly) {\r\n var isAllSelected = false;\r\n if (this.options.length && this.selectedValues.length) {\r\n isAllSelected = !this.options.some(\r\n /**\r\n * stop looping if any option is not selected\r\n * for selectAllOnlyVisible case hidden option need not to be selected\r\n */\r\n function (d) {\r\n return !d.isSelected && !d.isDisabled && !d.isGroupTitle && (!visibleOnly || d.isVisible);\r\n });\r\n }\r\n return isAllSelected;\r\n }\r\n }, {\r\n key: \"isAllGroupOptionsSelected\",\r\n value: function isAllGroupOptionsSelected(groupIndex) {\r\n var isAllSelected = false;\r\n if (this.options.length) {\r\n isAllSelected = !this.options.some(function (d) {\r\n return !d.isSelected && !d.isDisabled && !d.isGroupTitle && d.groupIndex === groupIndex;\r\n });\r\n }\r\n return isAllSelected;\r\n }\r\n }, {\r\n key: \"toggleGroupOptionsParent\",\r\n value: function toggleGroupOptionsParent($option, isSelected) {\r\n if (!this.hasOptionGroup || this.disableOptionGroupCheckbox || !$option) {\r\n return;\r\n }\r\n var groupIndex = DomUtils.getData($option, 'groupIndex');\r\n if (groupIndex !== undefined) {\r\n groupIndex = parseInt(groupIndex);\r\n }\r\n var $group = this.$options.querySelector(\".vscomp-option[data-index=\\\"\".concat(groupIndex, \"\\\"]\"));\r\n var isAllSelected = typeof isSelected === 'boolean' ? isSelected : this.isAllGroupOptionsSelected(groupIndex);\r\n this.toggleGroupTitleCheckbox($group, isAllSelected);\r\n this.toggleGroupTitleProp(groupIndex, isAllSelected);\r\n }\r\n }, {\r\n key: \"toggleGroupTitleProp\",\r\n value: function toggleGroupTitleProp(groupIndex, isSelected) {\r\n var isAllSelected = typeof isSelected === 'boolean' ? isSelected : this.isAllGroupOptionsSelected(groupIndex);\r\n this.toggleSelectedProp(groupIndex, isAllSelected);\r\n }\r\n }, {\r\n key: \"toggleGroupOptions\",\r\n value: function toggleGroupOptions($ele, isSelected) {\r\n var _this12 = this;\r\n if (!this.hasOptionGroup || this.disableOptionGroupCheckbox || !$ele) {\r\n return;\r\n }\r\n var groupIndex = DomUtils.getData($ele, 'index', 'number');\r\n var selectedValues = this.selectedValues, selectAllOnlyVisible = this.selectAllOnlyVisible;\r\n var valuesMapping = {};\r\n var removeItemFromArray = Utils.removeItemFromArray;\r\n selectedValues.forEach(function (d) {\r\n valuesMapping[d] = true;\r\n });\r\n this.options.forEach(function (d) {\r\n if (d.isDisabled || d.groupIndex !== groupIndex) {\r\n return;\r\n }\r\n var value = d.value;\r\n if (!isSelected || selectAllOnlyVisible && !d.isVisible) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isSelected = false;\r\n if (valuesMapping[value]) {\r\n removeItemFromArray(selectedValues, value);\r\n }\r\n }\r\n else {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isSelected = true;\r\n if (!valuesMapping[value]) {\r\n selectedValues.push(value);\r\n }\r\n }\r\n });\r\n this.toggleAllOptionsClass(isSelected ? null : false);\r\n this.setValue(selectedValues);\r\n /** using setTimeout to fix the issue of dropbox getting closed on select */\r\n setTimeout(function () {\r\n _this12.renderOptions();\r\n }, 0);\r\n }\r\n }, {\r\n key: \"toggleGroupTitleCheckbox\",\r\n value: function toggleGroupTitleCheckbox($ele, isSelected) {\r\n if (!$ele) {\r\n return;\r\n }\r\n var selectedIndex = DomUtils.getData($ele, 'index', 'number');\r\n this.toggleSelectedProp(selectedIndex, isSelected);\r\n this.toggleOptionSelectedState($ele, isSelected);\r\n }\r\n }, {\r\n key: \"toggleFocusedProp\",\r\n value: function toggleFocusedProp(index) {\r\n var isFocused = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n if (this.focusedOptionIndex) {\r\n this.setOptionProp(this.focusedOptionIndex, 'isFocused', false);\r\n }\r\n this.setOptionProp(index, 'isFocused', isFocused);\r\n this.focusedOptionIndex = index;\r\n }\r\n }, {\r\n key: \"toggleSelectedProp\",\r\n value: function toggleSelectedProp(index) {\r\n var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n this.setOptionProp(index, 'isSelected', isSelected);\r\n }\r\n }, {\r\n key: \"scrollToTop\",\r\n value: function scrollToTop() {\r\n var isClosed = !this.isOpened();\r\n if (isClosed) {\r\n this.openDropbox(true);\r\n }\r\n var scrollTop = this.$optionsContainer.scrollTop;\r\n if (scrollTop > 0) {\r\n this.$optionsContainer.scrollTop = 0;\r\n }\r\n if (isClosed) {\r\n this.closeDropbox(true);\r\n }\r\n }\r\n }, {\r\n key: \"reset\",\r\n value: function reset() {\r\n var formReset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\r\n var disableChangeEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n this.options.forEach(function (d) {\r\n // eslint-disable-next-line no-param-reassign\r\n d.isSelected = false;\r\n });\r\n this.beforeValueSet(true);\r\n this.setValue(null, {\r\n disableEvent: disableChangeEvent,\r\n disableValidation: formReset\r\n });\r\n this.afterValueSet();\r\n if (formReset) {\r\n DomUtils.removeClass(this.$allWrappers, 'has-error');\r\n }\r\n DomUtils.dispatchEvent(this.$ele, 'reset');\r\n }\r\n }, {\r\n key: \"addOption\",\r\n value: function addOption(data, rerender) {\r\n if (!data) {\r\n return;\r\n }\r\n this.lastOptionIndex += 1;\r\n var newOption = this.getOptionObj(_objectSpread(_objectSpread({}, data), {}, {\r\n index: this.lastOptionIndex\r\n }));\r\n this.options.push(newOption);\r\n this.sortedOptions.push(newOption);\r\n if (rerender) {\r\n this.visibleOptionsCount += 1;\r\n this.afterSetOptions();\r\n }\r\n }\r\n }, {\r\n key: \"removeOption\",\r\n value: function removeOption(index) {\r\n if (!index && index !== 0) {\r\n return;\r\n }\r\n this.options.splice(index, 1);\r\n this.lastOptionIndex -= 1;\r\n }\r\n }, {\r\n key: \"removeNewOption\",\r\n value: function removeNewOption() {\r\n var newOption = this.getNewOption();\r\n if (newOption) {\r\n this.removeOption(newOption.index);\r\n }\r\n }\r\n }, {\r\n key: \"sortOptions\",\r\n value: function sortOptions(options) {\r\n return options.sort(function (a, b) {\r\n var aIsSelected = a.isSelected || a.isAnySelected;\r\n var bIsSelected = b.isSelected || b.isAnySelected;\r\n if (!aIsSelected && !bIsSelected) {\r\n return 0;\r\n }\r\n if (aIsSelected && (!bIsSelected || a.index < b.index)) {\r\n return -1;\r\n }\r\n return 1;\r\n });\r\n }\r\n }, {\r\n key: \"sortOptionsGroup\",\r\n value: function sortOptionsGroup(options) {\r\n var sortOptions = this.sortOptions.bind(this);\r\n var structuredOptions = this.structureOptionGroup(options);\r\n structuredOptions.forEach(function (d) {\r\n var childOptions = d.options;\r\n // eslint-disable-next-line no-param-reassign\r\n d.isAnySelected = childOptions.some(function (e) {\r\n return e.isSelected;\r\n });\r\n if (d.isAnySelected) {\r\n sortOptions(childOptions);\r\n }\r\n });\r\n sortOptions(structuredOptions);\r\n return this.destructureOptionGroup(structuredOptions);\r\n }\r\n }, {\r\n key: \"isOptionVisible\",\r\n value: function isOptionVisible(_ref7) {\r\n var data = _ref7.data, searchValue = _ref7.searchValue, hasExactOption = _ref7.hasExactOption, visibleOptionGroupsMapping = _ref7.visibleOptionGroupsMapping, searchGroup = _ref7.searchGroup, searchByStartsWith = _ref7.searchByStartsWith;\r\n var value = data.value.toLowerCase();\r\n var label = this.searchNormalize ? data.labelNormalized : data.label.toLowerCase();\r\n var description = data.description, alias = data.alias;\r\n var isVisible = searchByStartsWith ? label.startsWith(searchValue) : label.includes(searchValue);\r\n if (data.isGroupTitle && (!searchGroup || !isVisible)) {\r\n isVisible = visibleOptionGroupsMapping[data.index];\r\n }\r\n if (!searchByStartsWith && alias && !isVisible) {\r\n isVisible = alias.includes(searchValue);\r\n }\r\n if (!searchByStartsWith && description && !isVisible) {\r\n isVisible = description.toLowerCase().includes(searchValue);\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n data.isVisible = isVisible;\r\n if (!hasExactOption) {\r\n // eslint-disable-next-line no-param-reassign\r\n hasExactOption = label === searchValue || value === searchValue;\r\n }\r\n return {\r\n isVisible: isVisible,\r\n hasExactOption: hasExactOption\r\n };\r\n }\r\n }, {\r\n key: \"structureOptionGroup\",\r\n value: function structureOptionGroup(options) {\r\n var result = [];\r\n var childOptions = {};\r\n /** getting all group title */\r\n options.forEach(function (d) {\r\n if (d.isGroupTitle) {\r\n var childArray = [];\r\n // eslint-disable-next-line no-param-reassign\r\n d.options = childArray;\r\n childOptions[d.index] = childArray;\r\n result.push(d);\r\n }\r\n });\r\n /** getting all group options */\r\n options.forEach(function (d) {\r\n if (d.isGroupOption) {\r\n childOptions[d.groupIndex].push(d);\r\n }\r\n });\r\n return result;\r\n }\r\n }, {\r\n key: \"destructureOptionGroup\",\r\n value: function destructureOptionGroup(options) {\r\n var result = [];\r\n options.forEach(function (d) {\r\n result.push(d);\r\n result = result.concat(d.options);\r\n });\r\n return result;\r\n }\r\n }, {\r\n key: \"serverSearch\",\r\n value: function serverSearch() {\r\n DomUtils.removeClass(this.$allWrappers, 'has-no-search-results');\r\n DomUtils.addClass(this.$allWrappers, 'server-searching');\r\n this.setSelectedOptions();\r\n this.onServerSearch(this.searchValue, this);\r\n }\r\n }, {\r\n key: \"removeValue\",\r\n value: function removeValue($ele) {\r\n var selectedValues = this.selectedValues;\r\n var selectedValue = DomUtils.getData($ele, 'value');\r\n Utils.removeItemFromArray(selectedValues, selectedValue);\r\n this.setValueMethod(selectedValues);\r\n }\r\n }, {\r\n key: \"focus\",\r\n value: function focus() {\r\n this.$wrapper.focus();\r\n }\r\n }, {\r\n key: \"enable\",\r\n value: function enable() {\r\n this.$ele.disabled = false;\r\n this.$ele.removeAttribute('disabled');\r\n this.$hiddenInput.removeAttribute('disabled');\r\n DomUtils.setAria(this.$wrapper, 'disabled', false);\r\n DomUtils.changeTabIndex(this.$wrapper, 0);\r\n }\r\n }, {\r\n key: \"disable\",\r\n value: function disable() {\r\n this.$ele.disabled = true;\r\n this.$ele.setAttribute('disabled', '');\r\n this.$hiddenInput.setAttribute('disabled', '');\r\n DomUtils.setAria(this.$wrapper, 'disabled', true);\r\n DomUtils.changeTabIndex(this.$wrapper, -1);\r\n this.$wrapper.blur();\r\n }\r\n }, {\r\n key: \"validate\",\r\n value: function validate() {\r\n if (this.disableValidation) {\r\n return true;\r\n }\r\n var hasError = false;\r\n var selectedValues = this.selectedValues, minValues = this.minValues;\r\n if (this.required && (Utils.isEmpty(selectedValues) || ( /** required minium options not selected */this.multiple && minValues && selectedValues.length < minValues))) {\r\n hasError = true;\r\n }\r\n DomUtils.toggleClass(this.$allWrappers, 'has-error', hasError);\r\n return !hasError;\r\n }\r\n }, {\r\n key: \"destroy\",\r\n value: function destroy() {\r\n var $ele = this.$ele;\r\n $ele.virtualSelect = undefined;\r\n $ele.value = undefined;\r\n $ele.innerHTML = '';\r\n if (this.hasDropboxWrapper) {\r\n this.$dropboxWrapper.remove();\r\n this.removeEvents();\r\n }\r\n if (this.dropboxPopover) {\r\n this.dropboxPopover.destroy();\r\n }\r\n DomUtils.removeClass($ele, 'vscomp-ele');\r\n }\r\n }, {\r\n key: \"createSecureTextElements\",\r\n value: function createSecureTextElements() {\r\n this.$secureDiv = document.createElement('div');\r\n this.$secureText = document.createTextNode('');\r\n this.$secureDiv.appendChild(this.$secureText);\r\n }\r\n }, {\r\n key: \"secureText\",\r\n value: function secureText(text) {\r\n if (!text || !this.enableSecureText) {\r\n return text;\r\n }\r\n this.$secureText.nodeValue = text;\r\n return this.$secureDiv.innerHTML;\r\n }\r\n }, {\r\n key: \"toggleRequired\",\r\n value: function toggleRequired(isRequired) {\r\n this.required = Utils.convertToBoolean(isRequired);\r\n this.$ele.required = this.required;\r\n }\r\n }, {\r\n key: \"toggleOptionSelectedState\",\r\n value: function toggleOptionSelectedState($ele, value) {\r\n var isSelected = value;\r\n if (typeof isSelected === 'undefined') {\r\n isSelected = !DomUtils.hasClass($ele, 'selected');\r\n }\r\n DomUtils.toggleClass($ele, 'selected', isSelected);\r\n DomUtils.setAria($ele, 'selected', isSelected);\r\n }\r\n }, {\r\n key: \"toggleOptionFocusedState\",\r\n value: function toggleOptionFocusedState($ele, isFocused) {\r\n if (!$ele) {\r\n return;\r\n }\r\n DomUtils.toggleClass($ele, 'focused', isFocused);\r\n DomUtils.setAttr($ele, 'tabindex', isFocused ? '0' : '-1');\r\n if (document.activeElement !== this.$searchInput) {\r\n $ele.focus();\r\n }\r\n if (isFocused) {\r\n DomUtils.setAria(this.$wrapper, 'activedescendant', $ele.id);\r\n }\r\n }\r\n /** static methods - start */\r\n }], [{\r\n key: \"init\",\r\n value: function init(options) {\r\n var $eleArray = options.ele;\r\n if (!$eleArray) {\r\n return undefined;\r\n }\r\n var singleEle = false;\r\n if (typeof $eleArray === 'string') {\r\n $eleArray = document.querySelectorAll($eleArray);\r\n var eleLength = $eleArray.length;\r\n if (eleLength === 0) {\r\n return undefined;\r\n }\r\n if (eleLength === 1) {\r\n singleEle = true;\r\n }\r\n }\r\n if ($eleArray.length === undefined || $eleArray.forEach === undefined) {\r\n $eleArray = [$eleArray];\r\n singleEle = true;\r\n }\r\n var instances = [];\r\n $eleArray.forEach(function ($ele) {\r\n /** skipping initialization on calling init method multiple times */\r\n if ($ele.virtualSelect) {\r\n instances.push($ele.virtualSelect);\r\n return;\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n options.ele = $ele;\r\n if ($ele.tagName === 'SELECT') {\r\n VirtualSelect.setPropsFromSelect(options);\r\n }\r\n instances.push(new VirtualSelect(options));\r\n });\r\n return singleEle ? instances[0] : instances;\r\n }\r\n }, {\r\n key: \"getAttrProps\",\r\n value: function getAttrProps() {\r\n var convertPropToDataAttr = DomUtils.convertPropToDataAttr;\r\n var result = {};\r\n nativeProps.forEach(function (d) {\r\n result[d] = d;\r\n });\r\n dataProps.forEach(function (d) {\r\n result[convertPropToDataAttr(d)] = d;\r\n });\r\n return result;\r\n }\r\n }, {\r\n key: \"setPropsFromSelect\",\r\n value: function setPropsFromSelect(props) {\r\n var $ele = props.ele;\r\n var disabledOptions = [];\r\n var selectedValue = [];\r\n var getNativeOptions = function getNativeOptions($container) {\r\n var options = [];\r\n var $options = Array.from($container.children);\r\n $options.forEach(function ($option) {\r\n var value = $option.value;\r\n var option = {\r\n value: value\r\n };\r\n if ($option.tagName === 'OPTGROUP') {\r\n option.label = $option.getAttribute('label');\r\n option.options = getNativeOptions($option);\r\n }\r\n else {\r\n option.label = $option.innerHTML;\r\n }\r\n options.push(option);\r\n if ($option.disabled) {\r\n disabledOptions.push(value);\r\n }\r\n if ($option.selected) {\r\n selectedValue.push(value);\r\n }\r\n });\r\n return options;\r\n };\r\n var optionsList = getNativeOptions($ele);\r\n /** creating div element to initiate plugin and removing native element */\r\n var $newEle = document.createElement('div');\r\n DomUtils.setAttrFromEle($ele, $newEle, Object.keys(attrPropsMapping), valueLessProps);\r\n $ele.parentNode.insertBefore($newEle, $ele);\r\n $ele.remove();\r\n // eslint-disable-next-line no-param-reassign\r\n props.ele = $newEle;\r\n // eslint-disable-next-line no-param-reassign\r\n props.options = optionsList;\r\n // eslint-disable-next-line no-param-reassign\r\n props.disabledOptions = disabledOptions;\r\n // eslint-disable-next-line no-param-reassign\r\n props.selectedValue = selectedValue;\r\n }\r\n }, {\r\n key: \"onFormReset\",\r\n value: function onFormReset(e) {\r\n var $form = e.target.closest('form');\r\n if (!$form) {\r\n return;\r\n }\r\n $form.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) {\r\n $ele.parentElement.virtualSelect.reset(true);\r\n });\r\n }\r\n }, {\r\n key: \"onFormSubmit\",\r\n value: function onFormSubmit(e) {\r\n if (!VirtualSelect.validate(e.target.closest('form'))) {\r\n e.preventDefault();\r\n }\r\n }\r\n }, {\r\n key: \"validate\",\r\n value: function validate($container) {\r\n if (!$container) {\r\n return true;\r\n }\r\n var hasError = false;\r\n $container.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) {\r\n var result = $ele.parentElement.virtualSelect.validate();\r\n if (!hasError && !result) {\r\n hasError = true;\r\n }\r\n });\r\n return !hasError;\r\n }\r\n }, {\r\n key: \"reset\",\r\n value: function reset() {\r\n var formReset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\r\n var disableChangeEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n this.virtualSelect.reset(formReset, disableChangeEvent);\r\n }\r\n }, {\r\n key: \"setValueMethod\",\r\n value: function setValueMethod() {\r\n var _this$virtualSelect;\r\n (_this$virtualSelect = this.virtualSelect).setValueMethod.apply(_this$virtualSelect, arguments);\r\n }\r\n }, {\r\n key: \"setOptionsMethod\",\r\n value: function setOptionsMethod() {\r\n var _this$virtualSelect2;\r\n (_this$virtualSelect2 = this.virtualSelect).setOptionsMethod.apply(_this$virtualSelect2, arguments);\r\n }\r\n }, {\r\n key: \"setDisabledOptionsMethod\",\r\n value: function setDisabledOptionsMethod() {\r\n var _this$virtualSelect3;\r\n (_this$virtualSelect3 = this.virtualSelect).setDisabledOptionsMethod.apply(_this$virtualSelect3, arguments);\r\n }\r\n }, {\r\n key: \"setEnabledOptionsMethod\",\r\n value: function setEnabledOptionsMethod() {\r\n var _this$virtualSelect4;\r\n (_this$virtualSelect4 = this.virtualSelect).setEnabledOptionsMethod.apply(_this$virtualSelect4, arguments);\r\n }\r\n }, {\r\n key: \"toggleSelectAll\",\r\n value: function toggleSelectAll(isSelected) {\r\n this.virtualSelect.toggleAllOptions(isSelected);\r\n }\r\n }, {\r\n key: \"isAllSelected\",\r\n value: function isAllSelected() {\r\n return this.virtualSelect.isAllSelected;\r\n }\r\n }, {\r\n key: \"addOptionMethod\",\r\n value: function addOptionMethod(data) {\r\n this.virtualSelect.addOption(data, true);\r\n }\r\n }, {\r\n key: \"getNewValueMethod\",\r\n value: function getNewValueMethod() {\r\n return this.virtualSelect.getNewValue();\r\n }\r\n }, {\r\n key: \"getDisplayValueMethod\",\r\n value: function getDisplayValueMethod() {\r\n return this.virtualSelect.getDisplayValue();\r\n }\r\n }, {\r\n key: \"getSelectedOptionsMethod\",\r\n value: function getSelectedOptionsMethod(params) {\r\n return this.virtualSelect.getSelectedOptions(params);\r\n }\r\n }, {\r\n key: \"getDisabledOptionsMethod\",\r\n value: function getDisabledOptionsMethod() {\r\n return this.virtualSelect.getDisabledOptions();\r\n }\r\n }, {\r\n key: \"openMethod\",\r\n value: function openMethod() {\r\n return this.virtualSelect.openDropbox();\r\n }\r\n }, {\r\n key: \"closeMethod\",\r\n value: function closeMethod() {\r\n return this.virtualSelect.closeDropbox();\r\n }\r\n }, {\r\n key: \"focusMethod\",\r\n value: function focusMethod() {\r\n return this.virtualSelect.focus();\r\n }\r\n }, {\r\n key: \"enableMethod\",\r\n value: function enableMethod() {\r\n return this.virtualSelect.enable();\r\n }\r\n }, {\r\n key: \"disableMethod\",\r\n value: function disableMethod() {\r\n return this.virtualSelect.disable();\r\n }\r\n }, {\r\n key: \"destroyMethod\",\r\n value: function destroyMethod() {\r\n return this.virtualSelect.destroy();\r\n }\r\n }, {\r\n key: \"validateMethod\",\r\n value: function validateMethod() {\r\n return this.virtualSelect.validate();\r\n }\r\n }, {\r\n key: \"toggleRequiredMethod\",\r\n value: function toggleRequiredMethod(isRequired) {\r\n return this.virtualSelect.toggleRequired(isRequired);\r\n }\r\n }, {\r\n key: \"onResizeMethod\",\r\n value: function onResizeMethod() {\r\n document.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) {\r\n $ele.parentElement.virtualSelect.onResize();\r\n });\r\n }\r\n /** static methods - end */\r\n }]);\r\n return VirtualSelect;\r\n }();\r\n document.addEventListener('reset', VirtualSelect.onFormReset);\r\n document.addEventListener('submit', VirtualSelect.onFormSubmit);\r\n window.addEventListener('resize', VirtualSelect.onResizeMethod);\r\n attrPropsMapping = VirtualSelect.getAttrProps();\r\n window.VirtualSelect = VirtualSelect;\r\n /** polyfill to fix an issue in ie browser */\r\n if (typeof NodeList !== 'undefined' && NodeList.prototype && !NodeList.prototype.forEach) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n }\r\n }();\r\n // This entry need to be wrapped in an IIFE because it need to be isolated against other entry modules.\r\n !function () {\r\n /*!\r\n * Popover v1.0.13\r\n * https://sa-si-dev.github.io/popover\r\n * Licensed under MIT (https://github.com/sa-si-dev/popover/blob/master/LICENSE)\r\n */ !function () {\r\n \"use strict\";\r\n function e(e) { return function (e) { if (Array.isArray(e))\r\n return t(e); }(e) || function (e) { if (\"undefined\" != typeof Symbol && null != e[Symbol.iterator] || null != e[\"@@iterator\"])\r\n return Array.from(e); }(e) || function (e, o) { if (e) {\r\n if (\"string\" == typeof e)\r\n return t(e, o);\r\n var i = Object.prototype.toString.call(e).slice(8, -1);\r\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;\r\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.\"); }(); }\r\n function t(e, t) { (null == t || t > e.length) && (t = e.length); for (var o = 0, i = new Array(t); o < t; o++)\r\n i[o] = e[o]; return i; }\r\n function o(e, t) { for (var o = 0; o < t.length; o++) {\r\n var i = t[o];\r\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);\r\n } }\r\n var i = function () { function t() { !function (e, t) { if (!(e instanceof t))\r\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)\r\n return void 0 === e.forEach && (e = [e]), e; } }, { key: \"getMoreVisibleSides\", value: function (e) { if (!e)\r\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) {\r\n var t = e.getBoundingClientRect(), o = window.pageXOffset, i = window.pageYOffset;\r\n return { width: t.width, height: t.height, top: t.top + i, right: t.right + o, bottom: t.bottom + i, left: t.left + o };\r\n } } }, { key: \"getCoords\", value: function (e) { return e ? e.getBoundingClientRect() : {}; } }, { key: \"getData\", value: function (e, t, o) { if (e) {\r\n var i = e ? e.dataset[t] : \"\";\r\n return \"number\" === o ? i = parseFloat(i) || 0 : \"true\" === i ? i = !0 : \"false\" === i && (i = !1), i;\r\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;) {\r\n var i = getComputedStyle(o).overflow;\r\n if (-1 !== i.indexOf(\"scroll\") || -1 !== i.indexOf(\"auto\")) {\r\n t = o;\r\n break;\r\n }\r\n o = o.parentElement;\r\n } return t; } }], r && o(i, r), t; }();\r\n function r(e, t) { for (var o = 0; o < t.length; o++) {\r\n var i = t[o];\r\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);\r\n } }\r\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))\r\n throw new TypeError(\"Cannot call a class as a function\"); }(this, e); try {\r\n this.setProps(t), this.init();\r\n }\r\n catch (e) {\r\n console.warn(\"Couldn't initiate popper\"), console.error(e);\r\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(\" \")) {\r\n var o = t.split(\" \");\r\n this.position = o[0], this.secondaryPosition = o[1];\r\n }\r\n else\r\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) {\r\n var M = z[o];\r\n \"top\" === (C = o) || \"bottom\" === C ? S = M.top : \"left\" !== C && \"right\" !== C || (D = M.left);\r\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) {\r\n var B = 0, q = 0, N = D + d, W = S + c, K = this.$arrowEle.offsetWidth / 2, V = a[C] || \"\";\r\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));\r\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) {\r\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;\r\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);\r\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; }();\r\n window.PopperComponent = s;\r\n }(), function () {\r\n \"use strict\";\r\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); }\r\n function t(e, t) { for (var i = 0; i < t.length; i++) {\r\n var r = t[i];\r\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, o(r.key), r);\r\n } }\r\n function o(t) { var o = function (t, o) { if (\"object\" != e(t) || !t)\r\n return t; var i = t[Symbol.toPrimitive]; if (void 0 !== i) {\r\n var r = i.call(t, o || \"default\");\r\n if (\"object\" != e(r))\r\n return r;\r\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\r\n } return (\"string\" === o ? String : Number)(t); }(t, \"string\"); return \"symbol\" == e(o) ? o : o + \"\"; }\r\n var i = function () { return e = function e() { !function (e, t) { if (!(e instanceof t))\r\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++)\r\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; }();\r\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); }\r\n function n(e) { return function (e) { if (Array.isArray(e))\r\n return a(e); }(e) || function (e) { if (\"undefined\" != typeof Symbol && null != e[Symbol.iterator] || null != e[\"@@iterator\"])\r\n return Array.from(e); }(e) || function (e, t) { if (e) {\r\n if (\"string\" == typeof e)\r\n return a(e, t);\r\n var o = Object.prototype.toString.call(e).slice(8, -1);\r\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;\r\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.\"); }(); }\r\n function a(e, t) { (null == t || t > e.length) && (t = e.length); for (var o = 0, i = new Array(t); o < t; o++)\r\n i[o] = e[o]; return i; }\r\n function s(e, t) { for (var o = 0; o < t.length; o++) {\r\n var i = t[o];\r\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, l(i.key), i);\r\n } }\r\n function l(e) { var t = function (e, t) { if (\"object\" != r(e) || !e)\r\n return e; var o = e[Symbol.toPrimitive]; if (void 0 !== o) {\r\n var i = o.call(e, t || \"default\");\r\n if (\"object\" != r(i))\r\n return i;\r\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\r\n } return (\"string\" === t ? String : Number)(e); }(e, \"string\"); return \"symbol\" == r(t) ? t : t + \"\"; }\r\n var u = function () { function e() { !function (e, t) { if (!(e instanceof t))\r\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)\r\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)\r\n return []; for (var t = [window], o = e.parentElement; o;) {\r\n var i = getComputedStyle(o).overflow;\r\n -1 === i.indexOf(\"scroll\") && -1 === i.indexOf(\"auto\") || t.push(o), o = o.parentElement;\r\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; }();\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); }\r\n function h(e, t) { for (var o = 0; o < t.length; o++) {\r\n var i = t[o];\r\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, c(i.key), i);\r\n } }\r\n function c(e) { var t = function (e, t) { if (\"object\" != p(e) || !e)\r\n return e; var o = e[Symbol.toPrimitive]; if (void 0 !== o) {\r\n var i = o.call(e, t || \"default\");\r\n if (\"object\" != p(i))\r\n return i;\r\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\r\n } return (\"string\" === t ? String : Number)(e); }(e, \"string\"); return \"symbol\" == p(t) ? t : t + \"\"; }\r\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))\r\n throw new TypeError(\"Cannot call a class as a function\"); }(this, e); try {\r\n this.setProps(t), this.init();\r\n }\r\n catch (e) {\r\n console.warn(\"Couldn't initiate Popover component\"), console.error(e);\r\n } } return t = e, r = [{ key: \"init\", value: function (t) { var o = t.ele; if (o) {\r\n var i = !1;\r\n if (\"string\" == typeof o) {\r\n if (!(o = document.querySelectorAll(o)))\r\n return;\r\n 1 === o.length && (i = !0);\r\n }\r\n void 0 === o.length && (o = [o], i = !0);\r\n var r = [];\r\n return o.forEach((function (o) { t.ele = o, e.destroy(o), r.push(new e(t)); })), i ? r[0] : r;\r\n } } }, { key: \"destroy\", value: function (e) { if (e) {\r\n var t = e.popComp;\r\n t && t.destroy();\r\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) {\r\n var i = t.getAttribute(o);\r\n i && (e[f[o]] = i);\r\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) {\r\n var o = t.exitDelay + t.hideDuration + 100;\r\n setTimeout((function () { e.show(); }), o);\r\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) {\r\n var e = this.$popover.querySelector(\".pop-comp-arrow\");\r\n e || (this.$popover.insertAdjacentHTML(\"afterbegin\", ''), e = this.$popover.querySelector(\".pop-comp-arrow\")), this.$arrowEle = e;\r\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; }();\r\n f = y.getAttrProps(), window.PopoverComponent = y;\r\n }();\r\n }();\r\n /******/ \r\n})();\r\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;","var id = 0;\nfunction _classPrivateFieldKey(e) {\n return \"__private_\" + id++ + \"_\" + e;\n}\nexport { _classPrivateFieldKey as default };","'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * Examples:\r\n *\r\n * \r\n *\r\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.\r\n */\r\nconst OBSERVER_SETTINGS = {\r\n rootMargin: '100px 0px 100px 0px',\r\n threshold: 0\r\n};\r\nconst loadLazyMedia = function (el) {\r\n if (el.tagName === 'VIDEO') {\r\n const sourceEls = el.querySelectorAll('source[data-lazy-src]');\r\n sourceEls.forEach(sourceEl => {\r\n if (sourceEl.dataset.lazySrc) {\r\n sourceEl.setAttribute('src', sourceEl.dataset.lazySrc);\r\n }\r\n });\r\n el.load();\r\n }\r\n};\r\nconst videoCanPlay = function (evt) {\r\n const el = evt.target;\r\n el.removeEventListener('canplay', videoCanPlay);\r\n el.setAttribute('data-lazy-play', 'done');\r\n};\r\nlet lazyLoadMedia = {\r\n init: function () {\r\n const lazyLoadEls = document.querySelectorAll('[data-lazy-src]');\r\n const lazyPlayEls = document.querySelectorAll('video[data-lazy-play]');\r\n console.log('lazyLoadMedia.init()', 'Found ' + lazyLoadEls.length + ' lazy load elements and ' + lazyPlayEls.length + ' lazy play elements.');\r\n if ('IntersectionObserver' in window) {\r\n // IntersectionObserver is supported\r\n //\r\n // Lazy play observer\r\n //\r\n const lazyPlayObserver = new IntersectionObserver(function (entries, _) {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting && entry.target.offsetParent !== null) {\r\n if (entry.target.readyState === 4 && entry.target.getAttribute('data-lazy-play') !== 'done') {\r\n entry.target.play();\r\n }\r\n }\r\n else {\r\n entry.target.pause();\r\n }\r\n });\r\n }, OBSERVER_SETTINGS);\r\n lazyPlayEls.forEach(el => {\r\n el.addEventListener('canplay', videoCanPlay);\r\n lazyPlayObserver.observe(el);\r\n });\r\n //\r\n // Lazy load orserver\r\n //\r\n const lazyLoadObserver = new IntersectionObserver(function (entries, observer) {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting && entry.target !== null) {\r\n loadLazyMedia(entry.target);\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n }, OBSERVER_SETTINGS);\r\n lazyLoadEls.forEach(el => {\r\n lazyLoadObserver.observe((el.tagName === 'SOURCE' ? el.parentNode : el));\r\n });\r\n }\r\n else {\r\n // IntersectionObserver is NOT supported\r\n console.log('lazyLoadMedia.init()', 'IntersectionObserver not supported.');\r\n // Load all instantly\r\n lazyPlayEls.forEach(el => {\r\n el.addEventListener('canplay', videoCanPlay);\r\n });\r\n lazyLoadEls.forEach(el => {\r\n loadLazyMedia((el.tagName === 'SOURCE' ? el.parentNode : el));\r\n });\r\n }\r\n }\r\n};\r\nexports.default = lazyLoadMedia;\r\n","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst mustache_1 = __importDefault(require(\"mustache\"));\r\nconst siteSearch = {\r\n processingClickEvent: null,\r\n init() {\r\n const self = this;\r\n const searchTabs = document.querySelectorAll('.js-site-search');\r\n if (!searchTabs.length)\r\n return;\r\n console.log('site-search.init()');\r\n searchTabs.forEach((tab) => {\r\n const form = tab.querySelector('[data-search-load-more-form]');\r\n const submit = form?.querySelector('[type=\"submit\"]');\r\n if (!form || !submit)\r\n return false;\r\n const id = form.getAttribute('data-search-load-more-form');\r\n form.addEventListener('submit', (e) => {\r\n e.preventDefault();\r\n submit.classList.add('loading');\r\n const formData = new FormData(form);\r\n const formProps = Object.fromEntries(formData);\r\n fetch('/stage-ajax/siteSearch/?' + new URLSearchParams(formProps).toString())\r\n .then(response => response.json())\r\n .then((response) => {\r\n if (response.page) {\r\n const page = form.querySelector('[name=\"page\"]');\r\n if (page) {\r\n page.setAttribute('value', response.page + 1);\r\n }\r\n }\r\n if (response.hits) {\r\n const template = document.getElementById(`template-search-item-${id}`)?.textContent;\r\n const results = document.querySelector(`[data-search-results-container=${id}]`);\r\n if (template && results) {\r\n const lastChild = results?.lastElementChild;\r\n lastChild?.insertAdjacentHTML('afterend', response.hits.map((item) => mustache_1.default.render(template, item)).join(''));\r\n }\r\n }\r\n if (response.total_hits <= response.page * response.limit) {\r\n submit.remove();\r\n }\r\n })\r\n .catch((err) => {\r\n console.error(`Search err error: ${err.message}`);\r\n });\r\n });\r\n tab.addEventListener('click', (e) => {\r\n const target = e.target.classList.contains('search-result') ? e.target : e.target.closest('.search-result');\r\n if (target && target.dataset?.searchItem && target.dataset?.searchItemUrl === target.getAttribute('href')) {\r\n e.preventDefault();\r\n self.sendClickEvent({\r\n url: target.getAttribute('href'),\r\n id: target.dataset?.searchItem,\r\n position: target.dataset?.searchItemPosition,\r\n term: target.dataset?.searchItemTerm,\r\n });\r\n return false;\r\n }\r\n });\r\n return false;\r\n });\r\n },\r\n sendClickEvent(data) {\r\n if (this.processingClickEvent) {\r\n return;\r\n }\r\n this.processingClickEvent = data.id;\r\n let locationChanging = false;\r\n const loadTargetPath = () => {\r\n if (data.url && !locationChanging) {\r\n locationChanging = true;\r\n window.location = data.url;\r\n }\r\n };\r\n try {\r\n fetch(`/stage-ajax/siteSearch/?stage-language=${document.body.getAttribute('data-language')}&context=reportClick`, {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n id: data.id,\r\n position: parseInt(data.position),\r\n term: data.term\r\n }),\r\n }).then((res) => {\r\n loadTargetPath();\r\n }).catch((err) => {\r\n loadTargetPath();\r\n });\r\n return true;\r\n }\r\n catch (err) {\r\n if (err instanceof Error && err.name !== 'AbortError') {\r\n console.log(err);\r\n }\r\n }\r\n // Navigate to new url after small delay, even if ajax request has not completed\r\n setTimeout(loadTargetPath, 500);\r\n },\r\n};\r\nexports.default = siteSearch;\r\n","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst mustache_1 = __importDefault(require(\"mustache\"));\r\n/**\r\n * Simple filtering with dropdown\r\n *\r\n * Virtual select drops data-attributes so config-data-property needs to be defined in parent el. Like\r\n *\r\n * select name is the field that is used to filter items, which have this in the property (array)\r\n *\r\n *
\r\n * \r\n *\r\n *
\r\n * ...\r\n *
\r\n *
\r\n *\r\n * \r\n *\r\n */\r\nconst jsFilter = {\r\n el: {\r\n select: null,\r\n resultsEl: null,\r\n },\r\n items: [],\r\n filteredItems: [],\r\n filterField: false,\r\n selected: \"\",\r\n itemTemplate: \"\",\r\n /**\r\n * Initialises the functionality.\r\n * Attaches event handlers to toggle elements\r\n */\r\n init(el) {\r\n console.log(\"jsFilter init\");\r\n const configName = el.closest(\"[data-config]\")?.dataset.config;\r\n const config = window[configName];\r\n this.el = {\r\n select: el,\r\n resultsEl: document.getElementById(config.resultsEl),\r\n };\r\n this.itemTemplate = config.template;\r\n this.items = config.items || [];\r\n this.filterField = el.name;\r\n if (!this.filterField || !this.items.length) {\r\n console.log(\"jsFilter, no filterField or items found\");\r\n return;\r\n }\r\n this.addEventListeners(el);\r\n },\r\n renderResults() {\r\n const resultsEl = this.el.resultsEl;\r\n if (resultsEl) {\r\n let resultsHtml = \"\";\r\n this.filteredItems.forEach((item) => {\r\n resultsHtml = resultsHtml + mustache_1.default.render(this.itemTemplate, item);\r\n });\r\n resultsEl.innerHTML = resultsHtml;\r\n }\r\n },\r\n addEventListeners(el) {\r\n const select = el;\r\n const self = this;\r\n select.addEventListener(\"change\", function () {\r\n if (this.value.length) {\r\n self.selected = this.value;\r\n }\r\n else {\r\n self.selected = \"\";\r\n }\r\n self.filterResults();\r\n });\r\n },\r\n filterResults() {\r\n if (this.selected) {\r\n this.filteredItems = this.items.filter((item) => item[this.filterField]?.includes(this.selected));\r\n }\r\n else {\r\n this.filteredItems = this.items;\r\n }\r\n this.renderResults();\r\n },\r\n};\r\nexports.default = jsFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.useNativeDialogAsModal = void 0;\r\nconst utils_1 = require(\"./utils\");\r\n/**\r\n * Improves native dialog element by providing following features:\r\n *\r\n * - Default close button logic\r\n * - Close modal by clicking the background\r\n * - Scroll-lock on html body when modal is opened\r\n *\r\n * @param {HTMLDialogElement} dialog Dialog element.\r\n * @param {object} [options] Dialog options.\r\n * @param {boolean} [options.closeOnBackgroundClick=true] Whether dialog is closed when background is clicked. Default is true.\r\n * @param {string} [options.dialogContentSelector] Set selector which is used to check if click was out of bounds. Default is `[data-dialog-content]`.\r\n * @param {boolean} [options.registerCloseButtons=true] Whether default logic for close buttons is used. Default is true.\r\n * @param {string} [options.closeButtonSelector] HTML query selector for close buttons. Default is `[data-dialog-close]`.\r\n * @param {boolean} [options.preventBodyScroll=true] Whether body scrolling is diabled. Default is true.\r\n * @param {string} [options.bodyPreventScrollClass] CSS class that is added to body when scrolling is prevented. Default is `dialog-open`.\r\n */\r\nfunction useNativeDialogAsModal(dialog, options = {}) {\r\n options = {\r\n registerCloseButtons: true,\r\n closeButtonSelector: '[data-dialog-close]',\r\n closeOnBackgroundClick: true,\r\n dialogContentSelector: '[data-dialog-content]',\r\n preventBodyScroll: true,\r\n bodyPreventScrollClass: 'dialog-open',\r\n ...options\r\n };\r\n // Close modal when user clicks close button inside modal\r\n if (options.registerCloseButtons) {\r\n const closeHandler = () => {\r\n dialog.close();\r\n };\r\n const closeButtons = dialog.querySelectorAll(options.closeButtonSelector);\r\n closeButtons.forEach(button => {\r\n button.addEventListener('click', closeHandler);\r\n });\r\n }\r\n // Close modal when user clicks outside dialog content area\r\n if (options.closeOnBackgroundClick) {\r\n const closeOnClickHandler = (e) => {\r\n if (!e.target.closest(options.dialogContentSelector)) {\r\n dialog.close();\r\n }\r\n };\r\n dialog.addEventListener('click', closeOnClickHandler);\r\n }\r\n // Prevent body scroll when dialog is open\r\n if (options.preventBodyScroll) {\r\n let scrollY = null;\r\n const observer = new MutationObserver((mutationList, observer) => {\r\n for (const mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (dialog.open) {\r\n if (!document.body.classList.contains(options.bodyPreventScrollClass)) {\r\n scrollY = window.scrollY;\r\n document.body.classList.add(options.bodyPreventScrollClass);\r\n window.scrollTo({ left: window.scrollX, top: scrollY });\r\n }\r\n }\r\n else {\r\n if (scrollY && document.body.classList.contains(options.bodyPreventScrollClass)) {\r\n document.body.classList.remove(options.bodyPreventScrollClass);\r\n window.scrollTo({ left: window.scrollX, top: scrollY });\r\n scrollY = null;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n observer.observe(dialog, { attributes: true, attributeFilter: ['open'] });\r\n // If focus moves from opened dialog to other element on page, scrollY value seems to reset to 0\r\n // As a workaround, always reset scroll position after blur event occures in dialog inputs\r\n let posTimeout = null;\r\n const setScrollPositionAfterBlur = (e) => {\r\n if (posTimeout) {\r\n clearTimeout(posTimeout);\r\n }\r\n posTimeout = setTimeout(() => {\r\n if (scrollY && document.body.classList.contains(options.bodyPreventScrollClass)) {\r\n window.scrollTo({ left: window.scrollX, top: scrollY });\r\n }\r\n }, 0);\r\n };\r\n const focusableChildren = (0, utils_1.getFocusableChildren)(dialog, { checkVisibility: false });\r\n focusableChildren.forEach(child => {\r\n child.addEventListener('blur', setScrollPositionAfterBlur);\r\n });\r\n }\r\n}\r\nexports.useNativeDialogAsModal = useNativeDialogAsModal;\r\n","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\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getFocusableChildren = exports.getBreakpoint = void 0;\r\n/**\r\n * Get current breakpoint.\r\n *\r\n * @returns {String} 2-letter code.\r\n */\r\nfunction getBreakpoint() {\r\n let breakpoint = 'lg';\r\n const breakpoints = [\r\n { id: 'xs', width: 672 },\r\n { id: 'sm', width: 1056 },\r\n { id: 'md', width: 1312 },\r\n ];\r\n for (let i = 0; i < breakpoints.length; i++) {\r\n const item = breakpoints[i];\r\n if (window.innerWidth < item.width) {\r\n breakpoint = item.id;\r\n break;\r\n }\r\n }\r\n return breakpoint;\r\n}\r\nexports.getBreakpoint = getBreakpoint;\r\n/**\r\n * Get focusable children for given element.\r\n *\r\n * @param {Element|null} [element] Container to check. If empty, fetches all elements from current document.\r\n * @param {object} [options] Options to specify what rules are checked.\r\n * @param {boolean} [checkHidden] Whether elements with hidden attribute are excluded. Default is true.\r\n * @param {boolean} [checkDisabled] Whether elements with disabled attribute are excluded. Default is true.\r\n * @param {boolean} [checkTabIndex] Whether elements with negative tabindex are excluded. Default is true.\r\n * @param {boolean} [checkVisibility] Whether non-visible elements are excluded. Default is true.\r\n * @returns {Element[]} Array of focusable elements.\r\n */\r\nfunction getFocusableChildren(element = null, options = {}) {\r\n const selectors = [\r\n 'a[href]',\r\n 'area[href]',\r\n 'input:not([type=\"hidden\"]):not([type=\"radio\"])',\r\n 'input[type=\"radio\"]:checked',\r\n 'select',\r\n 'textarea',\r\n 'button',\r\n 'iframe',\r\n 'audio[controls]',\r\n 'video[controls]',\r\n '[contenteditable]',\r\n '[tabindex]:not([tabindex^=\"-\"])',\r\n '[role=\"button\"]'\r\n ];\r\n const container = element || window.document;\r\n const focusOptions = {\r\n checkHidden: true,\r\n checkDisabled: true,\r\n checkTabIndex: true,\r\n checkVisibility: true,\r\n ...options\r\n };\r\n return Array.from(container.querySelectorAll(selectors.join(','))).filter((child) => {\r\n if (focusOptions.checkHidden && child.hidden) {\r\n return false;\r\n }\r\n if (focusOptions.checkDisabled && child.disabled) {\r\n return false;\r\n }\r\n if (focusOptions.checkTabIndex && String(child.tabindex).indexOf('-') === 0) {\r\n return false;\r\n }\r\n if (focusOptions.checkVisibility && (!child.offsetWidth || !child.offsetHeight || !child.getClientRects().length)) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n}\r\nexports.getFocusableChildren = getFocusableChildren;\r\n","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;","import _typeof from \"./typeof.js\";\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n };\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}\nexport { _regeneratorRuntime as default };","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 };","\"use strict\";\r\n/**\r\n * Swiper 11.0.7\r\n * Most modern mobile touch slider and framework with hardware accelerated transitions\r\n * https://swiperjs.com\r\n *\r\n * Copyright 2014-2024 Vladimir Kharlampidi\r\n *\r\n * Released under the MIT License\r\n *\r\n * Released on: February 27, 2024\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Swiper = (function () {\r\n 'use strict';\r\n /**\r\n * SSR Window 4.0.2\r\n * Better handling for window object in SSR environment\r\n * https://github.com/nolimits4web/ssr-window\r\n *\r\n * Copyright 2021, Vladimir Kharlampidi\r\n *\r\n * Licensed under MIT\r\n *\r\n * Released on: December 13, 2021\r\n */\r\n /* eslint-disable no-param-reassign */\r\n function isObject$1(obj) {\r\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\r\n }\r\n function extend$1(target, src) {\r\n if (target === void 0) {\r\n target = {};\r\n }\r\n if (src === void 0) {\r\n src = {};\r\n }\r\n Object.keys(src).forEach(key => {\r\n if (typeof target[key] === 'undefined')\r\n target[key] = src[key];\r\n else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) {\r\n extend$1(target[key], src[key]);\r\n }\r\n });\r\n }\r\n const ssrDocument = {\r\n body: {},\r\n addEventListener() { },\r\n removeEventListener() { },\r\n activeElement: {\r\n blur() { },\r\n nodeName: ''\r\n },\r\n querySelector() {\r\n return null;\r\n },\r\n querySelectorAll() {\r\n return [];\r\n },\r\n getElementById() {\r\n return null;\r\n },\r\n createEvent() {\r\n return {\r\n initEvent() { }\r\n };\r\n },\r\n createElement() {\r\n return {\r\n children: [],\r\n childNodes: [],\r\n style: {},\r\n setAttribute() { },\r\n getElementsByTagName() {\r\n return [];\r\n }\r\n };\r\n },\r\n createElementNS() {\r\n return {};\r\n },\r\n importNode() {\r\n return null;\r\n },\r\n location: {\r\n hash: '',\r\n host: '',\r\n hostname: '',\r\n href: '',\r\n origin: '',\r\n pathname: '',\r\n protocol: '',\r\n search: ''\r\n }\r\n };\r\n function getDocument() {\r\n const doc = typeof document !== 'undefined' ? document : {};\r\n extend$1(doc, ssrDocument);\r\n return doc;\r\n }\r\n const ssrWindow = {\r\n document: ssrDocument,\r\n navigator: {\r\n userAgent: ''\r\n },\r\n location: {\r\n hash: '',\r\n host: '',\r\n hostname: '',\r\n href: '',\r\n origin: '',\r\n pathname: '',\r\n protocol: '',\r\n search: ''\r\n },\r\n history: {\r\n replaceState() { },\r\n pushState() { },\r\n go() { },\r\n back() { }\r\n },\r\n CustomEvent: function CustomEvent() {\r\n return this;\r\n },\r\n addEventListener() { },\r\n removeEventListener() { },\r\n getComputedStyle() {\r\n return {\r\n getPropertyValue() {\r\n return '';\r\n }\r\n };\r\n },\r\n Image() { },\r\n Date() { },\r\n screen: {},\r\n setTimeout() { },\r\n clearTimeout() { },\r\n matchMedia() {\r\n return {};\r\n },\r\n requestAnimationFrame(callback) {\r\n if (typeof setTimeout === 'undefined') {\r\n callback();\r\n return null;\r\n }\r\n return setTimeout(callback, 0);\r\n },\r\n cancelAnimationFrame(id) {\r\n if (typeof setTimeout === 'undefined') {\r\n return;\r\n }\r\n clearTimeout(id);\r\n }\r\n };\r\n function getWindow() {\r\n const win = typeof window !== 'undefined' ? window : {};\r\n extend$1(win, ssrWindow);\r\n return win;\r\n }\r\n function classesToTokens(classes) {\r\n if (classes === void 0) {\r\n classes = '';\r\n }\r\n return classes.trim().split(' ').filter(c => !!c.trim());\r\n }\r\n function deleteProps(obj) {\r\n const object = obj;\r\n Object.keys(object).forEach(key => {\r\n try {\r\n object[key] = null;\r\n }\r\n catch (e) {\r\n // no getter for object\r\n }\r\n try {\r\n delete object[key];\r\n }\r\n catch (e) {\r\n // something got wrong\r\n }\r\n });\r\n }\r\n function nextTick(callback, delay) {\r\n if (delay === void 0) {\r\n delay = 0;\r\n }\r\n return setTimeout(callback, delay);\r\n }\r\n function now() {\r\n return Date.now();\r\n }\r\n function getComputedStyle$1(el) {\r\n const window = getWindow();\r\n let style;\r\n if (window.getComputedStyle) {\r\n style = window.getComputedStyle(el, null);\r\n }\r\n if (!style && el.currentStyle) {\r\n style = el.currentStyle;\r\n }\r\n if (!style) {\r\n style = el.style;\r\n }\r\n return style;\r\n }\r\n function getTranslate(el, axis) {\r\n if (axis === void 0) {\r\n axis = 'x';\r\n }\r\n const window = getWindow();\r\n let matrix;\r\n let curTransform;\r\n let transformMatrix;\r\n const curStyle = getComputedStyle$1(el);\r\n if (window.WebKitCSSMatrix) {\r\n curTransform = curStyle.transform || curStyle.webkitTransform;\r\n if (curTransform.split(',').length > 6) {\r\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\r\n }\r\n // Some old versions of Webkit choke when 'none' is passed; pass\r\n // empty string instead in this case\r\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\r\n }\r\n else {\r\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\r\n matrix = transformMatrix.toString().split(',');\r\n }\r\n if (axis === 'x') {\r\n // Latest Chrome and webkits Fix\r\n if (window.WebKitCSSMatrix)\r\n curTransform = transformMatrix.m41;\r\n // Crazy IE10 Matrix\r\n else if (matrix.length === 16)\r\n curTransform = parseFloat(matrix[12]);\r\n // Normal Browsers\r\n else\r\n curTransform = parseFloat(matrix[4]);\r\n }\r\n if (axis === 'y') {\r\n // Latest Chrome and webkits Fix\r\n if (window.WebKitCSSMatrix)\r\n curTransform = transformMatrix.m42;\r\n // Crazy IE10 Matrix\r\n else if (matrix.length === 16)\r\n curTransform = parseFloat(matrix[13]);\r\n // Normal Browsers\r\n else\r\n curTransform = parseFloat(matrix[5]);\r\n }\r\n return curTransform || 0;\r\n }\r\n function isObject(o) {\r\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\r\n }\r\n function isNode(node) {\r\n // eslint-disable-next-line\r\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\r\n return node instanceof HTMLElement;\r\n }\r\n return node && (node.nodeType === 1 || node.nodeType === 11);\r\n }\r\n function extend() {\r\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\r\n const noExtend = ['__proto__', 'constructor', 'prototype'];\r\n for (let i = 1; i < arguments.length; i += 1) {\r\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\r\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\r\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\r\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\r\n const nextKey = keysArray[nextIndex];\r\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\r\n if (desc !== undefined && desc.enumerable) {\r\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\r\n if (nextSource[nextKey].__swiper__) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n else {\r\n extend(to[nextKey], nextSource[nextKey]);\r\n }\r\n }\r\n else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\r\n to[nextKey] = {};\r\n if (nextSource[nextKey].__swiper__) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n else {\r\n extend(to[nextKey], nextSource[nextKey]);\r\n }\r\n }\r\n else {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n }\r\n function setCSSProperty(el, varName, varValue) {\r\n el.style.setProperty(varName, varValue);\r\n }\r\n function animateCSSModeScroll(_ref) {\r\n let { swiper, targetPosition, side } = _ref;\r\n const window = getWindow();\r\n const startPosition = -swiper.translate;\r\n let startTime = null;\r\n let time;\r\n const duration = swiper.params.speed;\r\n swiper.wrapperEl.style.scrollSnapType = 'none';\r\n window.cancelAnimationFrame(swiper.cssModeFrameID);\r\n const dir = targetPosition > startPosition ? 'next' : 'prev';\r\n const isOutOfBound = (current, target) => {\r\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\r\n };\r\n const animate = () => {\r\n time = new Date().getTime();\r\n if (startTime === null) {\r\n startTime = time;\r\n }\r\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\r\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\r\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\r\n if (isOutOfBound(currentPosition, targetPosition)) {\r\n currentPosition = targetPosition;\r\n }\r\n swiper.wrapperEl.scrollTo({\r\n [side]: currentPosition\r\n });\r\n if (isOutOfBound(currentPosition, targetPosition)) {\r\n swiper.wrapperEl.style.overflow = 'hidden';\r\n swiper.wrapperEl.style.scrollSnapType = '';\r\n setTimeout(() => {\r\n swiper.wrapperEl.style.overflow = '';\r\n swiper.wrapperEl.scrollTo({\r\n [side]: currentPosition\r\n });\r\n });\r\n window.cancelAnimationFrame(swiper.cssModeFrameID);\r\n return;\r\n }\r\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\r\n };\r\n animate();\r\n }\r\n function getSlideTransformEl(slideEl) {\r\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\r\n }\r\n function elementChildren(element, selector) {\r\n if (selector === void 0) {\r\n selector = '';\r\n }\r\n return [...element.children].filter(el => el.matches(selector));\r\n }\r\n function showWarning(text) {\r\n try {\r\n console.warn(text);\r\n return;\r\n }\r\n catch (err) {\r\n // err\r\n }\r\n }\r\n function createElement(tag, classes) {\r\n if (classes === void 0) {\r\n classes = [];\r\n }\r\n const el = document.createElement(tag);\r\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\r\n return el;\r\n }\r\n function elementOffset(el) {\r\n const window = getWindow();\r\n const document = getDocument();\r\n const box = el.getBoundingClientRect();\r\n const body = document.body;\r\n const clientTop = el.clientTop || body.clientTop || 0;\r\n const clientLeft = el.clientLeft || body.clientLeft || 0;\r\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\r\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\r\n return {\r\n top: box.top + scrollTop - clientTop,\r\n left: box.left + scrollLeft - clientLeft\r\n };\r\n }\r\n function elementPrevAll(el, selector) {\r\n const prevEls = [];\r\n while (el.previousElementSibling) {\r\n const prev = el.previousElementSibling; // eslint-disable-line\r\n if (selector) {\r\n if (prev.matches(selector))\r\n prevEls.push(prev);\r\n }\r\n else\r\n prevEls.push(prev);\r\n el = prev;\r\n }\r\n return prevEls;\r\n }\r\n function elementNextAll(el, selector) {\r\n const nextEls = [];\r\n while (el.nextElementSibling) {\r\n const next = el.nextElementSibling; // eslint-disable-line\r\n if (selector) {\r\n if (next.matches(selector))\r\n nextEls.push(next);\r\n }\r\n else\r\n nextEls.push(next);\r\n el = next;\r\n }\r\n return nextEls;\r\n }\r\n function elementStyle(el, prop) {\r\n const window = getWindow();\r\n return window.getComputedStyle(el, null).getPropertyValue(prop);\r\n }\r\n function elementIndex(el) {\r\n let child = el;\r\n let i;\r\n if (child) {\r\n i = 0;\r\n // eslint-disable-next-line\r\n while ((child = child.previousSibling) !== null) {\r\n if (child.nodeType === 1)\r\n i += 1;\r\n }\r\n return i;\r\n }\r\n return undefined;\r\n }\r\n function elementParents(el, selector) {\r\n const parents = []; // eslint-disable-line\r\n let parent = el.parentElement; // eslint-disable-line\r\n while (parent) {\r\n if (selector) {\r\n if (parent.matches(selector))\r\n parents.push(parent);\r\n }\r\n else {\r\n parents.push(parent);\r\n }\r\n parent = parent.parentElement;\r\n }\r\n return parents;\r\n }\r\n function elementTransitionEnd(el, callback) {\r\n function fireCallBack(e) {\r\n if (e.target !== el)\r\n return;\r\n callback.call(el, e);\r\n el.removeEventListener('transitionend', fireCallBack);\r\n }\r\n if (callback) {\r\n el.addEventListener('transitionend', fireCallBack);\r\n }\r\n }\r\n function elementOuterSize(el, size, includeMargins) {\r\n const window = getWindow();\r\n if (includeMargins) {\r\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'));\r\n }\r\n return el.offsetWidth;\r\n }\r\n function makeElementsArray(el) {\r\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\r\n }\r\n let support;\r\n function calcSupport() {\r\n const window = getWindow();\r\n const document = getDocument();\r\n return {\r\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\r\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\r\n };\r\n }\r\n function getSupport() {\r\n if (!support) {\r\n support = calcSupport();\r\n }\r\n return support;\r\n }\r\n let deviceCached;\r\n function calcDevice(_temp) {\r\n let { userAgent } = _temp === void 0 ? {} : _temp;\r\n const support = getSupport();\r\n const window = getWindow();\r\n const platform = window.navigator.platform;\r\n const ua = userAgent || window.navigator.userAgent;\r\n const device = {\r\n ios: false,\r\n android: false\r\n };\r\n const screenWidth = window.screen.width;\r\n const screenHeight = window.screen.height;\r\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\r\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\r\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\r\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\r\n const windows = platform === 'Win32';\r\n let macos = platform === 'MacIntel';\r\n // iPadOs 13 fix\r\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\r\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\r\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\r\n if (!ipad)\r\n ipad = [0, 1, '13_0_0'];\r\n macos = false;\r\n }\r\n // Android\r\n if (android && !windows) {\r\n device.os = 'android';\r\n device.android = true;\r\n }\r\n if (ipad || iphone || ipod) {\r\n device.os = 'ios';\r\n device.ios = true;\r\n }\r\n // Export object\r\n return device;\r\n }\r\n function getDevice(overrides) {\r\n if (overrides === void 0) {\r\n overrides = {};\r\n }\r\n if (!deviceCached) {\r\n deviceCached = calcDevice(overrides);\r\n }\r\n return deviceCached;\r\n }\r\n let browser;\r\n function calcBrowser() {\r\n const window = getWindow();\r\n const device = getDevice();\r\n let needPerspectiveFix = false;\r\n function isSafari() {\r\n const ua = window.navigator.userAgent.toLowerCase();\r\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\r\n }\r\n if (isSafari()) {\r\n const ua = String(window.navigator.userAgent);\r\n if (ua.includes('Version/')) {\r\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\r\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\r\n }\r\n }\r\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\r\n const isSafariBrowser = isSafari();\r\n const need3dFix = isSafariBrowser || isWebView && device.ios;\r\n return {\r\n isSafari: needPerspectiveFix || isSafariBrowser,\r\n needPerspectiveFix,\r\n need3dFix,\r\n isWebView\r\n };\r\n }\r\n function getBrowser() {\r\n if (!browser) {\r\n browser = calcBrowser();\r\n }\r\n return browser;\r\n }\r\n function Resize(_ref) {\r\n let { swiper, on, emit } = _ref;\r\n const window = getWindow();\r\n let observer = null;\r\n let animationFrame = null;\r\n const resizeHandler = () => {\r\n if (!swiper || swiper.destroyed || !swiper.initialized)\r\n return;\r\n emit('beforeResize');\r\n emit('resize');\r\n };\r\n const createObserver = () => {\r\n if (!swiper || swiper.destroyed || !swiper.initialized)\r\n return;\r\n observer = new ResizeObserver(entries => {\r\n animationFrame = window.requestAnimationFrame(() => {\r\n const { width, height } = swiper;\r\n let newWidth = width;\r\n let newHeight = height;\r\n entries.forEach(_ref2 => {\r\n let { contentBoxSize, contentRect, target } = _ref2;\r\n if (target && target !== swiper.el)\r\n return;\r\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\r\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\r\n });\r\n if (newWidth !== width || newHeight !== height) {\r\n resizeHandler();\r\n }\r\n });\r\n });\r\n observer.observe(swiper.el);\r\n };\r\n const removeObserver = () => {\r\n if (animationFrame) {\r\n window.cancelAnimationFrame(animationFrame);\r\n }\r\n if (observer && observer.unobserve && swiper.el) {\r\n observer.unobserve(swiper.el);\r\n observer = null;\r\n }\r\n };\r\n const orientationChangeHandler = () => {\r\n if (!swiper || swiper.destroyed || !swiper.initialized)\r\n return;\r\n emit('orientationchange');\r\n };\r\n on('init', () => {\r\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\r\n createObserver();\r\n return;\r\n }\r\n window.addEventListener('resize', resizeHandler);\r\n window.addEventListener('orientationchange', orientationChangeHandler);\r\n });\r\n on('destroy', () => {\r\n removeObserver();\r\n window.removeEventListener('resize', resizeHandler);\r\n window.removeEventListener('orientationchange', orientationChangeHandler);\r\n });\r\n }\r\n function Observer(_ref) {\r\n let { swiper, extendParams, on, emit } = _ref;\r\n const observers = [];\r\n const window = getWindow();\r\n const attach = function (target, options) {\r\n if (options === void 0) {\r\n options = {};\r\n }\r\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\r\n const observer = new ObserverFunc(mutations => {\r\n // The observerUpdate event should only be triggered\r\n // once despite the number of mutations. Additional\r\n // triggers are redundant and are very costly\r\n if (swiper.__preventObserver__)\r\n return;\r\n if (mutations.length === 1) {\r\n emit('observerUpdate', mutations[0]);\r\n return;\r\n }\r\n const observerUpdate = function observerUpdate() {\r\n emit('observerUpdate', mutations[0]);\r\n };\r\n if (window.requestAnimationFrame) {\r\n window.requestAnimationFrame(observerUpdate);\r\n }\r\n else {\r\n window.setTimeout(observerUpdate, 0);\r\n }\r\n });\r\n observer.observe(target, {\r\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\r\n childList: typeof options.childList === 'undefined' ? true : options.childList,\r\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\r\n });\r\n observers.push(observer);\r\n };\r\n const init = () => {\r\n if (!swiper.params.observer)\r\n return;\r\n if (swiper.params.observeParents) {\r\n const containerParents = elementParents(swiper.hostEl);\r\n for (let i = 0; i < containerParents.length; i += 1) {\r\n attach(containerParents[i]);\r\n }\r\n }\r\n // Observe container\r\n attach(swiper.hostEl, {\r\n childList: swiper.params.observeSlideChildren\r\n });\r\n // Observe wrapper\r\n attach(swiper.wrapperEl, {\r\n attributes: false\r\n });\r\n };\r\n const destroy = () => {\r\n observers.forEach(observer => {\r\n observer.disconnect();\r\n });\r\n observers.splice(0, observers.length);\r\n };\r\n extendParams({\r\n observer: false,\r\n observeParents: false,\r\n observeSlideChildren: false\r\n });\r\n on('init', init);\r\n on('destroy', destroy);\r\n }\r\n /* eslint-disable no-underscore-dangle */\r\n var eventsEmitter = {\r\n on(events, handler, priority) {\r\n const self = this;\r\n if (!self.eventsListeners || self.destroyed)\r\n return self;\r\n if (typeof handler !== 'function')\r\n return self;\r\n const method = priority ? 'unshift' : 'push';\r\n events.split(' ').forEach(event => {\r\n if (!self.eventsListeners[event])\r\n self.eventsListeners[event] = [];\r\n self.eventsListeners[event][method](handler);\r\n });\r\n return self;\r\n },\r\n once(events, handler, priority) {\r\n const self = this;\r\n if (!self.eventsListeners || self.destroyed)\r\n return self;\r\n if (typeof handler !== 'function')\r\n return self;\r\n function onceHandler() {\r\n self.off(events, onceHandler);\r\n if (onceHandler.__emitterProxy) {\r\n delete onceHandler.__emitterProxy;\r\n }\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n handler.apply(self, args);\r\n }\r\n onceHandler.__emitterProxy = handler;\r\n return self.on(events, onceHandler, priority);\r\n },\r\n onAny(handler, priority) {\r\n const self = this;\r\n if (!self.eventsListeners || self.destroyed)\r\n return self;\r\n if (typeof handler !== 'function')\r\n return self;\r\n const method = priority ? 'unshift' : 'push';\r\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\r\n self.eventsAnyListeners[method](handler);\r\n }\r\n return self;\r\n },\r\n offAny(handler) {\r\n const self = this;\r\n if (!self.eventsListeners || self.destroyed)\r\n return self;\r\n if (!self.eventsAnyListeners)\r\n return self;\r\n const index = self.eventsAnyListeners.indexOf(handler);\r\n if (index >= 0) {\r\n self.eventsAnyListeners.splice(index, 1);\r\n }\r\n return self;\r\n },\r\n off(events, handler) {\r\n const self = this;\r\n if (!self.eventsListeners || self.destroyed)\r\n return self;\r\n if (!self.eventsListeners)\r\n return self;\r\n events.split(' ').forEach(event => {\r\n if (typeof handler === 'undefined') {\r\n self.eventsListeners[event] = [];\r\n }\r\n else if (self.eventsListeners[event]) {\r\n self.eventsListeners[event].forEach((eventHandler, index) => {\r\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\r\n self.eventsListeners[event].splice(index, 1);\r\n }\r\n });\r\n }\r\n });\r\n return self;\r\n },\r\n emit() {\r\n const self = this;\r\n if (!self.eventsListeners || self.destroyed)\r\n return self;\r\n if (!self.eventsListeners)\r\n return self;\r\n let events;\r\n let data;\r\n let context;\r\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n args[_key2] = arguments[_key2];\r\n }\r\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\r\n events = args[0];\r\n data = args.slice(1, args.length);\r\n context = self;\r\n }\r\n else {\r\n events = args[0].events;\r\n data = args[0].data;\r\n context = args[0].context || self;\r\n }\r\n data.unshift(context);\r\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\r\n eventsArray.forEach(event => {\r\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\r\n self.eventsAnyListeners.forEach(eventHandler => {\r\n eventHandler.apply(context, [event, ...data]);\r\n });\r\n }\r\n if (self.eventsListeners && self.eventsListeners[event]) {\r\n self.eventsListeners[event].forEach(eventHandler => {\r\n eventHandler.apply(context, data);\r\n });\r\n }\r\n });\r\n return self;\r\n }\r\n };\r\n function updateSize() {\r\n const swiper = this;\r\n let width;\r\n let height;\r\n const el = swiper.el;\r\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\r\n width = swiper.params.width;\r\n }\r\n else {\r\n width = el.clientWidth;\r\n }\r\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\r\n height = swiper.params.height;\r\n }\r\n else {\r\n height = el.clientHeight;\r\n }\r\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\r\n return;\r\n }\r\n // Subtract paddings\r\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\r\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\r\n if (Number.isNaN(width))\r\n width = 0;\r\n if (Number.isNaN(height))\r\n height = 0;\r\n Object.assign(swiper, {\r\n width,\r\n height,\r\n size: swiper.isHorizontal() ? width : height\r\n });\r\n }\r\n function updateSlides() {\r\n const swiper = this;\r\n function getDirectionPropertyValue(node, label) {\r\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\r\n }\r\n const params = swiper.params;\r\n const { wrapperEl, slidesEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\r\n const isVirtual = swiper.virtual && params.virtual.enabled;\r\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\r\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\r\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\r\n let snapGrid = [];\r\n const slidesGrid = [];\r\n const slidesSizesGrid = [];\r\n let offsetBefore = params.slidesOffsetBefore;\r\n if (typeof offsetBefore === 'function') {\r\n offsetBefore = params.slidesOffsetBefore.call(swiper);\r\n }\r\n let offsetAfter = params.slidesOffsetAfter;\r\n if (typeof offsetAfter === 'function') {\r\n offsetAfter = params.slidesOffsetAfter.call(swiper);\r\n }\r\n const previousSnapGridLength = swiper.snapGrid.length;\r\n const previousSlidesGridLength = swiper.slidesGrid.length;\r\n let spaceBetween = params.spaceBetween;\r\n let slidePosition = -offsetBefore;\r\n let prevSlideSize = 0;\r\n let index = 0;\r\n if (typeof swiperSize === 'undefined') {\r\n return;\r\n }\r\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\r\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\r\n }\r\n else if (typeof spaceBetween === 'string') {\r\n spaceBetween = parseFloat(spaceBetween);\r\n }\r\n swiper.virtualSize = -spaceBetween;\r\n // reset margins\r\n slides.forEach(slideEl => {\r\n if (rtl) {\r\n slideEl.style.marginLeft = '';\r\n }\r\n else {\r\n slideEl.style.marginRight = '';\r\n }\r\n slideEl.style.marginBottom = '';\r\n slideEl.style.marginTop = '';\r\n });\r\n // reset cssMode offsets\r\n if (params.centeredSlides && params.cssMode) {\r\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\r\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\r\n }\r\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\r\n if (gridEnabled) {\r\n swiper.grid.initSlides(slides);\r\n }\r\n else if (swiper.grid) {\r\n swiper.grid.unsetSlides();\r\n }\r\n // Calc slides\r\n let slideSize;\r\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\r\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\r\n }).length > 0;\r\n for (let i = 0; i < slidesLength; i += 1) {\r\n slideSize = 0;\r\n let slide;\r\n if (slides[i])\r\n slide = slides[i];\r\n if (gridEnabled) {\r\n swiper.grid.updateSlide(i, slide, slides);\r\n }\r\n if (slides[i] && elementStyle(slide, 'display') === 'none')\r\n continue; // eslint-disable-line\r\n if (params.slidesPerView === 'auto') {\r\n if (shouldResetSlideSize) {\r\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\r\n }\r\n const slideStyles = getComputedStyle(slide);\r\n const currentTransform = slide.style.transform;\r\n const currentWebKitTransform = slide.style.webkitTransform;\r\n if (currentTransform) {\r\n slide.style.transform = 'none';\r\n }\r\n if (currentWebKitTransform) {\r\n slide.style.webkitTransform = 'none';\r\n }\r\n if (params.roundLengths) {\r\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\r\n }\r\n else {\r\n // eslint-disable-next-line\r\n const width = getDirectionPropertyValue(slideStyles, 'width');\r\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\r\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\r\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\r\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\r\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\r\n if (boxSizing && boxSizing === 'border-box') {\r\n slideSize = width + marginLeft + marginRight;\r\n }\r\n else {\r\n const { clientWidth, offsetWidth } = slide;\r\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\r\n }\r\n }\r\n if (currentTransform) {\r\n slide.style.transform = currentTransform;\r\n }\r\n if (currentWebKitTransform) {\r\n slide.style.webkitTransform = currentWebKitTransform;\r\n }\r\n if (params.roundLengths)\r\n slideSize = Math.floor(slideSize);\r\n }\r\n else {\r\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\r\n if (params.roundLengths)\r\n slideSize = Math.floor(slideSize);\r\n if (slides[i]) {\r\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\r\n }\r\n }\r\n if (slides[i]) {\r\n slides[i].swiperSlideSize = slideSize;\r\n }\r\n slidesSizesGrid.push(slideSize);\r\n if (params.centeredSlides) {\r\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\r\n if (prevSlideSize === 0 && i !== 0)\r\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\r\n if (i === 0)\r\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\r\n if (Math.abs(slidePosition) < 1 / 1000)\r\n slidePosition = 0;\r\n if (params.roundLengths)\r\n slidePosition = Math.floor(slidePosition);\r\n if (index % params.slidesPerGroup === 0)\r\n snapGrid.push(slidePosition);\r\n slidesGrid.push(slidePosition);\r\n }\r\n else {\r\n if (params.roundLengths)\r\n slidePosition = Math.floor(slidePosition);\r\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0)\r\n snapGrid.push(slidePosition);\r\n slidesGrid.push(slidePosition);\r\n slidePosition = slidePosition + slideSize + spaceBetween;\r\n }\r\n swiper.virtualSize += slideSize + spaceBetween;\r\n prevSlideSize = slideSize;\r\n index += 1;\r\n }\r\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\r\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\r\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\r\n }\r\n if (params.setWrapperSize) {\r\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\r\n }\r\n if (gridEnabled) {\r\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\r\n }\r\n // Remove last grid elements depending on width\r\n if (!params.centeredSlides) {\r\n const newSlidesGrid = [];\r\n for (let i = 0; i < snapGrid.length; i += 1) {\r\n let slidesGridItem = snapGrid[i];\r\n if (params.roundLengths)\r\n slidesGridItem = Math.floor(slidesGridItem);\r\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\r\n newSlidesGrid.push(slidesGridItem);\r\n }\r\n }\r\n snapGrid = newSlidesGrid;\r\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\r\n snapGrid.push(swiper.virtualSize - swiperSize);\r\n }\r\n }\r\n if (isVirtual && params.loop) {\r\n const size = slidesSizesGrid[0] + spaceBetween;\r\n if (params.slidesPerGroup > 1) {\r\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\r\n const groupSize = size * params.slidesPerGroup;\r\n for (let i = 0; i < groups; i += 1) {\r\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\r\n }\r\n }\r\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\r\n if (params.slidesPerGroup === 1) {\r\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\r\n }\r\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\r\n swiper.virtualSize += size;\r\n }\r\n }\r\n if (snapGrid.length === 0)\r\n snapGrid = [0];\r\n if (spaceBetween !== 0) {\r\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\r\n slides.filter((_, slideIndex) => {\r\n if (!params.cssMode || params.loop)\r\n return true;\r\n if (slideIndex === slides.length - 1) {\r\n return false;\r\n }\r\n return true;\r\n }).forEach(slideEl => {\r\n slideEl.style[key] = `${spaceBetween}px`;\r\n });\r\n }\r\n if (params.centeredSlides && params.centeredSlidesBounds) {\r\n let allSlidesSize = 0;\r\n slidesSizesGrid.forEach(slideSizeValue => {\r\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\r\n });\r\n allSlidesSize -= spaceBetween;\r\n const maxSnap = allSlidesSize - swiperSize;\r\n snapGrid = snapGrid.map(snap => {\r\n if (snap <= 0)\r\n return -offsetBefore;\r\n if (snap > maxSnap)\r\n return maxSnap + offsetAfter;\r\n return snap;\r\n });\r\n }\r\n if (params.centerInsufficientSlides) {\r\n let allSlidesSize = 0;\r\n slidesSizesGrid.forEach(slideSizeValue => {\r\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\r\n });\r\n allSlidesSize -= spaceBetween;\r\n if (allSlidesSize < swiperSize) {\r\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\r\n snapGrid.forEach((snap, snapIndex) => {\r\n snapGrid[snapIndex] = snap - allSlidesOffset;\r\n });\r\n slidesGrid.forEach((snap, snapIndex) => {\r\n slidesGrid[snapIndex] = snap + allSlidesOffset;\r\n });\r\n }\r\n }\r\n Object.assign(swiper, {\r\n slides,\r\n snapGrid,\r\n slidesGrid,\r\n slidesSizesGrid\r\n });\r\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\r\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\r\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\r\n const addToSnapGrid = -swiper.snapGrid[0];\r\n const addToSlidesGrid = -swiper.slidesGrid[0];\r\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\r\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\r\n }\r\n if (slidesLength !== previousSlidesLength) {\r\n swiper.emit('slidesLengthChange');\r\n }\r\n if (snapGrid.length !== previousSnapGridLength) {\r\n if (swiper.params.watchOverflow)\r\n swiper.checkOverflow();\r\n swiper.emit('snapGridLengthChange');\r\n }\r\n if (slidesGrid.length !== previousSlidesGridLength) {\r\n swiper.emit('slidesGridLengthChange');\r\n }\r\n if (params.watchSlidesProgress) {\r\n swiper.updateSlidesOffset();\r\n }\r\n swiper.emit('slidesUpdated');\r\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\r\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\r\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\r\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\r\n if (!hasClassBackfaceClassAdded)\r\n swiper.el.classList.add(backFaceHiddenClass);\r\n }\r\n else if (hasClassBackfaceClassAdded) {\r\n swiper.el.classList.remove(backFaceHiddenClass);\r\n }\r\n }\r\n }\r\n function updateAutoHeight(speed) {\r\n const swiper = this;\r\n const activeSlides = [];\r\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\r\n let newHeight = 0;\r\n let i;\r\n if (typeof speed === 'number') {\r\n swiper.setTransition(speed);\r\n }\r\n else if (speed === true) {\r\n swiper.setTransition(swiper.params.speed);\r\n }\r\n const getSlideByIndex = index => {\r\n if (isVirtual) {\r\n return swiper.slides[swiper.getSlideIndexByData(index)];\r\n }\r\n return swiper.slides[index];\r\n };\r\n // Find slides currently in view\r\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\r\n if (swiper.params.centeredSlides) {\r\n (swiper.visibleSlides || []).forEach(slide => {\r\n activeSlides.push(slide);\r\n });\r\n }\r\n else {\r\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\r\n const index = swiper.activeIndex + i;\r\n if (index > swiper.slides.length && !isVirtual)\r\n break;\r\n activeSlides.push(getSlideByIndex(index));\r\n }\r\n }\r\n }\r\n else {\r\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\r\n }\r\n // Find new height from highest slide in view\r\n for (i = 0; i < activeSlides.length; i += 1) {\r\n if (typeof activeSlides[i] !== 'undefined') {\r\n const height = activeSlides[i].offsetHeight;\r\n newHeight = height > newHeight ? height : newHeight;\r\n }\r\n }\r\n // Update Height\r\n if (newHeight || newHeight === 0)\r\n swiper.wrapperEl.style.height = `${newHeight}px`;\r\n }\r\n function updateSlidesOffset() {\r\n const swiper = this;\r\n const slides = swiper.slides;\r\n // eslint-disable-next-line\r\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\r\n for (let i = 0; i < slides.length; i += 1) {\r\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\r\n }\r\n }\r\n function updateSlidesProgress(translate) {\r\n if (translate === void 0) {\r\n translate = this && this.translate || 0;\r\n }\r\n const swiper = this;\r\n const params = swiper.params;\r\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\r\n if (slides.length === 0)\r\n return;\r\n if (typeof slides[0].swiperSlideOffset === 'undefined')\r\n swiper.updateSlidesOffset();\r\n let offsetCenter = -translate;\r\n if (rtl)\r\n offsetCenter = translate;\r\n // Visible Slides\r\n slides.forEach(slideEl => {\r\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\r\n });\r\n swiper.visibleSlidesIndexes = [];\r\n swiper.visibleSlides = [];\r\n let spaceBetween = params.spaceBetween;\r\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\r\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\r\n }\r\n else if (typeof spaceBetween === 'string') {\r\n spaceBetween = parseFloat(spaceBetween);\r\n }\r\n for (let i = 0; i < slides.length; i += 1) {\r\n const slide = slides[i];\r\n let slideOffset = slide.swiperSlideOffset;\r\n if (params.cssMode && params.centeredSlides) {\r\n slideOffset -= slides[0].swiperSlideOffset;\r\n }\r\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\r\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\r\n const slideBefore = -(offsetCenter - slideOffset);\r\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\r\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\r\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\r\n if (isVisible) {\r\n swiper.visibleSlides.push(slide);\r\n swiper.visibleSlidesIndexes.push(i);\r\n slides[i].classList.add(params.slideVisibleClass);\r\n }\r\n if (isFullyVisible) {\r\n slides[i].classList.add(params.slideFullyVisibleClass);\r\n }\r\n slide.progress = rtl ? -slideProgress : slideProgress;\r\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\r\n }\r\n }\r\n function updateProgress(translate) {\r\n const swiper = this;\r\n if (typeof translate === 'undefined') {\r\n const multiplier = swiper.rtlTranslate ? -1 : 1;\r\n // eslint-disable-next-line\r\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\r\n }\r\n const params = swiper.params;\r\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\r\n let { progress, isBeginning, isEnd, progressLoop } = swiper;\r\n const wasBeginning = isBeginning;\r\n const wasEnd = isEnd;\r\n if (translatesDiff === 0) {\r\n progress = 0;\r\n isBeginning = true;\r\n isEnd = true;\r\n }\r\n else {\r\n progress = (translate - swiper.minTranslate()) / translatesDiff;\r\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\r\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\r\n isBeginning = isBeginningRounded || progress <= 0;\r\n isEnd = isEndRounded || progress >= 1;\r\n if (isBeginningRounded)\r\n progress = 0;\r\n if (isEndRounded)\r\n progress = 1;\r\n }\r\n if (params.loop) {\r\n const firstSlideIndex = swiper.getSlideIndexByData(0);\r\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\r\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\r\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\r\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\r\n const translateAbs = Math.abs(translate);\r\n if (translateAbs >= firstSlideTranslate) {\r\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\r\n }\r\n else {\r\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\r\n }\r\n if (progressLoop > 1)\r\n progressLoop -= 1;\r\n }\r\n Object.assign(swiper, {\r\n progress,\r\n progressLoop,\r\n isBeginning,\r\n isEnd\r\n });\r\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight)\r\n swiper.updateSlidesProgress(translate);\r\n if (isBeginning && !wasBeginning) {\r\n swiper.emit('reachBeginning toEdge');\r\n }\r\n if (isEnd && !wasEnd) {\r\n swiper.emit('reachEnd toEdge');\r\n }\r\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\r\n swiper.emit('fromEdge');\r\n }\r\n swiper.emit('progress', progress);\r\n }\r\n function updateSlidesClasses() {\r\n const swiper = this;\r\n const { slides, params, slidesEl, activeIndex } = swiper;\r\n const isVirtual = swiper.virtual && params.virtual.enabled;\r\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\r\n const getFilteredSlide = selector => {\r\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\r\n };\r\n slides.forEach(slideEl => {\r\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\r\n });\r\n let activeSlide;\r\n let prevSlide;\r\n let nextSlide;\r\n if (isVirtual) {\r\n if (params.loop) {\r\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\r\n if (slideIndex < 0)\r\n slideIndex = swiper.virtual.slides.length + slideIndex;\r\n if (slideIndex >= swiper.virtual.slides.length)\r\n slideIndex -= swiper.virtual.slides.length;\r\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\r\n }\r\n else {\r\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\r\n }\r\n }\r\n else {\r\n if (gridEnabled) {\r\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\r\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\r\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\r\n }\r\n else {\r\n activeSlide = slides[activeIndex];\r\n }\r\n }\r\n if (activeSlide) {\r\n // Active classes\r\n activeSlide.classList.add(params.slideActiveClass);\r\n if (gridEnabled) {\r\n if (nextSlide) {\r\n nextSlide.classList.add(params.slideNextClass);\r\n }\r\n if (prevSlide) {\r\n prevSlide.classList.add(params.slidePrevClass);\r\n }\r\n }\r\n else {\r\n // Next Slide\r\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\r\n if (params.loop && !nextSlide) {\r\n nextSlide = slides[0];\r\n }\r\n if (nextSlide) {\r\n nextSlide.classList.add(params.slideNextClass);\r\n }\r\n // Prev Slide\r\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\r\n if (params.loop && !prevSlide === 0) {\r\n prevSlide = slides[slides.length - 1];\r\n }\r\n if (prevSlide) {\r\n prevSlide.classList.add(params.slidePrevClass);\r\n }\r\n }\r\n }\r\n swiper.emitSlidesClasses();\r\n }\r\n const processLazyPreloader = (swiper, imageEl) => {\r\n if (!swiper || swiper.destroyed || !swiper.params)\r\n return;\r\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\r\n const slideEl = imageEl.closest(slideSelector());\r\n if (slideEl) {\r\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\r\n if (!lazyEl && swiper.isElement) {\r\n if (slideEl.shadowRoot) {\r\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\r\n }\r\n else {\r\n // init later\r\n requestAnimationFrame(() => {\r\n if (slideEl.shadowRoot) {\r\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\r\n if (lazyEl)\r\n lazyEl.remove();\r\n }\r\n });\r\n }\r\n }\r\n if (lazyEl)\r\n lazyEl.remove();\r\n }\r\n };\r\n const unlazy = (swiper, index) => {\r\n if (!swiper.slides[index])\r\n return;\r\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\r\n if (imageEl)\r\n imageEl.removeAttribute('loading');\r\n };\r\n const preload = swiper => {\r\n if (!swiper || swiper.destroyed || !swiper.params)\r\n return;\r\n let amount = swiper.params.lazyPreloadPrevNext;\r\n const len = swiper.slides.length;\r\n if (!len || !amount || amount < 0)\r\n return;\r\n amount = Math.min(amount, len);\r\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\r\n const activeIndex = swiper.activeIndex;\r\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\r\n const activeColumn = activeIndex;\r\n const preloadColumns = [activeColumn - amount];\r\n preloadColumns.push(...Array.from({\r\n length: amount\r\n }).map((_, i) => {\r\n return activeColumn + slidesPerView + i;\r\n }));\r\n swiper.slides.forEach((slideEl, i) => {\r\n if (preloadColumns.includes(slideEl.column))\r\n unlazy(swiper, i);\r\n });\r\n return;\r\n }\r\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\r\n if (swiper.params.rewind || swiper.params.loop) {\r\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\r\n const realIndex = (i % len + len) % len;\r\n if (realIndex < activeIndex || realIndex > slideIndexLastInView)\r\n unlazy(swiper, realIndex);\r\n }\r\n }\r\n else {\r\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\r\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\r\n unlazy(swiper, i);\r\n }\r\n }\r\n }\r\n };\r\n function getActiveIndexByTranslate(swiper) {\r\n const { slidesGrid, params } = swiper;\r\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\r\n let activeIndex;\r\n for (let i = 0; i < slidesGrid.length; i += 1) {\r\n if (typeof slidesGrid[i + 1] !== 'undefined') {\r\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\r\n activeIndex = i;\r\n }\r\n else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\r\n activeIndex = i + 1;\r\n }\r\n }\r\n else if (translate >= slidesGrid[i]) {\r\n activeIndex = i;\r\n }\r\n }\r\n // Normalize slideIndex\r\n if (params.normalizeSlideIndex) {\r\n if (activeIndex < 0 || typeof activeIndex === 'undefined')\r\n activeIndex = 0;\r\n }\r\n return activeIndex;\r\n }\r\n function updateActiveIndex(newActiveIndex) {\r\n const swiper = this;\r\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\r\n const { snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex } = swiper;\r\n let activeIndex = newActiveIndex;\r\n let snapIndex;\r\n const getVirtualRealIndex = aIndex => {\r\n let realIndex = aIndex - swiper.virtual.slidesBefore;\r\n if (realIndex < 0) {\r\n realIndex = swiper.virtual.slides.length + realIndex;\r\n }\r\n if (realIndex >= swiper.virtual.slides.length) {\r\n realIndex -= swiper.virtual.slides.length;\r\n }\r\n return realIndex;\r\n };\r\n if (typeof activeIndex === 'undefined') {\r\n activeIndex = getActiveIndexByTranslate(swiper);\r\n }\r\n if (snapGrid.indexOf(translate) >= 0) {\r\n snapIndex = snapGrid.indexOf(translate);\r\n }\r\n else {\r\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\r\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\r\n }\r\n if (snapIndex >= snapGrid.length)\r\n snapIndex = snapGrid.length - 1;\r\n if (activeIndex === previousIndex && !swiper.params.loop) {\r\n if (snapIndex !== previousSnapIndex) {\r\n swiper.snapIndex = snapIndex;\r\n swiper.emit('snapIndexChange');\r\n }\r\n return;\r\n }\r\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\r\n swiper.realIndex = getVirtualRealIndex(activeIndex);\r\n return;\r\n }\r\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\r\n // Get real index\r\n let realIndex;\r\n if (swiper.virtual && params.virtual.enabled && params.loop) {\r\n realIndex = getVirtualRealIndex(activeIndex);\r\n }\r\n else if (gridEnabled) {\r\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\r\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\r\n if (Number.isNaN(activeSlideIndex)) {\r\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\r\n }\r\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\r\n }\r\n else if (swiper.slides[activeIndex]) {\r\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\r\n if (slideIndex) {\r\n realIndex = parseInt(slideIndex, 10);\r\n }\r\n else {\r\n realIndex = activeIndex;\r\n }\r\n }\r\n else {\r\n realIndex = activeIndex;\r\n }\r\n Object.assign(swiper, {\r\n previousSnapIndex,\r\n snapIndex,\r\n previousRealIndex,\r\n realIndex,\r\n previousIndex,\r\n activeIndex\r\n });\r\n if (swiper.initialized) {\r\n preload(swiper);\r\n }\r\n swiper.emit('activeIndexChange');\r\n swiper.emit('snapIndexChange');\r\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\r\n if (previousRealIndex !== realIndex) {\r\n swiper.emit('realIndexChange');\r\n }\r\n swiper.emit('slideChange');\r\n }\r\n }\r\n function updateClickedSlide(el, path) {\r\n const swiper = this;\r\n const params = swiper.params;\r\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\r\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\r\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\r\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\r\n slide = pathEl;\r\n }\r\n });\r\n }\r\n let slideFound = false;\r\n let slideIndex;\r\n if (slide) {\r\n for (let i = 0; i < swiper.slides.length; i += 1) {\r\n if (swiper.slides[i] === slide) {\r\n slideFound = true;\r\n slideIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n if (slide && slideFound) {\r\n swiper.clickedSlide = slide;\r\n if (swiper.virtual && swiper.params.virtual.enabled) {\r\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\r\n }\r\n else {\r\n swiper.clickedIndex = slideIndex;\r\n }\r\n }\r\n else {\r\n swiper.clickedSlide = undefined;\r\n swiper.clickedIndex = undefined;\r\n return;\r\n }\r\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\r\n swiper.slideToClickedSlide();\r\n }\r\n }\r\n var update = {\r\n updateSize,\r\n updateSlides,\r\n updateAutoHeight,\r\n updateSlidesOffset,\r\n updateSlidesProgress,\r\n updateProgress,\r\n updateSlidesClasses,\r\n updateActiveIndex,\r\n updateClickedSlide\r\n };\r\n function getSwiperTranslate(axis) {\r\n if (axis === void 0) {\r\n axis = this.isHorizontal() ? 'x' : 'y';\r\n }\r\n const swiper = this;\r\n const { params, rtlTranslate: rtl, translate, wrapperEl } = swiper;\r\n if (params.virtualTranslate) {\r\n return rtl ? -translate : translate;\r\n }\r\n if (params.cssMode) {\r\n return translate;\r\n }\r\n let currentTranslate = getTranslate(wrapperEl, axis);\r\n currentTranslate += swiper.cssOverflowAdjustment();\r\n if (rtl)\r\n currentTranslate = -currentTranslate;\r\n return currentTranslate || 0;\r\n }\r\n function setTranslate(translate, byController) {\r\n const swiper = this;\r\n const { rtlTranslate: rtl, params, wrapperEl, progress } = swiper;\r\n let x = 0;\r\n let y = 0;\r\n const z = 0;\r\n if (swiper.isHorizontal()) {\r\n x = rtl ? -translate : translate;\r\n }\r\n else {\r\n y = translate;\r\n }\r\n if (params.roundLengths) {\r\n x = Math.floor(x);\r\n y = Math.floor(y);\r\n }\r\n swiper.previousTranslate = swiper.translate;\r\n swiper.translate = swiper.isHorizontal() ? x : y;\r\n if (params.cssMode) {\r\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\r\n }\r\n else if (!params.virtualTranslate) {\r\n if (swiper.isHorizontal()) {\r\n x -= swiper.cssOverflowAdjustment();\r\n }\r\n else {\r\n y -= swiper.cssOverflowAdjustment();\r\n }\r\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\r\n }\r\n // Check if we need to update progress\r\n let newProgress;\r\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\r\n if (translatesDiff === 0) {\r\n newProgress = 0;\r\n }\r\n else {\r\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\r\n }\r\n if (newProgress !== progress) {\r\n swiper.updateProgress(translate);\r\n }\r\n swiper.emit('setTranslate', swiper.translate, byController);\r\n }\r\n function minTranslate() {\r\n return -this.snapGrid[0];\r\n }\r\n function maxTranslate() {\r\n return -this.snapGrid[this.snapGrid.length - 1];\r\n }\r\n function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\r\n if (translate === void 0) {\r\n translate = 0;\r\n }\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n if (translateBounds === void 0) {\r\n translateBounds = true;\r\n }\r\n const swiper = this;\r\n const { params, wrapperEl } = swiper;\r\n if (swiper.animating && params.preventInteractionOnTransition) {\r\n return false;\r\n }\r\n const minTranslate = swiper.minTranslate();\r\n const maxTranslate = swiper.maxTranslate();\r\n let newTranslate;\r\n if (translateBounds && translate > minTranslate)\r\n newTranslate = minTranslate;\r\n else if (translateBounds && translate < maxTranslate)\r\n newTranslate = maxTranslate;\r\n else\r\n newTranslate = translate;\r\n // Update progress\r\n swiper.updateProgress(newTranslate);\r\n if (params.cssMode) {\r\n const isH = swiper.isHorizontal();\r\n if (speed === 0) {\r\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\r\n }\r\n else {\r\n if (!swiper.support.smoothScroll) {\r\n animateCSSModeScroll({\r\n swiper,\r\n targetPosition: -newTranslate,\r\n side: isH ? 'left' : 'top'\r\n });\r\n return true;\r\n }\r\n wrapperEl.scrollTo({\r\n [isH ? 'left' : 'top']: -newTranslate,\r\n behavior: 'smooth'\r\n });\r\n }\r\n return true;\r\n }\r\n if (speed === 0) {\r\n swiper.setTransition(0);\r\n swiper.setTranslate(newTranslate);\r\n if (runCallbacks) {\r\n swiper.emit('beforeTransitionStart', speed, internal);\r\n swiper.emit('transitionEnd');\r\n }\r\n }\r\n else {\r\n swiper.setTransition(speed);\r\n swiper.setTranslate(newTranslate);\r\n if (runCallbacks) {\r\n swiper.emit('beforeTransitionStart', speed, internal);\r\n swiper.emit('transitionStart');\r\n }\r\n if (!swiper.animating) {\r\n swiper.animating = true;\r\n if (!swiper.onTranslateToWrapperTransitionEnd) {\r\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\r\n if (!swiper || swiper.destroyed)\r\n return;\r\n if (e.target !== this)\r\n return;\r\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\r\n swiper.onTranslateToWrapperTransitionEnd = null;\r\n delete swiper.onTranslateToWrapperTransitionEnd;\r\n if (runCallbacks) {\r\n swiper.emit('transitionEnd');\r\n }\r\n };\r\n }\r\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\r\n }\r\n }\r\n return true;\r\n }\r\n var translate = {\r\n getTranslate: getSwiperTranslate,\r\n setTranslate,\r\n minTranslate,\r\n maxTranslate,\r\n translateTo\r\n };\r\n function setTransition(duration, byController) {\r\n const swiper = this;\r\n if (!swiper.params.cssMode) {\r\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\r\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\r\n }\r\n swiper.emit('setTransition', duration, byController);\r\n }\r\n function transitionEmit(_ref) {\r\n let { swiper, runCallbacks, direction, step } = _ref;\r\n const { activeIndex, previousIndex } = swiper;\r\n let dir = direction;\r\n if (!dir) {\r\n if (activeIndex > previousIndex)\r\n dir = 'next';\r\n else if (activeIndex < previousIndex)\r\n dir = 'prev';\r\n else\r\n dir = 'reset';\r\n }\r\n swiper.emit(`transition${step}`);\r\n if (runCallbacks && activeIndex !== previousIndex) {\r\n if (dir === 'reset') {\r\n swiper.emit(`slideResetTransition${step}`);\r\n return;\r\n }\r\n swiper.emit(`slideChangeTransition${step}`);\r\n if (dir === 'next') {\r\n swiper.emit(`slideNextTransition${step}`);\r\n }\r\n else {\r\n swiper.emit(`slidePrevTransition${step}`);\r\n }\r\n }\r\n }\r\n function transitionStart(runCallbacks, direction) {\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n const swiper = this;\r\n const { params } = swiper;\r\n if (params.cssMode)\r\n return;\r\n if (params.autoHeight) {\r\n swiper.updateAutoHeight();\r\n }\r\n transitionEmit({\r\n swiper,\r\n runCallbacks,\r\n direction,\r\n step: 'Start'\r\n });\r\n }\r\n function transitionEnd(runCallbacks, direction) {\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n const swiper = this;\r\n const { params } = swiper;\r\n swiper.animating = false;\r\n if (params.cssMode)\r\n return;\r\n swiper.setTransition(0);\r\n transitionEmit({\r\n swiper,\r\n runCallbacks,\r\n direction,\r\n step: 'End'\r\n });\r\n }\r\n var transition = {\r\n setTransition,\r\n transitionStart,\r\n transitionEnd\r\n };\r\n function slideTo(index, speed, runCallbacks, internal, initial) {\r\n if (index === void 0) {\r\n index = 0;\r\n }\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n if (typeof index === 'string') {\r\n index = parseInt(index, 10);\r\n }\r\n const swiper = this;\r\n let slideIndex = index;\r\n if (slideIndex < 0)\r\n slideIndex = 0;\r\n const { params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl, enabled } = swiper;\r\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) {\r\n return false;\r\n }\r\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\r\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\r\n if (snapIndex >= snapGrid.length)\r\n snapIndex = snapGrid.length - 1;\r\n const translate = -snapGrid[snapIndex];\r\n // Normalize slideIndex\r\n if (params.normalizeSlideIndex) {\r\n for (let i = 0; i < slidesGrid.length; i += 1) {\r\n const normalizedTranslate = -Math.floor(translate * 100);\r\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\r\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\r\n if (typeof slidesGrid[i + 1] !== 'undefined') {\r\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\r\n slideIndex = i;\r\n }\r\n else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\r\n slideIndex = i + 1;\r\n }\r\n }\r\n else if (normalizedTranslate >= normalizedGrid) {\r\n slideIndex = i;\r\n }\r\n }\r\n }\r\n // Directions locks\r\n if (swiper.initialized && slideIndex !== activeIndex) {\r\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\r\n return false;\r\n }\r\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\r\n if ((activeIndex || 0) !== slideIndex) {\r\n return false;\r\n }\r\n }\r\n }\r\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\r\n swiper.emit('beforeSlideChangeStart');\r\n }\r\n // Update progress\r\n swiper.updateProgress(translate);\r\n let direction;\r\n if (slideIndex > activeIndex)\r\n direction = 'next';\r\n else if (slideIndex < activeIndex)\r\n direction = 'prev';\r\n else\r\n direction = 'reset';\r\n // Update Index\r\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\r\n swiper.updateActiveIndex(slideIndex);\r\n // Update Height\r\n if (params.autoHeight) {\r\n swiper.updateAutoHeight();\r\n }\r\n swiper.updateSlidesClasses();\r\n if (params.effect !== 'slide') {\r\n swiper.setTranslate(translate);\r\n }\r\n if (direction !== 'reset') {\r\n swiper.transitionStart(runCallbacks, direction);\r\n swiper.transitionEnd(runCallbacks, direction);\r\n }\r\n return false;\r\n }\r\n if (params.cssMode) {\r\n const isH = swiper.isHorizontal();\r\n const t = rtl ? translate : -translate;\r\n if (speed === 0) {\r\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\r\n if (isVirtual) {\r\n swiper.wrapperEl.style.scrollSnapType = 'none';\r\n swiper._immediateVirtual = true;\r\n }\r\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\r\n swiper._cssModeVirtualInitialSet = true;\r\n requestAnimationFrame(() => {\r\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\r\n });\r\n }\r\n else {\r\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\r\n }\r\n if (isVirtual) {\r\n requestAnimationFrame(() => {\r\n swiper.wrapperEl.style.scrollSnapType = '';\r\n swiper._immediateVirtual = false;\r\n });\r\n }\r\n }\r\n else {\r\n if (!swiper.support.smoothScroll) {\r\n animateCSSModeScroll({\r\n swiper,\r\n targetPosition: t,\r\n side: isH ? 'left' : 'top'\r\n });\r\n return true;\r\n }\r\n wrapperEl.scrollTo({\r\n [isH ? 'left' : 'top']: t,\r\n behavior: 'smooth'\r\n });\r\n }\r\n return true;\r\n }\r\n swiper.setTransition(speed);\r\n swiper.setTranslate(translate);\r\n swiper.updateActiveIndex(slideIndex);\r\n swiper.updateSlidesClasses();\r\n swiper.emit('beforeTransitionStart', speed, internal);\r\n swiper.transitionStart(runCallbacks, direction);\r\n if (speed === 0) {\r\n swiper.transitionEnd(runCallbacks, direction);\r\n }\r\n else if (!swiper.animating) {\r\n swiper.animating = true;\r\n if (!swiper.onSlideToWrapperTransitionEnd) {\r\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\r\n if (!swiper || swiper.destroyed)\r\n return;\r\n if (e.target !== this)\r\n return;\r\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\r\n swiper.onSlideToWrapperTransitionEnd = null;\r\n delete swiper.onSlideToWrapperTransitionEnd;\r\n swiper.transitionEnd(runCallbacks, direction);\r\n };\r\n }\r\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\r\n }\r\n return true;\r\n }\r\n function slideToLoop(index, speed, runCallbacks, internal) {\r\n if (index === void 0) {\r\n index = 0;\r\n }\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n if (typeof index === 'string') {\r\n const indexAsNumber = parseInt(index, 10);\r\n index = indexAsNumber;\r\n }\r\n const swiper = this;\r\n if (swiper.destroyed)\r\n return;\r\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\r\n let newIndex = index;\r\n if (swiper.params.loop) {\r\n if (swiper.virtual && swiper.params.virtual.enabled) {\r\n // eslint-disable-next-line\r\n newIndex = newIndex + swiper.virtual.slidesBefore;\r\n }\r\n else {\r\n let targetSlideIndex;\r\n if (gridEnabled) {\r\n const slideIndex = newIndex * swiper.params.grid.rows;\r\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\r\n }\r\n else {\r\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\r\n }\r\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\r\n const { centeredSlides } = swiper.params;\r\n let slidesPerView = swiper.params.slidesPerView;\r\n if (slidesPerView === 'auto') {\r\n slidesPerView = swiper.slidesPerViewDynamic();\r\n }\r\n else {\r\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\r\n if (centeredSlides && slidesPerView % 2 === 0) {\r\n slidesPerView = slidesPerView + 1;\r\n }\r\n }\r\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\r\n if (centeredSlides) {\r\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\r\n }\r\n if (needLoopFix) {\r\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\r\n swiper.loopFix({\r\n direction,\r\n slideTo: true,\r\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\r\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\r\n });\r\n }\r\n if (gridEnabled) {\r\n const slideIndex = newIndex * swiper.params.grid.rows;\r\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\r\n }\r\n else {\r\n newIndex = swiper.getSlideIndexByData(newIndex);\r\n }\r\n }\r\n }\r\n requestAnimationFrame(() => {\r\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\r\n });\r\n return swiper;\r\n }\r\n /* eslint no-unused-vars: \"off\" */\r\n function slideNext(speed, runCallbacks, internal) {\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n const swiper = this;\r\n const { enabled, params, animating } = swiper;\r\n if (!enabled || swiper.destroyed)\r\n return swiper;\r\n let perGroup = params.slidesPerGroup;\r\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\r\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\r\n }\r\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\r\n const isVirtual = swiper.virtual && params.virtual.enabled;\r\n if (params.loop) {\r\n if (animating && !isVirtual && params.loopPreventsSliding)\r\n return false;\r\n swiper.loopFix({\r\n direction: 'next'\r\n });\r\n // eslint-disable-next-line\r\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\r\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\r\n requestAnimationFrame(() => {\r\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\r\n });\r\n return true;\r\n }\r\n }\r\n if (params.rewind && swiper.isEnd) {\r\n return swiper.slideTo(0, speed, runCallbacks, internal);\r\n }\r\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\r\n }\r\n /* eslint no-unused-vars: \"off\" */\r\n function slidePrev(speed, runCallbacks, internal) {\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n const swiper = this;\r\n const { params, snapGrid, slidesGrid, rtlTranslate, enabled, animating } = swiper;\r\n if (!enabled || swiper.destroyed)\r\n return swiper;\r\n const isVirtual = swiper.virtual && params.virtual.enabled;\r\n if (params.loop) {\r\n if (animating && !isVirtual && params.loopPreventsSliding)\r\n return false;\r\n swiper.loopFix({\r\n direction: 'prev'\r\n });\r\n // eslint-disable-next-line\r\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\r\n }\r\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\r\n function normalize(val) {\r\n if (val < 0)\r\n return -Math.floor(Math.abs(val));\r\n return Math.floor(val);\r\n }\r\n const normalizedTranslate = normalize(translate);\r\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\r\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\r\n if (typeof prevSnap === 'undefined' && params.cssMode) {\r\n let prevSnapIndex;\r\n snapGrid.forEach((snap, snapIndex) => {\r\n if (normalizedTranslate >= snap) {\r\n // prevSnap = snap;\r\n prevSnapIndex = snapIndex;\r\n }\r\n });\r\n if (typeof prevSnapIndex !== 'undefined') {\r\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\r\n }\r\n }\r\n let prevIndex = 0;\r\n if (typeof prevSnap !== 'undefined') {\r\n prevIndex = slidesGrid.indexOf(prevSnap);\r\n if (prevIndex < 0)\r\n prevIndex = swiper.activeIndex - 1;\r\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\r\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\r\n prevIndex = Math.max(prevIndex, 0);\r\n }\r\n }\r\n if (params.rewind && swiper.isBeginning) {\r\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\r\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\r\n }\r\n else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\r\n requestAnimationFrame(() => {\r\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\r\n });\r\n return true;\r\n }\r\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\r\n }\r\n /* eslint no-unused-vars: \"off\" */\r\n function slideReset(speed, runCallbacks, internal) {\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n const swiper = this;\r\n if (swiper.destroyed)\r\n return;\r\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\r\n }\r\n /* eslint no-unused-vars: \"off\" */\r\n function slideToClosest(speed, runCallbacks, internal, threshold) {\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n if (threshold === void 0) {\r\n threshold = 0.5;\r\n }\r\n const swiper = this;\r\n if (swiper.destroyed)\r\n return;\r\n let index = swiper.activeIndex;\r\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\r\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\r\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\r\n if (translate >= swiper.snapGrid[snapIndex]) {\r\n // The current translate is on or after the current snap index, so the choice\r\n // is between the current index and the one after it.\r\n const currentSnap = swiper.snapGrid[snapIndex];\r\n const nextSnap = swiper.snapGrid[snapIndex + 1];\r\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\r\n index += swiper.params.slidesPerGroup;\r\n }\r\n }\r\n else {\r\n // The current translate is before the current snap index, so the choice\r\n // is between the current index and the one before it.\r\n const prevSnap = swiper.snapGrid[snapIndex - 1];\r\n const currentSnap = swiper.snapGrid[snapIndex];\r\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\r\n index -= swiper.params.slidesPerGroup;\r\n }\r\n }\r\n index = Math.max(index, 0);\r\n index = Math.min(index, swiper.slidesGrid.length - 1);\r\n return swiper.slideTo(index, speed, runCallbacks, internal);\r\n }\r\n function slideToClickedSlide() {\r\n const swiper = this;\r\n if (swiper.destroyed)\r\n return;\r\n const { params, slidesEl } = swiper;\r\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\r\n let slideToIndex = swiper.clickedIndex;\r\n let realIndex;\r\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\r\n if (params.loop) {\r\n if (swiper.animating)\r\n return;\r\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\r\n if (params.centeredSlides) {\r\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\r\n swiper.loopFix();\r\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\r\n nextTick(() => {\r\n swiper.slideTo(slideToIndex);\r\n });\r\n }\r\n else {\r\n swiper.slideTo(slideToIndex);\r\n }\r\n }\r\n else if (slideToIndex > swiper.slides.length - slidesPerView) {\r\n swiper.loopFix();\r\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\r\n nextTick(() => {\r\n swiper.slideTo(slideToIndex);\r\n });\r\n }\r\n else {\r\n swiper.slideTo(slideToIndex);\r\n }\r\n }\r\n else {\r\n swiper.slideTo(slideToIndex);\r\n }\r\n }\r\n var slide = {\r\n slideTo,\r\n slideToLoop,\r\n slideNext,\r\n slidePrev,\r\n slideReset,\r\n slideToClosest,\r\n slideToClickedSlide\r\n };\r\n function loopCreate(slideRealIndex) {\r\n const swiper = this;\r\n const { params, slidesEl } = swiper;\r\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled)\r\n return;\r\n const initSlides = () => {\r\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\r\n slides.forEach((el, index) => {\r\n el.setAttribute('data-swiper-slide-index', index);\r\n });\r\n };\r\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\r\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\r\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\r\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\r\n const addBlankSlides = amountOfSlides => {\r\n for (let i = 0; i < amountOfSlides; i += 1) {\r\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\r\n swiper.slidesEl.append(slideEl);\r\n }\r\n };\r\n if (shouldFillGroup) {\r\n if (params.loopAddBlankSlides) {\r\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\r\n addBlankSlides(slidesToAdd);\r\n swiper.recalcSlides();\r\n swiper.updateSlides();\r\n }\r\n else {\r\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)');\r\n }\r\n initSlides();\r\n }\r\n else if (shouldFillGrid) {\r\n if (params.loopAddBlankSlides) {\r\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\r\n addBlankSlides(slidesToAdd);\r\n swiper.recalcSlides();\r\n swiper.updateSlides();\r\n }\r\n else {\r\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)');\r\n }\r\n initSlides();\r\n }\r\n else {\r\n initSlides();\r\n }\r\n swiper.loopFix({\r\n slideRealIndex,\r\n direction: params.centeredSlides ? undefined : 'next'\r\n });\r\n }\r\n function loopFix(_temp) {\r\n let { slideRealIndex, slideTo = true, direction, setTranslate, activeSlideIndex, byController, byMousewheel } = _temp === void 0 ? {} : _temp;\r\n const swiper = this;\r\n if (!swiper.params.loop)\r\n return;\r\n swiper.emit('beforeLoopFix');\r\n const { slides, allowSlidePrev, allowSlideNext, slidesEl, params } = swiper;\r\n const { centeredSlides } = params;\r\n swiper.allowSlidePrev = true;\r\n swiper.allowSlideNext = true;\r\n if (swiper.virtual && params.virtual.enabled) {\r\n if (slideTo) {\r\n if (!params.centeredSlides && swiper.snapIndex === 0) {\r\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\r\n }\r\n else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\r\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\r\n }\r\n else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\r\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\r\n }\r\n }\r\n swiper.allowSlidePrev = allowSlidePrev;\r\n swiper.allowSlideNext = allowSlideNext;\r\n swiper.emit('loopFix');\r\n return;\r\n }\r\n let slidesPerView = params.slidesPerView;\r\n if (slidesPerView === 'auto') {\r\n slidesPerView = swiper.slidesPerViewDynamic();\r\n }\r\n else {\r\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\r\n if (centeredSlides && slidesPerView % 2 === 0) {\r\n slidesPerView = slidesPerView + 1;\r\n }\r\n }\r\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\r\n let loopedSlides = slidesPerGroup;\r\n if (loopedSlides % slidesPerGroup !== 0) {\r\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\r\n }\r\n loopedSlides += params.loopAdditionalSlides;\r\n swiper.loopedSlides = loopedSlides;\r\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\r\n if (slides.length < slidesPerView + loopedSlides) {\r\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');\r\n }\r\n else if (gridEnabled && params.grid.fill === 'row') {\r\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\r\n }\r\n const prependSlidesIndexes = [];\r\n const appendSlidesIndexes = [];\r\n let activeIndex = swiper.activeIndex;\r\n if (typeof activeSlideIndex === 'undefined') {\r\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\r\n }\r\n else {\r\n activeIndex = activeSlideIndex;\r\n }\r\n const isNext = direction === 'next' || !direction;\r\n const isPrev = direction === 'prev' || !direction;\r\n let slidesPrepended = 0;\r\n let slidesAppended = 0;\r\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\r\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\r\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\r\n // prepend last slides before start\r\n if (activeColIndexWithShift < loopedSlides) {\r\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\r\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\r\n const index = i - Math.floor(i / cols) * cols;\r\n if (gridEnabled) {\r\n const colIndexToPrepend = cols - index - 1;\r\n for (let i = slides.length - 1; i >= 0; i -= 1) {\r\n if (slides[i].column === colIndexToPrepend)\r\n prependSlidesIndexes.push(i);\r\n }\r\n // slides.forEach((slide, slideIndex) => {\r\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\r\n // });\r\n }\r\n else {\r\n prependSlidesIndexes.push(cols - index - 1);\r\n }\r\n }\r\n }\r\n else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\r\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\r\n for (let i = 0; i < slidesAppended; i += 1) {\r\n const index = i - Math.floor(i / cols) * cols;\r\n if (gridEnabled) {\r\n slides.forEach((slide, slideIndex) => {\r\n if (slide.column === index)\r\n appendSlidesIndexes.push(slideIndex);\r\n });\r\n }\r\n else {\r\n appendSlidesIndexes.push(index);\r\n }\r\n }\r\n }\r\n swiper.__preventObserver__ = true;\r\n requestAnimationFrame(() => {\r\n swiper.__preventObserver__ = false;\r\n });\r\n if (isPrev) {\r\n prependSlidesIndexes.forEach(index => {\r\n slides[index].swiperLoopMoveDOM = true;\r\n slidesEl.prepend(slides[index]);\r\n slides[index].swiperLoopMoveDOM = false;\r\n });\r\n }\r\n if (isNext) {\r\n appendSlidesIndexes.forEach(index => {\r\n slides[index].swiperLoopMoveDOM = true;\r\n slidesEl.append(slides[index]);\r\n slides[index].swiperLoopMoveDOM = false;\r\n });\r\n }\r\n swiper.recalcSlides();\r\n if (params.slidesPerView === 'auto') {\r\n swiper.updateSlides();\r\n }\r\n else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\r\n swiper.slides.forEach((slide, slideIndex) => {\r\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\r\n });\r\n }\r\n if (params.watchSlidesProgress) {\r\n swiper.updateSlidesOffset();\r\n }\r\n if (slideTo) {\r\n if (prependSlidesIndexes.length > 0 && isPrev) {\r\n if (typeof slideRealIndex === 'undefined') {\r\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\r\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\r\n const diff = newSlideTranslate - currentSlideTranslate;\r\n if (byMousewheel) {\r\n swiper.setTranslate(swiper.translate - diff);\r\n }\r\n else {\r\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\r\n if (setTranslate) {\r\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\r\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\r\n }\r\n }\r\n }\r\n else {\r\n if (setTranslate) {\r\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\r\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\r\n swiper.touchEventsData.currentTranslate = swiper.translate;\r\n }\r\n }\r\n }\r\n else if (appendSlidesIndexes.length > 0 && isNext) {\r\n if (typeof slideRealIndex === 'undefined') {\r\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\r\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\r\n const diff = newSlideTranslate - currentSlideTranslate;\r\n if (byMousewheel) {\r\n swiper.setTranslate(swiper.translate - diff);\r\n }\r\n else {\r\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\r\n if (setTranslate) {\r\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\r\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\r\n }\r\n }\r\n }\r\n else {\r\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\r\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\r\n }\r\n }\r\n }\r\n swiper.allowSlidePrev = allowSlidePrev;\r\n swiper.allowSlideNext = allowSlideNext;\r\n if (swiper.controller && swiper.controller.control && !byController) {\r\n const loopParams = {\r\n slideRealIndex,\r\n direction,\r\n setTranslate,\r\n activeSlideIndex,\r\n byController: true\r\n };\r\n if (Array.isArray(swiper.controller.control)) {\r\n swiper.controller.control.forEach(c => {\r\n if (!c.destroyed && c.params.loop)\r\n c.loopFix({\r\n ...loopParams,\r\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\r\n });\r\n });\r\n }\r\n else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\r\n swiper.controller.control.loopFix({\r\n ...loopParams,\r\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\r\n });\r\n }\r\n }\r\n swiper.emit('loopFix');\r\n }\r\n function loopDestroy() {\r\n const swiper = this;\r\n const { params, slidesEl } = swiper;\r\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled)\r\n return;\r\n swiper.recalcSlides();\r\n const newSlidesOrder = [];\r\n swiper.slides.forEach(slideEl => {\r\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\r\n newSlidesOrder[index] = slideEl;\r\n });\r\n swiper.slides.forEach(slideEl => {\r\n slideEl.removeAttribute('data-swiper-slide-index');\r\n });\r\n newSlidesOrder.forEach(slideEl => {\r\n slidesEl.append(slideEl);\r\n });\r\n swiper.recalcSlides();\r\n swiper.slideTo(swiper.realIndex, 0);\r\n }\r\n var loop = {\r\n loopCreate,\r\n loopFix,\r\n loopDestroy\r\n };\r\n function setGrabCursor(moving) {\r\n const swiper = this;\r\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode)\r\n return;\r\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\r\n if (swiper.isElement) {\r\n swiper.__preventObserver__ = true;\r\n }\r\n el.style.cursor = 'move';\r\n el.style.cursor = moving ? 'grabbing' : 'grab';\r\n if (swiper.isElement) {\r\n requestAnimationFrame(() => {\r\n swiper.__preventObserver__ = false;\r\n });\r\n }\r\n }\r\n function unsetGrabCursor() {\r\n const swiper = this;\r\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\r\n return;\r\n }\r\n if (swiper.isElement) {\r\n swiper.__preventObserver__ = true;\r\n }\r\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\r\n if (swiper.isElement) {\r\n requestAnimationFrame(() => {\r\n swiper.__preventObserver__ = false;\r\n });\r\n }\r\n }\r\n var grabCursor = {\r\n setGrabCursor,\r\n unsetGrabCursor\r\n };\r\n // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\r\n function closestElement(selector, base) {\r\n if (base === void 0) {\r\n base = this;\r\n }\r\n function __closestFrom(el) {\r\n if (!el || el === getDocument() || el === getWindow())\r\n return null;\r\n if (el.assignedSlot)\r\n el = el.assignedSlot;\r\n const found = el.closest(selector);\r\n if (!found && !el.getRootNode) {\r\n return null;\r\n }\r\n return found || __closestFrom(el.getRootNode().host);\r\n }\r\n return __closestFrom(base);\r\n }\r\n function preventEdgeSwipe(swiper, event, startX) {\r\n const window = getWindow();\r\n const { params } = swiper;\r\n const edgeSwipeDetection = params.edgeSwipeDetection;\r\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\r\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\r\n if (edgeSwipeDetection === 'prevent') {\r\n event.preventDefault();\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n function onTouchStart(event) {\r\n const swiper = this;\r\n const document = getDocument();\r\n let e = event;\r\n if (e.originalEvent)\r\n e = e.originalEvent;\r\n const data = swiper.touchEventsData;\r\n if (e.type === 'pointerdown') {\r\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\r\n return;\r\n }\r\n data.pointerId = e.pointerId;\r\n }\r\n else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\r\n data.touchId = e.targetTouches[0].identifier;\r\n }\r\n if (e.type === 'touchstart') {\r\n // don't proceed touch event\r\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\r\n return;\r\n }\r\n const { params, touches, enabled } = swiper;\r\n if (!enabled)\r\n return;\r\n if (!params.simulateTouch && e.pointerType === 'mouse')\r\n return;\r\n if (swiper.animating && params.preventInteractionOnTransition) {\r\n return;\r\n }\r\n if (!swiper.animating && params.cssMode && params.loop) {\r\n swiper.loopFix();\r\n }\r\n let targetEl = e.target;\r\n if (params.touchEventsTarget === 'wrapper') {\r\n if (!swiper.wrapperEl.contains(targetEl))\r\n return;\r\n }\r\n if ('which' in e && e.which === 3)\r\n return;\r\n if ('button' in e && e.button > 0)\r\n return;\r\n if (data.isTouched && data.isMoved)\r\n return;\r\n // change target el for shadow root component\r\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\r\n // eslint-disable-next-line\r\n const eventPath = e.composedPath ? e.composedPath() : e.path;\r\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\r\n targetEl = eventPath[0];\r\n }\r\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\r\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\r\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\r\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\r\n swiper.allowClick = true;\r\n return;\r\n }\r\n if (params.swipeHandler) {\r\n if (!targetEl.closest(params.swipeHandler))\r\n return;\r\n }\r\n touches.currentX = e.pageX;\r\n touches.currentY = e.pageY;\r\n const startX = touches.currentX;\r\n const startY = touches.currentY;\r\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\r\n if (!preventEdgeSwipe(swiper, e, startX)) {\r\n return;\r\n }\r\n Object.assign(data, {\r\n isTouched: true,\r\n isMoved: false,\r\n allowTouchCallbacks: true,\r\n isScrolling: undefined,\r\n startMoving: undefined\r\n });\r\n touches.startX = startX;\r\n touches.startY = startY;\r\n data.touchStartTime = now();\r\n swiper.allowClick = true;\r\n swiper.updateSize();\r\n swiper.swipeDirection = undefined;\r\n if (params.threshold > 0)\r\n data.allowThresholdMove = false;\r\n let preventDefault = true;\r\n if (targetEl.matches(data.focusableElements)) {\r\n preventDefault = false;\r\n if (targetEl.nodeName === 'SELECT') {\r\n data.isTouched = false;\r\n }\r\n }\r\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\r\n document.activeElement.blur();\r\n }\r\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\r\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\r\n e.preventDefault();\r\n }\r\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\r\n swiper.freeMode.onTouchStart();\r\n }\r\n swiper.emit('touchStart', e);\r\n }\r\n function onTouchMove(event) {\r\n const document = getDocument();\r\n const swiper = this;\r\n const data = swiper.touchEventsData;\r\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\r\n if (!enabled)\r\n return;\r\n if (!params.simulateTouch && event.pointerType === 'mouse')\r\n return;\r\n let e = event;\r\n if (e.originalEvent)\r\n e = e.originalEvent;\r\n if (e.type === 'pointermove') {\r\n if (data.touchId !== null)\r\n return; // return from pointer if we use touch\r\n const id = e.pointerId;\r\n if (id !== data.pointerId)\r\n return;\r\n }\r\n let targetTouch;\r\n if (e.type === 'touchmove') {\r\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\r\n if (!targetTouch || targetTouch.identifier !== data.touchId)\r\n return;\r\n }\r\n else {\r\n targetTouch = e;\r\n }\r\n if (!data.isTouched) {\r\n if (data.startMoving && data.isScrolling) {\r\n swiper.emit('touchMoveOpposite', e);\r\n }\r\n return;\r\n }\r\n const pageX = targetTouch.pageX;\r\n const pageY = targetTouch.pageY;\r\n if (e.preventedByNestedSwiper) {\r\n touches.startX = pageX;\r\n touches.startY = pageY;\r\n return;\r\n }\r\n if (!swiper.allowTouchMove) {\r\n if (!e.target.matches(data.focusableElements)) {\r\n swiper.allowClick = false;\r\n }\r\n if (data.isTouched) {\r\n Object.assign(touches, {\r\n startX: pageX,\r\n startY: pageY,\r\n currentX: pageX,\r\n currentY: pageY\r\n });\r\n data.touchStartTime = now();\r\n }\r\n return;\r\n }\r\n if (params.touchReleaseOnEdges && !params.loop) {\r\n if (swiper.isVertical()) {\r\n // Vertical\r\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\r\n data.isTouched = false;\r\n data.isMoved = false;\r\n return;\r\n }\r\n }\r\n else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\r\n return;\r\n }\r\n }\r\n if (document.activeElement) {\r\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\r\n data.isMoved = true;\r\n swiper.allowClick = false;\r\n return;\r\n }\r\n }\r\n if (data.allowTouchCallbacks) {\r\n swiper.emit('touchMove', e);\r\n }\r\n touches.previousX = touches.currentX;\r\n touches.previousY = touches.currentY;\r\n touches.currentX = pageX;\r\n touches.currentY = pageY;\r\n const diffX = touches.currentX - touches.startX;\r\n const diffY = touches.currentY - touches.startY;\r\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\r\n return;\r\n if (typeof data.isScrolling === 'undefined') {\r\n let touchAngle;\r\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\r\n data.isScrolling = false;\r\n }\r\n else {\r\n // eslint-disable-next-line\r\n if (diffX * diffX + diffY * diffY >= 25) {\r\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\r\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\r\n }\r\n }\r\n }\r\n if (data.isScrolling) {\r\n swiper.emit('touchMoveOpposite', e);\r\n }\r\n if (typeof data.startMoving === 'undefined') {\r\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\r\n data.startMoving = true;\r\n }\r\n }\r\n if (data.isScrolling) {\r\n data.isTouched = false;\r\n return;\r\n }\r\n if (!data.startMoving) {\r\n return;\r\n }\r\n swiper.allowClick = false;\r\n if (!params.cssMode && e.cancelable) {\r\n e.preventDefault();\r\n }\r\n if (params.touchMoveStopPropagation && !params.nested) {\r\n e.stopPropagation();\r\n }\r\n let diff = swiper.isHorizontal() ? diffX : diffY;\r\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\r\n if (params.oneWayMovement) {\r\n diff = Math.abs(diff) * (rtl ? 1 : -1);\r\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\r\n }\r\n touches.diff = diff;\r\n diff *= params.touchRatio;\r\n if (rtl) {\r\n diff = -diff;\r\n touchesDiff = -touchesDiff;\r\n }\r\n const prevTouchesDirection = swiper.touchesDirection;\r\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\r\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\r\n const isLoop = swiper.params.loop && !params.cssMode;\r\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\r\n if (!data.isMoved) {\r\n if (isLoop && allowLoopFix) {\r\n swiper.loopFix({\r\n direction: swiper.swipeDirection\r\n });\r\n }\r\n data.startTranslate = swiper.getTranslate();\r\n swiper.setTransition(0);\r\n if (swiper.animating) {\r\n const evt = new window.CustomEvent('transitionend', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n swiper.wrapperEl.dispatchEvent(evt);\r\n }\r\n data.allowMomentumBounce = false;\r\n // Grab Cursor\r\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\r\n swiper.setGrabCursor(true);\r\n }\r\n swiper.emit('sliderFirstMove', e);\r\n }\r\n let loopFixed;\r\n new Date().getTime();\r\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\r\n Object.assign(touches, {\r\n startX: pageX,\r\n startY: pageY,\r\n currentX: pageX,\r\n currentY: pageY,\r\n startTranslate: data.currentTranslate\r\n });\r\n data.loopSwapReset = true;\r\n data.startTranslate = data.currentTranslate;\r\n return;\r\n }\r\n swiper.emit('sliderMove', e);\r\n data.isMoved = true;\r\n data.currentTranslate = diff + data.startTranslate;\r\n let disableParentSwiper = true;\r\n let resistanceRatio = params.resistanceRatio;\r\n if (params.touchReleaseOnEdges) {\r\n resistanceRatio = 0;\r\n }\r\n if (diff > 0) {\r\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\r\n swiper.loopFix({\r\n direction: 'prev',\r\n setTranslate: true,\r\n activeSlideIndex: 0\r\n });\r\n }\r\n if (data.currentTranslate > swiper.minTranslate()) {\r\n disableParentSwiper = false;\r\n if (params.resistance) {\r\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\r\n }\r\n }\r\n }\r\n else if (diff < 0) {\r\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\r\n swiper.loopFix({\r\n direction: 'next',\r\n setTranslate: true,\r\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\r\n });\r\n }\r\n if (data.currentTranslate < swiper.maxTranslate()) {\r\n disableParentSwiper = false;\r\n if (params.resistance) {\r\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\r\n }\r\n }\r\n }\r\n if (disableParentSwiper) {\r\n e.preventedByNestedSwiper = true;\r\n }\r\n // Directions locks\r\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\r\n data.currentTranslate = data.startTranslate;\r\n }\r\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\r\n data.currentTranslate = data.startTranslate;\r\n }\r\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\r\n data.currentTranslate = data.startTranslate;\r\n }\r\n // Threshold\r\n if (params.threshold > 0) {\r\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\r\n if (!data.allowThresholdMove) {\r\n data.allowThresholdMove = true;\r\n touches.startX = touches.currentX;\r\n touches.startY = touches.currentY;\r\n data.currentTranslate = data.startTranslate;\r\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\r\n return;\r\n }\r\n }\r\n else {\r\n data.currentTranslate = data.startTranslate;\r\n return;\r\n }\r\n }\r\n if (!params.followFinger || params.cssMode)\r\n return;\r\n // Update active index in free mode\r\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\r\n swiper.freeMode.onTouchMove();\r\n }\r\n // Update progress\r\n swiper.updateProgress(data.currentTranslate);\r\n // Update translate\r\n swiper.setTranslate(data.currentTranslate);\r\n }\r\n function onTouchEnd(event) {\r\n const swiper = this;\r\n const data = swiper.touchEventsData;\r\n let e = event;\r\n if (e.originalEvent)\r\n e = e.originalEvent;\r\n let targetTouch;\r\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\r\n if (!isTouchEvent) {\r\n if (data.touchId !== null)\r\n return; // return from pointer if we use touch\r\n if (e.pointerId !== data.pointerId)\r\n return;\r\n targetTouch = e;\r\n }\r\n else {\r\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\r\n if (!targetTouch || targetTouch.identifier !== data.touchId)\r\n return;\r\n }\r\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\r\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\r\n if (!proceed) {\r\n return;\r\n }\r\n }\r\n data.pointerId = null;\r\n data.touchId = null;\r\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\r\n if (!enabled)\r\n return;\r\n if (!params.simulateTouch && e.pointerType === 'mouse')\r\n return;\r\n if (data.allowTouchCallbacks) {\r\n swiper.emit('touchEnd', e);\r\n }\r\n data.allowTouchCallbacks = false;\r\n if (!data.isTouched) {\r\n if (data.isMoved && params.grabCursor) {\r\n swiper.setGrabCursor(false);\r\n }\r\n data.isMoved = false;\r\n data.startMoving = false;\r\n return;\r\n }\r\n // Return Grab Cursor\r\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\r\n swiper.setGrabCursor(false);\r\n }\r\n // Time diff\r\n const touchEndTime = now();\r\n const timeDiff = touchEndTime - data.touchStartTime;\r\n // Tap, doubleTap, Click\r\n if (swiper.allowClick) {\r\n const pathTree = e.path || e.composedPath && e.composedPath();\r\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\r\n swiper.emit('tap click', e);\r\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\r\n swiper.emit('doubleTap doubleClick', e);\r\n }\r\n }\r\n data.lastClickTime = now();\r\n nextTick(() => {\r\n if (!swiper.destroyed)\r\n swiper.allowClick = true;\r\n });\r\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\r\n data.isTouched = false;\r\n data.isMoved = false;\r\n data.startMoving = false;\r\n return;\r\n }\r\n data.isTouched = false;\r\n data.isMoved = false;\r\n data.startMoving = false;\r\n let currentPos;\r\n if (params.followFinger) {\r\n currentPos = rtl ? swiper.translate : -swiper.translate;\r\n }\r\n else {\r\n currentPos = -data.currentTranslate;\r\n }\r\n if (params.cssMode) {\r\n return;\r\n }\r\n if (params.freeMode && params.freeMode.enabled) {\r\n swiper.freeMode.onTouchEnd({\r\n currentPos\r\n });\r\n return;\r\n }\r\n // Find current slide\r\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\r\n let stopIndex = 0;\r\n let groupSize = swiper.slidesSizesGrid[0];\r\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\r\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\r\n if (typeof slidesGrid[i + increment] !== 'undefined') {\r\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\r\n stopIndex = i;\r\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\r\n }\r\n }\r\n else if (swipeToLast || currentPos >= slidesGrid[i]) {\r\n stopIndex = i;\r\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\r\n }\r\n }\r\n let rewindFirstIndex = null;\r\n let rewindLastIndex = null;\r\n if (params.rewind) {\r\n if (swiper.isBeginning) {\r\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\r\n }\r\n else if (swiper.isEnd) {\r\n rewindFirstIndex = 0;\r\n }\r\n }\r\n // Find current slide size\r\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\r\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\r\n if (timeDiff > params.longSwipesMs) {\r\n // Long touches\r\n if (!params.longSwipes) {\r\n swiper.slideTo(swiper.activeIndex);\r\n return;\r\n }\r\n if (swiper.swipeDirection === 'next') {\r\n if (ratio >= params.longSwipesRatio)\r\n swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\r\n else\r\n swiper.slideTo(stopIndex);\r\n }\r\n if (swiper.swipeDirection === 'prev') {\r\n if (ratio > 1 - params.longSwipesRatio) {\r\n swiper.slideTo(stopIndex + increment);\r\n }\r\n else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\r\n swiper.slideTo(rewindLastIndex);\r\n }\r\n else {\r\n swiper.slideTo(stopIndex);\r\n }\r\n }\r\n }\r\n else {\r\n // Short swipes\r\n if (!params.shortSwipes) {\r\n swiper.slideTo(swiper.activeIndex);\r\n return;\r\n }\r\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\r\n if (!isNavButtonTarget) {\r\n if (swiper.swipeDirection === 'next') {\r\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\r\n }\r\n if (swiper.swipeDirection === 'prev') {\r\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\r\n }\r\n }\r\n else if (e.target === swiper.navigation.nextEl) {\r\n swiper.slideTo(stopIndex + increment);\r\n }\r\n else {\r\n swiper.slideTo(stopIndex);\r\n }\r\n }\r\n }\r\n function onResize() {\r\n const swiper = this;\r\n const { params, el } = swiper;\r\n if (el && el.offsetWidth === 0)\r\n return;\r\n // Breakpoints\r\n if (params.breakpoints) {\r\n swiper.setBreakpoint();\r\n }\r\n // Save locks\r\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\r\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\r\n // Disable locks on resize\r\n swiper.allowSlideNext = true;\r\n swiper.allowSlidePrev = true;\r\n swiper.updateSize();\r\n swiper.updateSlides();\r\n swiper.updateSlidesClasses();\r\n const isVirtualLoop = isVirtual && params.loop;\r\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\r\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\r\n }\r\n else {\r\n if (swiper.params.loop && !isVirtual) {\r\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\r\n }\r\n else {\r\n swiper.slideTo(swiper.activeIndex, 0, false, true);\r\n }\r\n }\r\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\r\n clearTimeout(swiper.autoplay.resizeTimeout);\r\n swiper.autoplay.resizeTimeout = setTimeout(() => {\r\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\r\n swiper.autoplay.resume();\r\n }\r\n }, 500);\r\n }\r\n // Return locks after resize\r\n swiper.allowSlidePrev = allowSlidePrev;\r\n swiper.allowSlideNext = allowSlideNext;\r\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\r\n swiper.checkOverflow();\r\n }\r\n }\r\n function onClick(e) {\r\n const swiper = this;\r\n if (!swiper.enabled)\r\n return;\r\n if (!swiper.allowClick) {\r\n if (swiper.params.preventClicks)\r\n e.preventDefault();\r\n if (swiper.params.preventClicksPropagation && swiper.animating) {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n }\r\n function onScroll() {\r\n const swiper = this;\r\n const { wrapperEl, rtlTranslate, enabled } = swiper;\r\n if (!enabled)\r\n return;\r\n swiper.previousTranslate = swiper.translate;\r\n if (swiper.isHorizontal()) {\r\n swiper.translate = -wrapperEl.scrollLeft;\r\n }\r\n else {\r\n swiper.translate = -wrapperEl.scrollTop;\r\n }\r\n // eslint-disable-next-line\r\n if (swiper.translate === 0)\r\n swiper.translate = 0;\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n let newProgress;\r\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\r\n if (translatesDiff === 0) {\r\n newProgress = 0;\r\n }\r\n else {\r\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\r\n }\r\n if (newProgress !== swiper.progress) {\r\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\r\n }\r\n swiper.emit('setTranslate', swiper.translate, false);\r\n }\r\n function onLoad(e) {\r\n const swiper = this;\r\n processLazyPreloader(swiper, e.target);\r\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\r\n return;\r\n }\r\n swiper.update();\r\n }\r\n function onDocumentTouchStart() {\r\n const swiper = this;\r\n if (swiper.documentTouchHandlerProceeded)\r\n return;\r\n swiper.documentTouchHandlerProceeded = true;\r\n if (swiper.params.touchReleaseOnEdges) {\r\n swiper.el.style.touchAction = 'auto';\r\n }\r\n }\r\n const events = (swiper, method) => {\r\n const document = getDocument();\r\n const { params, el, wrapperEl, device } = swiper;\r\n const capture = !!params.nested;\r\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\r\n const swiperMethod = method;\r\n // Touch Events\r\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\r\n passive: false,\r\n capture\r\n });\r\n el[domMethod]('touchstart', swiper.onTouchStart, {\r\n passive: false\r\n });\r\n el[domMethod]('pointerdown', swiper.onTouchStart, {\r\n passive: false\r\n });\r\n document[domMethod]('touchmove', swiper.onTouchMove, {\r\n passive: false,\r\n capture\r\n });\r\n document[domMethod]('pointermove', swiper.onTouchMove, {\r\n passive: false,\r\n capture\r\n });\r\n document[domMethod]('touchend', swiper.onTouchEnd, {\r\n passive: true\r\n });\r\n document[domMethod]('pointerup', swiper.onTouchEnd, {\r\n passive: true\r\n });\r\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\r\n passive: true\r\n });\r\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\r\n passive: true\r\n });\r\n document[domMethod]('pointerout', swiper.onTouchEnd, {\r\n passive: true\r\n });\r\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\r\n passive: true\r\n });\r\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\r\n passive: true\r\n });\r\n // Prevent Links Clicks\r\n if (params.preventClicks || params.preventClicksPropagation) {\r\n el[domMethod]('click', swiper.onClick, true);\r\n }\r\n if (params.cssMode) {\r\n wrapperEl[domMethod]('scroll', swiper.onScroll);\r\n }\r\n // Resize handler\r\n if (params.updateOnWindowResize) {\r\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\r\n }\r\n else {\r\n swiper[swiperMethod]('observerUpdate', onResize, true);\r\n }\r\n // Images loader\r\n el[domMethod]('load', swiper.onLoad, {\r\n capture: true\r\n });\r\n };\r\n function attachEvents() {\r\n const swiper = this;\r\n const { params } = swiper;\r\n swiper.onTouchStart = onTouchStart.bind(swiper);\r\n swiper.onTouchMove = onTouchMove.bind(swiper);\r\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\r\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\r\n if (params.cssMode) {\r\n swiper.onScroll = onScroll.bind(swiper);\r\n }\r\n swiper.onClick = onClick.bind(swiper);\r\n swiper.onLoad = onLoad.bind(swiper);\r\n events(swiper, 'on');\r\n }\r\n function detachEvents() {\r\n const swiper = this;\r\n events(swiper, 'off');\r\n }\r\n var events$1 = {\r\n attachEvents,\r\n detachEvents\r\n };\r\n const isGridEnabled = (swiper, params) => {\r\n return swiper.grid && params.grid && params.grid.rows > 1;\r\n };\r\n function setBreakpoint() {\r\n const swiper = this;\r\n const { realIndex, initialized, params, el } = swiper;\r\n const breakpoints = params.breakpoints;\r\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0)\r\n return;\r\n // Get breakpoint for window width and update parameters\r\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\r\n if (!breakpoint || swiper.currentBreakpoint === breakpoint)\r\n return;\r\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\r\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\r\n const wasMultiRow = isGridEnabled(swiper, params);\r\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\r\n const wasEnabled = params.enabled;\r\n if (wasMultiRow && !isMultiRow) {\r\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\r\n swiper.emitContainerClasses();\r\n }\r\n else if (!wasMultiRow && isMultiRow) {\r\n el.classList.add(`${params.containerModifierClass}grid`);\r\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\r\n el.classList.add(`${params.containerModifierClass}grid-column`);\r\n }\r\n swiper.emitContainerClasses();\r\n }\r\n // Toggle navigation, pagination, scrollbar\r\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\r\n if (typeof breakpointParams[prop] === 'undefined')\r\n return;\r\n const wasModuleEnabled = params[prop] && params[prop].enabled;\r\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\r\n if (wasModuleEnabled && !isModuleEnabled) {\r\n swiper[prop].disable();\r\n }\r\n if (!wasModuleEnabled && isModuleEnabled) {\r\n swiper[prop].enable();\r\n }\r\n });\r\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\r\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\r\n const wasLoop = params.loop;\r\n if (directionChanged && initialized) {\r\n swiper.changeDirection();\r\n }\r\n extend(swiper.params, breakpointParams);\r\n const isEnabled = swiper.params.enabled;\r\n const hasLoop = swiper.params.loop;\r\n Object.assign(swiper, {\r\n allowTouchMove: swiper.params.allowTouchMove,\r\n allowSlideNext: swiper.params.allowSlideNext,\r\n allowSlidePrev: swiper.params.allowSlidePrev\r\n });\r\n if (wasEnabled && !isEnabled) {\r\n swiper.disable();\r\n }\r\n else if (!wasEnabled && isEnabled) {\r\n swiper.enable();\r\n }\r\n swiper.currentBreakpoint = breakpoint;\r\n swiper.emit('_beforeBreakpoint', breakpointParams);\r\n if (initialized) {\r\n if (needsReLoop) {\r\n swiper.loopDestroy();\r\n swiper.loopCreate(realIndex);\r\n swiper.updateSlides();\r\n }\r\n else if (!wasLoop && hasLoop) {\r\n swiper.loopCreate(realIndex);\r\n swiper.updateSlides();\r\n }\r\n else if (wasLoop && !hasLoop) {\r\n swiper.loopDestroy();\r\n }\r\n }\r\n swiper.emit('breakpoint', breakpointParams);\r\n }\r\n function getBreakpoint(breakpoints, base, containerEl) {\r\n if (base === void 0) {\r\n base = 'window';\r\n }\r\n if (!breakpoints || base === 'container' && !containerEl)\r\n return undefined;\r\n let breakpoint = false;\r\n const window = getWindow();\r\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\r\n const points = Object.keys(breakpoints).map(point => {\r\n if (typeof point === 'string' && point.indexOf('@') === 0) {\r\n const minRatio = parseFloat(point.substr(1));\r\n const value = currentHeight * minRatio;\r\n return {\r\n value,\r\n point\r\n };\r\n }\r\n return {\r\n value: point,\r\n point\r\n };\r\n });\r\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\r\n for (let i = 0; i < points.length; i += 1) {\r\n const { point, value } = points[i];\r\n if (base === 'window') {\r\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\r\n breakpoint = point;\r\n }\r\n }\r\n else if (value <= containerEl.clientWidth) {\r\n breakpoint = point;\r\n }\r\n }\r\n return breakpoint || 'max';\r\n }\r\n var breakpoints = {\r\n setBreakpoint,\r\n getBreakpoint\r\n };\r\n function prepareClasses(entries, prefix) {\r\n const resultClasses = [];\r\n entries.forEach(item => {\r\n if (typeof item === 'object') {\r\n Object.keys(item).forEach(classNames => {\r\n if (item[classNames]) {\r\n resultClasses.push(prefix + classNames);\r\n }\r\n });\r\n }\r\n else if (typeof item === 'string') {\r\n resultClasses.push(prefix + item);\r\n }\r\n });\r\n return resultClasses;\r\n }\r\n function addClasses() {\r\n const swiper = this;\r\n const { classNames, params, rtl, el, device } = swiper;\r\n // prettier-ignore\r\n const suffixes = prepareClasses(['initialized', params.direction, {\r\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\r\n }, {\r\n 'autoheight': params.autoHeight\r\n }, {\r\n 'rtl': rtl\r\n }, {\r\n 'grid': params.grid && params.grid.rows > 1\r\n }, {\r\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\r\n }, {\r\n 'android': device.android\r\n }, {\r\n 'ios': device.ios\r\n }, {\r\n 'css-mode': params.cssMode\r\n }, {\r\n 'centered': params.cssMode && params.centeredSlides\r\n }, {\r\n 'watch-progress': params.watchSlidesProgress\r\n }], params.containerModifierClass);\r\n classNames.push(...suffixes);\r\n el.classList.add(...classNames);\r\n swiper.emitContainerClasses();\r\n }\r\n function removeClasses() {\r\n const swiper = this;\r\n const { el, classNames } = swiper;\r\n el.classList.remove(...classNames);\r\n swiper.emitContainerClasses();\r\n }\r\n var classes = {\r\n addClasses,\r\n removeClasses\r\n };\r\n function checkOverflow() {\r\n const swiper = this;\r\n const { isLocked: wasLocked, params } = swiper;\r\n const { slidesOffsetBefore } = params;\r\n if (slidesOffsetBefore) {\r\n const lastSlideIndex = swiper.slides.length - 1;\r\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\r\n swiper.isLocked = swiper.size > lastSlideRightEdge;\r\n }\r\n else {\r\n swiper.isLocked = swiper.snapGrid.length === 1;\r\n }\r\n if (params.allowSlideNext === true) {\r\n swiper.allowSlideNext = !swiper.isLocked;\r\n }\r\n if (params.allowSlidePrev === true) {\r\n swiper.allowSlidePrev = !swiper.isLocked;\r\n }\r\n if (wasLocked && wasLocked !== swiper.isLocked) {\r\n swiper.isEnd = false;\r\n }\r\n if (wasLocked !== swiper.isLocked) {\r\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\r\n }\r\n }\r\n var checkOverflow$1 = {\r\n checkOverflow\r\n };\r\n var defaults = {\r\n init: true,\r\n direction: 'horizontal',\r\n oneWayMovement: false,\r\n swiperElementNodeName: 'SWIPER-CONTAINER',\r\n touchEventsTarget: 'wrapper',\r\n initialSlide: 0,\r\n speed: 300,\r\n cssMode: false,\r\n updateOnWindowResize: true,\r\n resizeObserver: true,\r\n nested: false,\r\n createElements: false,\r\n eventsPrefix: 'swiper',\r\n enabled: true,\r\n focusableElements: 'input, select, option, textarea, button, video, label',\r\n // Overrides\r\n width: null,\r\n height: null,\r\n //\r\n preventInteractionOnTransition: false,\r\n // ssr\r\n userAgent: null,\r\n url: null,\r\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\r\n edgeSwipeDetection: false,\r\n edgeSwipeThreshold: 20,\r\n // Autoheight\r\n autoHeight: false,\r\n // Set wrapper width\r\n setWrapperSize: false,\r\n // Virtual Translate\r\n virtualTranslate: false,\r\n // Effects\r\n effect: 'slide',\r\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\r\n // Breakpoints\r\n breakpoints: undefined,\r\n breakpointsBase: 'window',\r\n // Slides grid\r\n spaceBetween: 0,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n slidesPerGroupSkip: 0,\r\n slidesPerGroupAuto: false,\r\n centeredSlides: false,\r\n centeredSlidesBounds: false,\r\n slidesOffsetBefore: 0,\r\n // in px\r\n slidesOffsetAfter: 0,\r\n // in px\r\n normalizeSlideIndex: true,\r\n centerInsufficientSlides: false,\r\n // Disable swiper and hide navigation when container not overflow\r\n watchOverflow: true,\r\n // Round length\r\n roundLengths: false,\r\n // Touches\r\n touchRatio: 1,\r\n touchAngle: 45,\r\n simulateTouch: true,\r\n shortSwipes: true,\r\n longSwipes: true,\r\n longSwipesRatio: 0.5,\r\n longSwipesMs: 300,\r\n followFinger: true,\r\n allowTouchMove: true,\r\n threshold: 5,\r\n touchMoveStopPropagation: false,\r\n touchStartPreventDefault: true,\r\n touchStartForcePreventDefault: false,\r\n touchReleaseOnEdges: false,\r\n // Unique Navigation Elements\r\n uniqueNavElements: true,\r\n // Resistance\r\n resistance: true,\r\n resistanceRatio: 0.85,\r\n // Progress\r\n watchSlidesProgress: false,\r\n // Cursor\r\n grabCursor: false,\r\n // Clicks\r\n preventClicks: true,\r\n preventClicksPropagation: true,\r\n slideToClickedSlide: false,\r\n // loop\r\n loop: false,\r\n loopAddBlankSlides: true,\r\n loopAdditionalSlides: 0,\r\n loopPreventsSliding: true,\r\n // rewind\r\n rewind: false,\r\n // Swiping/no swiping\r\n allowSlidePrev: true,\r\n allowSlideNext: true,\r\n swipeHandler: null,\r\n // '.swipe-handler',\r\n noSwiping: true,\r\n noSwipingClass: 'swiper-no-swiping',\r\n noSwipingSelector: null,\r\n // Passive Listeners\r\n passiveListeners: true,\r\n maxBackfaceHiddenSlides: 10,\r\n // NS\r\n containerModifierClass: 'swiper-',\r\n // NEW\r\n slideClass: 'swiper-slide',\r\n slideBlankClass: 'swiper-slide-blank',\r\n slideActiveClass: 'swiper-slide-active',\r\n slideVisibleClass: 'swiper-slide-visible',\r\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\r\n slideNextClass: 'swiper-slide-next',\r\n slidePrevClass: 'swiper-slide-prev',\r\n wrapperClass: 'swiper-wrapper',\r\n lazyPreloaderClass: 'swiper-lazy-preloader',\r\n lazyPreloadPrevNext: 0,\r\n // Callbacks\r\n runCallbacksOnInit: true,\r\n // Internals\r\n _emitClasses: false\r\n };\r\n function moduleExtendParams(params, allModulesParams) {\r\n return function extendParams(obj) {\r\n if (obj === void 0) {\r\n obj = {};\r\n }\r\n const moduleParamName = Object.keys(obj)[0];\r\n const moduleParams = obj[moduleParamName];\r\n if (typeof moduleParams !== 'object' || moduleParams === null) {\r\n extend(allModulesParams, obj);\r\n return;\r\n }\r\n if (params[moduleParamName] === true) {\r\n params[moduleParamName] = {\r\n enabled: true\r\n };\r\n }\r\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\r\n params[moduleParamName].auto = true;\r\n }\r\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\r\n params[moduleParamName].auto = true;\r\n }\r\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\r\n extend(allModulesParams, obj);\r\n return;\r\n }\r\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\r\n params[moduleParamName].enabled = true;\r\n }\r\n if (!params[moduleParamName])\r\n params[moduleParamName] = {\r\n enabled: false\r\n };\r\n extend(allModulesParams, obj);\r\n };\r\n }\r\n /* eslint no-param-reassign: \"off\" */\r\n const prototypes = {\r\n eventsEmitter,\r\n update,\r\n translate,\r\n transition,\r\n slide,\r\n loop,\r\n grabCursor,\r\n events: events$1,\r\n breakpoints,\r\n checkOverflow: checkOverflow$1,\r\n classes\r\n };\r\n const extendedDefaults = {};\r\n class Swiper {\r\n constructor() {\r\n let el;\r\n let params;\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\r\n params = args[0];\r\n }\r\n else {\r\n [el, params] = args;\r\n }\r\n if (!params)\r\n params = {};\r\n params = extend({}, params);\r\n if (el && !params.el)\r\n params.el = el;\r\n const document = getDocument();\r\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\r\n const swipers = [];\r\n document.querySelectorAll(params.el).forEach(containerEl => {\r\n const newParams = extend({}, params, {\r\n el: containerEl\r\n });\r\n swipers.push(new Swiper(newParams));\r\n });\r\n // eslint-disable-next-line no-constructor-return\r\n return swipers;\r\n }\r\n // Swiper Instance\r\n const swiper = this;\r\n swiper.__swiper__ = true;\r\n swiper.support = getSupport();\r\n swiper.device = getDevice({\r\n userAgent: params.userAgent\r\n });\r\n swiper.browser = getBrowser();\r\n swiper.eventsListeners = {};\r\n swiper.eventsAnyListeners = [];\r\n swiper.modules = [...swiper.__modules__];\r\n if (params.modules && Array.isArray(params.modules)) {\r\n swiper.modules.push(...params.modules);\r\n }\r\n const allModulesParams = {};\r\n swiper.modules.forEach(mod => {\r\n mod({\r\n params,\r\n swiper,\r\n extendParams: moduleExtendParams(params, allModulesParams),\r\n on: swiper.on.bind(swiper),\r\n once: swiper.once.bind(swiper),\r\n off: swiper.off.bind(swiper),\r\n emit: swiper.emit.bind(swiper)\r\n });\r\n });\r\n // Extend defaults with modules params\r\n const swiperParams = extend({}, defaults, allModulesParams);\r\n // Extend defaults with passed params\r\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\r\n swiper.originalParams = extend({}, swiper.params);\r\n swiper.passedParams = extend({}, params);\r\n // add event listeners\r\n if (swiper.params && swiper.params.on) {\r\n Object.keys(swiper.params.on).forEach(eventName => {\r\n swiper.on(eventName, swiper.params.on[eventName]);\r\n });\r\n }\r\n if (swiper.params && swiper.params.onAny) {\r\n swiper.onAny(swiper.params.onAny);\r\n }\r\n // Extend Swiper\r\n Object.assign(swiper, {\r\n enabled: swiper.params.enabled,\r\n el,\r\n // Classes\r\n classNames: [],\r\n // Slides\r\n slides: [],\r\n slidesGrid: [],\r\n snapGrid: [],\r\n slidesSizesGrid: [],\r\n // isDirection\r\n isHorizontal() {\r\n return swiper.params.direction === 'horizontal';\r\n },\r\n isVertical() {\r\n return swiper.params.direction === 'vertical';\r\n },\r\n // Indexes\r\n activeIndex: 0,\r\n realIndex: 0,\r\n //\r\n isBeginning: true,\r\n isEnd: false,\r\n // Props\r\n translate: 0,\r\n previousTranslate: 0,\r\n progress: 0,\r\n velocity: 0,\r\n animating: false,\r\n cssOverflowAdjustment() {\r\n // Returns 0 unless `translate` is > 2**23\r\n // Should be subtracted from css values to prevent overflow\r\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\r\n },\r\n // Locks\r\n allowSlideNext: swiper.params.allowSlideNext,\r\n allowSlidePrev: swiper.params.allowSlidePrev,\r\n // Touch Events\r\n touchEventsData: {\r\n isTouched: undefined,\r\n isMoved: undefined,\r\n allowTouchCallbacks: undefined,\r\n touchStartTime: undefined,\r\n isScrolling: undefined,\r\n currentTranslate: undefined,\r\n startTranslate: undefined,\r\n allowThresholdMove: undefined,\r\n // Form elements to match\r\n focusableElements: swiper.params.focusableElements,\r\n // Last click time\r\n lastClickTime: 0,\r\n clickTimeout: undefined,\r\n // Velocities\r\n velocities: [],\r\n allowMomentumBounce: undefined,\r\n startMoving: undefined,\r\n pointerId: null,\r\n touchId: null\r\n },\r\n // Clicks\r\n allowClick: true,\r\n // Touches\r\n allowTouchMove: swiper.params.allowTouchMove,\r\n touches: {\r\n startX: 0,\r\n startY: 0,\r\n currentX: 0,\r\n currentY: 0,\r\n diff: 0\r\n },\r\n // Images\r\n imagesToLoad: [],\r\n imagesLoaded: 0\r\n });\r\n swiper.emit('_swiper');\r\n // Init\r\n if (swiper.params.init) {\r\n swiper.init();\r\n }\r\n // Return app instance\r\n // eslint-disable-next-line no-constructor-return\r\n return swiper;\r\n }\r\n getDirectionLabel(property) {\r\n if (this.isHorizontal()) {\r\n return property;\r\n }\r\n // prettier-ignore\r\n return {\r\n 'width': 'height',\r\n 'margin-top': 'margin-left',\r\n 'margin-bottom ': 'margin-right',\r\n 'margin-left': 'margin-top',\r\n 'margin-right': 'margin-bottom',\r\n 'padding-left': 'padding-top',\r\n 'padding-right': 'padding-bottom',\r\n 'marginRight': 'marginBottom'\r\n }[property];\r\n }\r\n getSlideIndex(slideEl) {\r\n const { slidesEl, params } = this;\r\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\r\n const firstSlideIndex = elementIndex(slides[0]);\r\n return elementIndex(slideEl) - firstSlideIndex;\r\n }\r\n getSlideIndexByData(index) {\r\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\r\n }\r\n recalcSlides() {\r\n const swiper = this;\r\n const { slidesEl, params } = swiper;\r\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\r\n }\r\n enable() {\r\n const swiper = this;\r\n if (swiper.enabled)\r\n return;\r\n swiper.enabled = true;\r\n if (swiper.params.grabCursor) {\r\n swiper.setGrabCursor();\r\n }\r\n swiper.emit('enable');\r\n }\r\n disable() {\r\n const swiper = this;\r\n if (!swiper.enabled)\r\n return;\r\n swiper.enabled = false;\r\n if (swiper.params.grabCursor) {\r\n swiper.unsetGrabCursor();\r\n }\r\n swiper.emit('disable');\r\n }\r\n setProgress(progress, speed) {\r\n const swiper = this;\r\n progress = Math.min(Math.max(progress, 0), 1);\r\n const min = swiper.minTranslate();\r\n const max = swiper.maxTranslate();\r\n const current = (max - min) * progress + min;\r\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n emitContainerClasses() {\r\n const swiper = this;\r\n if (!swiper.params._emitClasses || !swiper.el)\r\n return;\r\n const cls = swiper.el.className.split(' ').filter(className => {\r\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\r\n });\r\n swiper.emit('_containerClasses', cls.join(' '));\r\n }\r\n getSlideClasses(slideEl) {\r\n const swiper = this;\r\n if (swiper.destroyed)\r\n return '';\r\n return slideEl.className.split(' ').filter(className => {\r\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\r\n }).join(' ');\r\n }\r\n emitSlidesClasses() {\r\n const swiper = this;\r\n if (!swiper.params._emitClasses || !swiper.el)\r\n return;\r\n const updates = [];\r\n swiper.slides.forEach(slideEl => {\r\n const classNames = swiper.getSlideClasses(slideEl);\r\n updates.push({\r\n slideEl,\r\n classNames\r\n });\r\n swiper.emit('_slideClass', slideEl, classNames);\r\n });\r\n swiper.emit('_slideClasses', updates);\r\n }\r\n slidesPerViewDynamic(view, exact) {\r\n if (view === void 0) {\r\n view = 'current';\r\n }\r\n if (exact === void 0) {\r\n exact = false;\r\n }\r\n const swiper = this;\r\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\r\n let spv = 1;\r\n if (typeof params.slidesPerView === 'number')\r\n return params.slidesPerView;\r\n if (params.centeredSlides) {\r\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\r\n let breakLoop;\r\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\r\n if (slides[i] && !breakLoop) {\r\n slideSize += Math.ceil(slides[i].swiperSlideSize);\r\n spv += 1;\r\n if (slideSize > swiperSize)\r\n breakLoop = true;\r\n }\r\n }\r\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\r\n if (slides[i] && !breakLoop) {\r\n slideSize += slides[i].swiperSlideSize;\r\n spv += 1;\r\n if (slideSize > swiperSize)\r\n breakLoop = true;\r\n }\r\n }\r\n }\r\n else {\r\n // eslint-disable-next-line\r\n if (view === 'current') {\r\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\r\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\r\n if (slideInView) {\r\n spv += 1;\r\n }\r\n }\r\n }\r\n else {\r\n // previous\r\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\r\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\r\n if (slideInView) {\r\n spv += 1;\r\n }\r\n }\r\n }\r\n }\r\n return spv;\r\n }\r\n update() {\r\n const swiper = this;\r\n if (!swiper || swiper.destroyed)\r\n return;\r\n const { snapGrid, params } = swiper;\r\n // Breakpoints\r\n if (params.breakpoints) {\r\n swiper.setBreakpoint();\r\n }\r\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\r\n if (imageEl.complete) {\r\n processLazyPreloader(swiper, imageEl);\r\n }\r\n });\r\n swiper.updateSize();\r\n swiper.updateSlides();\r\n swiper.updateProgress();\r\n swiper.updateSlidesClasses();\r\n function setTranslate() {\r\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\r\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\r\n swiper.setTranslate(newTranslate);\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n let translated;\r\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\r\n setTranslate();\r\n if (params.autoHeight) {\r\n swiper.updateAutoHeight();\r\n }\r\n }\r\n else {\r\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\r\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\r\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\r\n }\r\n else {\r\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\r\n }\r\n if (!translated) {\r\n setTranslate();\r\n }\r\n }\r\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\r\n swiper.checkOverflow();\r\n }\r\n swiper.emit('update');\r\n }\r\n changeDirection(newDirection, needUpdate) {\r\n if (needUpdate === void 0) {\r\n needUpdate = true;\r\n }\r\n const swiper = this;\r\n const currentDirection = swiper.params.direction;\r\n if (!newDirection) {\r\n // eslint-disable-next-line\r\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\r\n }\r\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\r\n return swiper;\r\n }\r\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\r\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\r\n swiper.emitContainerClasses();\r\n swiper.params.direction = newDirection;\r\n swiper.slides.forEach(slideEl => {\r\n if (newDirection === 'vertical') {\r\n slideEl.style.width = '';\r\n }\r\n else {\r\n slideEl.style.height = '';\r\n }\r\n });\r\n swiper.emit('changeDirection');\r\n if (needUpdate)\r\n swiper.update();\r\n return swiper;\r\n }\r\n changeLanguageDirection(direction) {\r\n const swiper = this;\r\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr')\r\n return;\r\n swiper.rtl = direction === 'rtl';\r\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\r\n if (swiper.rtl) {\r\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\r\n swiper.el.dir = 'rtl';\r\n }\r\n else {\r\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\r\n swiper.el.dir = 'ltr';\r\n }\r\n swiper.update();\r\n }\r\n mount(element) {\r\n const swiper = this;\r\n if (swiper.mounted)\r\n return true;\r\n // Find el\r\n let el = element || swiper.params.el;\r\n if (typeof el === 'string') {\r\n el = document.querySelector(el);\r\n }\r\n if (!el) {\r\n return false;\r\n }\r\n el.swiper = swiper;\r\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\r\n swiper.isElement = true;\r\n }\r\n const getWrapperSelector = () => {\r\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\r\n };\r\n const getWrapper = () => {\r\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\r\n const res = el.shadowRoot.querySelector(getWrapperSelector());\r\n // Children needs to return slot items\r\n return res;\r\n }\r\n return elementChildren(el, getWrapperSelector())[0];\r\n };\r\n // Find Wrapper\r\n let wrapperEl = getWrapper();\r\n if (!wrapperEl && swiper.params.createElements) {\r\n wrapperEl = createElement('div', swiper.params.wrapperClass);\r\n el.append(wrapperEl);\r\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\r\n wrapperEl.append(slideEl);\r\n });\r\n }\r\n Object.assign(swiper, {\r\n el,\r\n wrapperEl,\r\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\r\n hostEl: swiper.isElement ? el.parentNode.host : el,\r\n mounted: true,\r\n // RTL\r\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\r\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\r\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\r\n });\r\n return true;\r\n }\r\n init(el) {\r\n const swiper = this;\r\n if (swiper.initialized)\r\n return swiper;\r\n const mounted = swiper.mount(el);\r\n if (mounted === false)\r\n return swiper;\r\n swiper.emit('beforeInit');\r\n // Set breakpoint\r\n if (swiper.params.breakpoints) {\r\n swiper.setBreakpoint();\r\n }\r\n // Add Classes\r\n swiper.addClasses();\r\n // Update size\r\n swiper.updateSize();\r\n // Update slides\r\n swiper.updateSlides();\r\n if (swiper.params.watchOverflow) {\r\n swiper.checkOverflow();\r\n }\r\n // Set Grab Cursor\r\n if (swiper.params.grabCursor && swiper.enabled) {\r\n swiper.setGrabCursor();\r\n }\r\n // Slide To Initial Slide\r\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\r\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\r\n }\r\n else {\r\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\r\n }\r\n // Create loop\r\n if (swiper.params.loop) {\r\n swiper.loopCreate();\r\n }\r\n // Attach events\r\n swiper.attachEvents();\r\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\r\n if (swiper.isElement) {\r\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\r\n }\r\n lazyElements.forEach(imageEl => {\r\n if (imageEl.complete) {\r\n processLazyPreloader(swiper, imageEl);\r\n }\r\n else {\r\n imageEl.addEventListener('load', e => {\r\n processLazyPreloader(swiper, e.target);\r\n });\r\n }\r\n });\r\n preload(swiper);\r\n // Init Flag\r\n swiper.initialized = true;\r\n preload(swiper);\r\n // Emit\r\n swiper.emit('init');\r\n swiper.emit('afterInit');\r\n return swiper;\r\n }\r\n destroy(deleteInstance, cleanStyles) {\r\n if (deleteInstance === void 0) {\r\n deleteInstance = true;\r\n }\r\n if (cleanStyles === void 0) {\r\n cleanStyles = true;\r\n }\r\n const swiper = this;\r\n const { params, el, wrapperEl, slides } = swiper;\r\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\r\n return null;\r\n }\r\n swiper.emit('beforeDestroy');\r\n // Init Flag\r\n swiper.initialized = false;\r\n // Detach events\r\n swiper.detachEvents();\r\n // Destroy loop\r\n if (params.loop) {\r\n swiper.loopDestroy();\r\n }\r\n // Cleanup styles\r\n if (cleanStyles) {\r\n swiper.removeClasses();\r\n el.removeAttribute('style');\r\n wrapperEl.removeAttribute('style');\r\n if (slides && slides.length) {\r\n slides.forEach(slideEl => {\r\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\r\n slideEl.removeAttribute('style');\r\n slideEl.removeAttribute('data-swiper-slide-index');\r\n });\r\n }\r\n }\r\n swiper.emit('destroy');\r\n // Detach emitter events\r\n Object.keys(swiper.eventsListeners).forEach(eventName => {\r\n swiper.off(eventName);\r\n });\r\n if (deleteInstance !== false) {\r\n swiper.el.swiper = null;\r\n deleteProps(swiper);\r\n }\r\n swiper.destroyed = true;\r\n return null;\r\n }\r\n static extendDefaults(newDefaults) {\r\n extend(extendedDefaults, newDefaults);\r\n }\r\n static get extendedDefaults() {\r\n return extendedDefaults;\r\n }\r\n static get defaults() {\r\n return defaults;\r\n }\r\n static installModule(mod) {\r\n if (!Swiper.prototype.__modules__)\r\n Swiper.prototype.__modules__ = [];\r\n const modules = Swiper.prototype.__modules__;\r\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\r\n modules.push(mod);\r\n }\r\n }\r\n static use(module) {\r\n if (Array.isArray(module)) {\r\n module.forEach(m => Swiper.installModule(m));\r\n return Swiper;\r\n }\r\n Swiper.installModule(module);\r\n return Swiper;\r\n }\r\n }\r\n Object.keys(prototypes).forEach(prototypeGroup => {\r\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\r\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\r\n });\r\n });\r\n Swiper.use([Resize, Observer]);\r\n function Virtual(_ref) {\r\n let { swiper, extendParams, on, emit } = _ref;\r\n extendParams({\r\n virtual: {\r\n enabled: false,\r\n slides: [],\r\n cache: true,\r\n renderSlide: null,\r\n renderExternal: null,\r\n renderExternalUpdate: true,\r\n addSlidesBefore: 0,\r\n addSlidesAfter: 0\r\n }\r\n });\r\n let cssModeTimeout;\r\n const document = getDocument();\r\n swiper.virtual = {\r\n cache: {},\r\n from: undefined,\r\n to: undefined,\r\n slides: [],\r\n offset: 0,\r\n slidesGrid: []\r\n };\r\n const tempDOM = document.createElement('div');\r\n function renderSlide(slide, index) {\r\n const params = swiper.params.virtual;\r\n if (params.cache && swiper.virtual.cache[index]) {\r\n return swiper.virtual.cache[index];\r\n }\r\n // eslint-disable-next-line\r\n let slideEl;\r\n if (params.renderSlide) {\r\n slideEl = params.renderSlide.call(swiper, slide, index);\r\n if (typeof slideEl === 'string') {\r\n tempDOM.innerHTML = slideEl;\r\n slideEl = tempDOM.children[0];\r\n }\r\n }\r\n else if (swiper.isElement) {\r\n slideEl = createElement('swiper-slide');\r\n }\r\n else {\r\n slideEl = createElement('div', swiper.params.slideClass);\r\n }\r\n slideEl.setAttribute('data-swiper-slide-index', index);\r\n if (!params.renderSlide) {\r\n slideEl.innerHTML = slide;\r\n }\r\n if (params.cache) {\r\n swiper.virtual.cache[index] = slideEl;\r\n }\r\n return slideEl;\r\n }\r\n function update(force) {\r\n const { slidesPerView, slidesPerGroup, centeredSlides, loop: isLoop } = swiper.params;\r\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\r\n const { from: previousFrom, to: previousTo, slides, slidesGrid: previousSlidesGrid, offset: previousOffset } = swiper.virtual;\r\n if (!swiper.params.cssMode) {\r\n swiper.updateActiveIndex();\r\n }\r\n const activeIndex = swiper.activeIndex || 0;\r\n let offsetProp;\r\n if (swiper.rtlTranslate)\r\n offsetProp = 'right';\r\n else\r\n offsetProp = swiper.isHorizontal() ? 'left' : 'top';\r\n let slidesAfter;\r\n let slidesBefore;\r\n if (centeredSlides) {\r\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\r\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\r\n }\r\n else {\r\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\r\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\r\n }\r\n let from = activeIndex - slidesBefore;\r\n let to = activeIndex + slidesAfter;\r\n if (!isLoop) {\r\n from = Math.max(from, 0);\r\n to = Math.min(to, slides.length - 1);\r\n }\r\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\r\n if (isLoop && activeIndex >= slidesBefore) {\r\n from -= slidesBefore;\r\n if (!centeredSlides)\r\n offset += swiper.slidesGrid[0];\r\n }\r\n else if (isLoop && activeIndex < slidesBefore) {\r\n from = -slidesBefore;\r\n if (centeredSlides)\r\n offset += swiper.slidesGrid[0];\r\n }\r\n Object.assign(swiper.virtual, {\r\n from,\r\n to,\r\n offset,\r\n slidesGrid: swiper.slidesGrid,\r\n slidesBefore,\r\n slidesAfter\r\n });\r\n function onRendered() {\r\n swiper.updateSlides();\r\n swiper.updateProgress();\r\n swiper.updateSlidesClasses();\r\n emit('virtualUpdate');\r\n }\r\n if (previousFrom === from && previousTo === to && !force) {\r\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\r\n swiper.slides.forEach(slideEl => {\r\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\r\n });\r\n }\r\n swiper.updateProgress();\r\n emit('virtualUpdate');\r\n return;\r\n }\r\n if (swiper.params.virtual.renderExternal) {\r\n swiper.params.virtual.renderExternal.call(swiper, {\r\n offset,\r\n from,\r\n to,\r\n slides: function getSlides() {\r\n const slidesToRender = [];\r\n for (let i = from; i <= to; i += 1) {\r\n slidesToRender.push(slides[i]);\r\n }\r\n return slidesToRender;\r\n }()\r\n });\r\n if (swiper.params.virtual.renderExternalUpdate) {\r\n onRendered();\r\n }\r\n else {\r\n emit('virtualUpdate');\r\n }\r\n return;\r\n }\r\n const prependIndexes = [];\r\n const appendIndexes = [];\r\n const getSlideIndex = index => {\r\n let slideIndex = index;\r\n if (index < 0) {\r\n slideIndex = slides.length + index;\r\n }\r\n else if (slideIndex >= slides.length) {\r\n // eslint-disable-next-line\r\n slideIndex = slideIndex - slides.length;\r\n }\r\n return slideIndex;\r\n };\r\n if (force) {\r\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\r\n slideEl.remove();\r\n });\r\n }\r\n else {\r\n for (let i = previousFrom; i <= previousTo; i += 1) {\r\n if (i < from || i > to) {\r\n const slideIndex = getSlideIndex(i);\r\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\r\n slideEl.remove();\r\n });\r\n }\r\n }\r\n }\r\n const loopFrom = isLoop ? -slides.length : 0;\r\n const loopTo = isLoop ? slides.length * 2 : slides.length;\r\n for (let i = loopFrom; i < loopTo; i += 1) {\r\n if (i >= from && i <= to) {\r\n const slideIndex = getSlideIndex(i);\r\n if (typeof previousTo === 'undefined' || force) {\r\n appendIndexes.push(slideIndex);\r\n }\r\n else {\r\n if (i > previousTo)\r\n appendIndexes.push(slideIndex);\r\n if (i < previousFrom)\r\n prependIndexes.push(slideIndex);\r\n }\r\n }\r\n }\r\n appendIndexes.forEach(index => {\r\n swiper.slidesEl.append(renderSlide(slides[index], index));\r\n });\r\n if (isLoop) {\r\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\r\n const index = prependIndexes[i];\r\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\r\n }\r\n }\r\n else {\r\n prependIndexes.sort((a, b) => b - a);\r\n prependIndexes.forEach(index => {\r\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\r\n });\r\n }\r\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\r\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\r\n });\r\n onRendered();\r\n }\r\n function appendSlide(slides) {\r\n if (typeof slides === 'object' && 'length' in slides) {\r\n for (let i = 0; i < slides.length; i += 1) {\r\n if (slides[i])\r\n swiper.virtual.slides.push(slides[i]);\r\n }\r\n }\r\n else {\r\n swiper.virtual.slides.push(slides);\r\n }\r\n update(true);\r\n }\r\n function prependSlide(slides) {\r\n const activeIndex = swiper.activeIndex;\r\n let newActiveIndex = activeIndex + 1;\r\n let numberOfNewSlides = 1;\r\n if (Array.isArray(slides)) {\r\n for (let i = 0; i < slides.length; i += 1) {\r\n if (slides[i])\r\n swiper.virtual.slides.unshift(slides[i]);\r\n }\r\n newActiveIndex = activeIndex + slides.length;\r\n numberOfNewSlides = slides.length;\r\n }\r\n else {\r\n swiper.virtual.slides.unshift(slides);\r\n }\r\n if (swiper.params.virtual.cache) {\r\n const cache = swiper.virtual.cache;\r\n const newCache = {};\r\n Object.keys(cache).forEach(cachedIndex => {\r\n const cachedEl = cache[cachedIndex];\r\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\r\n if (cachedElIndex) {\r\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\r\n }\r\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\r\n });\r\n swiper.virtual.cache = newCache;\r\n }\r\n update(true);\r\n swiper.slideTo(newActiveIndex, 0);\r\n }\r\n function removeSlide(slidesIndexes) {\r\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null)\r\n return;\r\n let activeIndex = swiper.activeIndex;\r\n if (Array.isArray(slidesIndexes)) {\r\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\r\n if (swiper.params.virtual.cache) {\r\n delete swiper.virtual.cache[slidesIndexes[i]];\r\n // shift cache indexes\r\n Object.keys(swiper.virtual.cache).forEach(key => {\r\n if (key > slidesIndexes) {\r\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\r\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\r\n delete swiper.virtual.cache[key];\r\n }\r\n });\r\n }\r\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\r\n if (slidesIndexes[i] < activeIndex)\r\n activeIndex -= 1;\r\n activeIndex = Math.max(activeIndex, 0);\r\n }\r\n }\r\n else {\r\n if (swiper.params.virtual.cache) {\r\n delete swiper.virtual.cache[slidesIndexes];\r\n // shift cache indexes\r\n Object.keys(swiper.virtual.cache).forEach(key => {\r\n if (key > slidesIndexes) {\r\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\r\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\r\n delete swiper.virtual.cache[key];\r\n }\r\n });\r\n }\r\n swiper.virtual.slides.splice(slidesIndexes, 1);\r\n if (slidesIndexes < activeIndex)\r\n activeIndex -= 1;\r\n activeIndex = Math.max(activeIndex, 0);\r\n }\r\n update(true);\r\n swiper.slideTo(activeIndex, 0);\r\n }\r\n function removeAllSlides() {\r\n swiper.virtual.slides = [];\r\n if (swiper.params.virtual.cache) {\r\n swiper.virtual.cache = {};\r\n }\r\n update(true);\r\n swiper.slideTo(0, 0);\r\n }\r\n on('beforeInit', () => {\r\n if (!swiper.params.virtual.enabled)\r\n return;\r\n let domSlidesAssigned;\r\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\r\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\r\n if (slides && slides.length) {\r\n swiper.virtual.slides = [...slides];\r\n domSlidesAssigned = true;\r\n slides.forEach((slideEl, slideIndex) => {\r\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\r\n swiper.virtual.cache[slideIndex] = slideEl;\r\n slideEl.remove();\r\n });\r\n }\r\n }\r\n if (!domSlidesAssigned) {\r\n swiper.virtual.slides = swiper.params.virtual.slides;\r\n }\r\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\r\n swiper.params.watchSlidesProgress = true;\r\n swiper.originalParams.watchSlidesProgress = true;\r\n update();\r\n });\r\n on('setTranslate', () => {\r\n if (!swiper.params.virtual.enabled)\r\n return;\r\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\r\n clearTimeout(cssModeTimeout);\r\n cssModeTimeout = setTimeout(() => {\r\n update();\r\n }, 100);\r\n }\r\n else {\r\n update();\r\n }\r\n });\r\n on('init update resize', () => {\r\n if (!swiper.params.virtual.enabled)\r\n return;\r\n if (swiper.params.cssMode) {\r\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\r\n }\r\n });\r\n Object.assign(swiper.virtual, {\r\n appendSlide,\r\n prependSlide,\r\n removeSlide,\r\n removeAllSlides,\r\n update\r\n });\r\n }\r\n /* eslint-disable consistent-return */\r\n function Keyboard(_ref) {\r\n let { swiper, extendParams, on, emit } = _ref;\r\n const document = getDocument();\r\n const window = getWindow();\r\n swiper.keyboard = {\r\n enabled: false\r\n };\r\n extendParams({\r\n keyboard: {\r\n enabled: false,\r\n onlyInViewport: true,\r\n pageUpDown: true\r\n }\r\n });\r\n function handle(event) {\r\n if (!swiper.enabled)\r\n return;\r\n const { rtlTranslate: rtl } = swiper;\r\n let e = event;\r\n if (e.originalEvent)\r\n e = e.originalEvent; // jquery fix\r\n const kc = e.keyCode || e.charCode;\r\n const pageUpDown = swiper.params.keyboard.pageUpDown;\r\n const isPageUp = pageUpDown && kc === 33;\r\n const isPageDown = pageUpDown && kc === 34;\r\n const isArrowLeft = kc === 37;\r\n const isArrowRight = kc === 39;\r\n const isArrowUp = kc === 38;\r\n const isArrowDown = kc === 40;\r\n // Directions locks\r\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\r\n return false;\r\n }\r\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\r\n return false;\r\n }\r\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\r\n return undefined;\r\n }\r\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\r\n return undefined;\r\n }\r\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\r\n let inView = false;\r\n // Check that swiper should be inside of visible area of window\r\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\r\n return undefined;\r\n }\r\n const el = swiper.el;\r\n const swiperWidth = el.clientWidth;\r\n const swiperHeight = el.clientHeight;\r\n const windowWidth = window.innerWidth;\r\n const windowHeight = window.innerHeight;\r\n const swiperOffset = elementOffset(el);\r\n if (rtl)\r\n swiperOffset.left -= el.scrollLeft;\r\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\r\n for (let i = 0; i < swiperCoord.length; i += 1) {\r\n const point = swiperCoord[i];\r\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\r\n if (point[0] === 0 && point[1] === 0)\r\n continue; // eslint-disable-line\r\n inView = true;\r\n }\r\n }\r\n if (!inView)\r\n return undefined;\r\n }\r\n if (swiper.isHorizontal()) {\r\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n else\r\n e.returnValue = false;\r\n }\r\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl)\r\n swiper.slideNext();\r\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl)\r\n swiper.slidePrev();\r\n }\r\n else {\r\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n else\r\n e.returnValue = false;\r\n }\r\n if (isPageDown || isArrowDown)\r\n swiper.slideNext();\r\n if (isPageUp || isArrowUp)\r\n swiper.slidePrev();\r\n }\r\n emit('keyPress', kc);\r\n return undefined;\r\n }\r\n function enable() {\r\n if (swiper.keyboard.enabled)\r\n return;\r\n document.addEventListener('keydown', handle);\r\n swiper.keyboard.enabled = true;\r\n }\r\n function disable() {\r\n if (!swiper.keyboard.enabled)\r\n return;\r\n document.removeEventListener('keydown', handle);\r\n swiper.keyboard.enabled = false;\r\n }\r\n on('init', () => {\r\n if (swiper.params.keyboard.enabled) {\r\n enable();\r\n }\r\n });\r\n on('destroy', () => {\r\n if (swiper.keyboard.enabled) {\r\n disable();\r\n }\r\n });\r\n Object.assign(swiper.keyboard, {\r\n enable,\r\n disable\r\n });\r\n }\r\n /* eslint-disable consistent-return */\r\n function Mousewheel(_ref) {\r\n let { swiper, extendParams, on, emit } = _ref;\r\n const window = getWindow();\r\n extendParams({\r\n mousewheel: {\r\n enabled: false,\r\n releaseOnEdges: false,\r\n invert: false,\r\n forceToAxis: false,\r\n sensitivity: 1,\r\n eventsTarget: 'container',\r\n thresholdDelta: null,\r\n thresholdTime: null,\r\n noMousewheelClass: 'swiper-no-mousewheel'\r\n }\r\n });\r\n swiper.mousewheel = {\r\n enabled: false\r\n };\r\n let timeout;\r\n let lastScrollTime = now();\r\n let lastEventBeforeSnap;\r\n const recentWheelEvents = [];\r\n function normalize(e) {\r\n // Reasonable defaults\r\n const PIXEL_STEP = 10;\r\n const LINE_HEIGHT = 40;\r\n const PAGE_HEIGHT = 800;\r\n let sX = 0;\r\n let sY = 0; // spinX, spinY\r\n let pX = 0;\r\n let pY = 0; // pixelX, pixelY\r\n // Legacy\r\n if ('detail' in e) {\r\n sY = e.detail;\r\n }\r\n if ('wheelDelta' in e) {\r\n sY = -e.wheelDelta / 120;\r\n }\r\n if ('wheelDeltaY' in e) {\r\n sY = -e.wheelDeltaY / 120;\r\n }\r\n if ('wheelDeltaX' in e) {\r\n sX = -e.wheelDeltaX / 120;\r\n }\r\n // side scrolling on FF with DOMMouseScroll\r\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\r\n sX = sY;\r\n sY = 0;\r\n }\r\n pX = sX * PIXEL_STEP;\r\n pY = sY * PIXEL_STEP;\r\n if ('deltaY' in e) {\r\n pY = e.deltaY;\r\n }\r\n if ('deltaX' in e) {\r\n pX = e.deltaX;\r\n }\r\n if (e.shiftKey && !pX) {\r\n // if user scrolls with shift he wants horizontal scroll\r\n pX = pY;\r\n pY = 0;\r\n }\r\n if ((pX || pY) && e.deltaMode) {\r\n if (e.deltaMode === 1) {\r\n // delta in LINE units\r\n pX *= LINE_HEIGHT;\r\n pY *= LINE_HEIGHT;\r\n }\r\n else {\r\n // delta in PAGE units\r\n pX *= PAGE_HEIGHT;\r\n pY *= PAGE_HEIGHT;\r\n }\r\n }\r\n // Fall-back if spin cannot be determined\r\n if (pX && !sX) {\r\n sX = pX < 1 ? -1 : 1;\r\n }\r\n if (pY && !sY) {\r\n sY = pY < 1 ? -1 : 1;\r\n }\r\n return {\r\n spinX: sX,\r\n spinY: sY,\r\n pixelX: pX,\r\n pixelY: pY\r\n };\r\n }\r\n function handleMouseEnter() {\r\n if (!swiper.enabled)\r\n return;\r\n swiper.mouseEntered = true;\r\n }\r\n function handleMouseLeave() {\r\n if (!swiper.enabled)\r\n return;\r\n swiper.mouseEntered = false;\r\n }\r\n function animateSlider(newEvent) {\r\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\r\n // Prevent if delta of wheel scroll delta is below configured threshold\r\n return false;\r\n }\r\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\r\n // Prevent if time between scrolls is below configured threshold\r\n return false;\r\n }\r\n // If the movement is NOT big enough and\r\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\r\n // Don't go any further (avoid insignificant scroll movement).\r\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\r\n // Return false as a default\r\n return true;\r\n }\r\n // If user is scrolling towards the end:\r\n // If the slider hasn't hit the latest slide or\r\n // if the slider is a loop and\r\n // if the slider isn't moving right now:\r\n // Go to next slide and\r\n // emit a scroll event.\r\n // Else (the user is scrolling towards the beginning) and\r\n // if the slider hasn't hit the first slide or\r\n // if the slider is a loop and\r\n // if the slider isn't moving right now:\r\n // Go to prev slide and\r\n // emit a scroll event.\r\n if (newEvent.direction < 0) {\r\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\r\n swiper.slideNext();\r\n emit('scroll', newEvent.raw);\r\n }\r\n }\r\n else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\r\n swiper.slidePrev();\r\n emit('scroll', newEvent.raw);\r\n }\r\n // If you got here is because an animation has been triggered so store the current time\r\n lastScrollTime = new window.Date().getTime();\r\n // Return false as a default\r\n return false;\r\n }\r\n function releaseScroll(newEvent) {\r\n const params = swiper.params.mousewheel;\r\n if (newEvent.direction < 0) {\r\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\r\n // Return true to animate scroll on edges\r\n return true;\r\n }\r\n }\r\n else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\r\n // Return true to animate scroll on edges\r\n return true;\r\n }\r\n return false;\r\n }\r\n function handle(event) {\r\n let e = event;\r\n let disableParentSwiper = true;\r\n if (!swiper.enabled)\r\n return;\r\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\r\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`))\r\n return;\r\n const params = swiper.params.mousewheel;\r\n if (swiper.params.cssMode) {\r\n e.preventDefault();\r\n }\r\n let targetEl = swiper.el;\r\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\r\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\r\n }\r\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\r\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges)\r\n return true;\r\n if (e.originalEvent)\r\n e = e.originalEvent; // jquery fix\r\n let delta = 0;\r\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\r\n const data = normalize(e);\r\n if (params.forceToAxis) {\r\n if (swiper.isHorizontal()) {\r\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY))\r\n delta = -data.pixelX * rtlFactor;\r\n else\r\n return true;\r\n }\r\n else if (Math.abs(data.pixelY) > Math.abs(data.pixelX))\r\n delta = -data.pixelY;\r\n else\r\n return true;\r\n }\r\n else {\r\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\r\n }\r\n if (delta === 0)\r\n return true;\r\n if (params.invert)\r\n delta = -delta;\r\n // Get the scroll positions\r\n let positions = swiper.getTranslate() + delta * params.sensitivity;\r\n if (positions >= swiper.minTranslate())\r\n positions = swiper.minTranslate();\r\n if (positions <= swiper.maxTranslate())\r\n positions = swiper.maxTranslate();\r\n // When loop is true:\r\n // the disableParentSwiper will be true.\r\n // When loop is false:\r\n // if the scroll positions is not on edge,\r\n // then the disableParentSwiper will be true.\r\n // if the scroll on edge positions,\r\n // then the disableParentSwiper will be false.\r\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\r\n if (disableParentSwiper && swiper.params.nested)\r\n e.stopPropagation();\r\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\r\n // Register the new event in a variable which stores the relevant data\r\n const newEvent = {\r\n time: now(),\r\n delta: Math.abs(delta),\r\n direction: Math.sign(delta),\r\n raw: event\r\n };\r\n // Keep the most recent events\r\n if (recentWheelEvents.length >= 2) {\r\n recentWheelEvents.shift(); // only store the last N events\r\n }\r\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\r\n recentWheelEvents.push(newEvent);\r\n // If there is at least one previous recorded event:\r\n // If direction has changed or\r\n // if the scroll is quicker than the previous one:\r\n // Animate the slider.\r\n // Else (this is the first time the wheel is moved):\r\n // Animate the slider.\r\n if (prevEvent) {\r\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\r\n animateSlider(newEvent);\r\n }\r\n }\r\n else {\r\n animateSlider(newEvent);\r\n }\r\n // If it's time to release the scroll:\r\n // Return now so you don't hit the preventDefault.\r\n if (releaseScroll(newEvent)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n // Freemode or scrollContainer:\r\n // If we recently snapped after a momentum scroll, then ignore wheel events\r\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\r\n // or if it's a new scroll (larger delta or inverse sign as last event before\r\n // an end-of-momentum snap).\r\n const newEvent = {\r\n time: now(),\r\n delta: Math.abs(delta),\r\n direction: Math.sign(delta)\r\n };\r\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\r\n if (!ignoreWheelEvents) {\r\n lastEventBeforeSnap = undefined;\r\n let position = swiper.getTranslate() + delta * params.sensitivity;\r\n const wasBeginning = swiper.isBeginning;\r\n const wasEnd = swiper.isEnd;\r\n if (position >= swiper.minTranslate())\r\n position = swiper.minTranslate();\r\n if (position <= swiper.maxTranslate())\r\n position = swiper.maxTranslate();\r\n swiper.setTransition(0);\r\n swiper.setTranslate(position);\r\n swiper.updateProgress();\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\r\n swiper.updateSlidesClasses();\r\n }\r\n if (swiper.params.loop) {\r\n swiper.loopFix({\r\n direction: newEvent.direction < 0 ? 'next' : 'prev',\r\n byMousewheel: true\r\n });\r\n }\r\n if (swiper.params.freeMode.sticky) {\r\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\r\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\r\n // 1. do all N events have decreasing or same (absolute value) delta?\r\n // 2. did all N events arrive in the last M (M=500?) msecs?\r\n // 3. does the earliest event have an (absolute value) delta that's\r\n // at least P (P=1?) larger than the most recent event's delta?\r\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\r\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\r\n // Snap immediately and ignore remaining wheel events in this scroll.\r\n // See comment above for \"remaining wheel events in this scroll\" determination.\r\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\r\n clearTimeout(timeout);\r\n timeout = undefined;\r\n if (recentWheelEvents.length >= 15) {\r\n recentWheelEvents.shift(); // only store the last N events\r\n }\r\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\r\n const firstEvent = recentWheelEvents[0];\r\n recentWheelEvents.push(newEvent);\r\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\r\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\r\n recentWheelEvents.splice(0);\r\n }\r\n else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\r\n // We're at the end of the deceleration of a momentum scroll, so there's no need\r\n // to wait for more events. Snap ASAP on the next tick.\r\n // Also, because there's some remaining momentum we'll bias the snap in the\r\n // direction of the ongoing scroll because it's better UX for the scroll to snap\r\n // in the same direction as the scroll instead of reversing to snap. Therefore,\r\n // if it's already scrolled more than 20% in the current direction, keep going.\r\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\r\n lastEventBeforeSnap = newEvent;\r\n recentWheelEvents.splice(0);\r\n timeout = nextTick(() => {\r\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\r\n }, 0); // no delay; move on next tick\r\n }\r\n if (!timeout) {\r\n // if we get here, then we haven't detected the end of a momentum scroll, so\r\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\r\n // for 500ms.\r\n timeout = nextTick(() => {\r\n const snapToThreshold = 0.5;\r\n lastEventBeforeSnap = newEvent;\r\n recentWheelEvents.splice(0);\r\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\r\n }, 500);\r\n }\r\n }\r\n // Emit event\r\n if (!ignoreWheelEvents)\r\n emit('scroll', e);\r\n // Stop autoplay\r\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\r\n swiper.autoplay.stop();\r\n // Return page scroll on edge positions\r\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n else\r\n e.returnValue = false;\r\n return false;\r\n }\r\n function events(method) {\r\n let targetEl = swiper.el;\r\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\r\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\r\n }\r\n targetEl[method]('mouseenter', handleMouseEnter);\r\n targetEl[method]('mouseleave', handleMouseLeave);\r\n targetEl[method]('wheel', handle);\r\n }\r\n function enable() {\r\n if (swiper.params.cssMode) {\r\n swiper.wrapperEl.removeEventListener('wheel', handle);\r\n return true;\r\n }\r\n if (swiper.mousewheel.enabled)\r\n return false;\r\n events('addEventListener');\r\n swiper.mousewheel.enabled = true;\r\n return true;\r\n }\r\n function disable() {\r\n if (swiper.params.cssMode) {\r\n swiper.wrapperEl.addEventListener(event, handle);\r\n return true;\r\n }\r\n if (!swiper.mousewheel.enabled)\r\n return false;\r\n events('removeEventListener');\r\n swiper.mousewheel.enabled = false;\r\n return true;\r\n }\r\n on('init', () => {\r\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\r\n disable();\r\n }\r\n if (swiper.params.mousewheel.enabled)\r\n enable();\r\n });\r\n on('destroy', () => {\r\n if (swiper.params.cssMode) {\r\n enable();\r\n }\r\n if (swiper.mousewheel.enabled)\r\n disable();\r\n });\r\n Object.assign(swiper.mousewheel, {\r\n enable,\r\n disable\r\n });\r\n }\r\n function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\r\n if (swiper.params.createElements) {\r\n Object.keys(checkProps).forEach(key => {\r\n if (!params[key] && params.auto === true) {\r\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\r\n if (!element) {\r\n element = createElement('div', checkProps[key]);\r\n element.className = checkProps[key];\r\n swiper.el.append(element);\r\n }\r\n params[key] = element;\r\n originalParams[key] = element;\r\n }\r\n });\r\n }\r\n return params;\r\n }\r\n function Navigation(_ref) {\r\n let { swiper, extendParams, on, emit } = _ref;\r\n extendParams({\r\n navigation: {\r\n nextEl: null,\r\n prevEl: null,\r\n hideOnClick: false,\r\n disabledClass: 'swiper-button-disabled',\r\n hiddenClass: 'swiper-button-hidden',\r\n lockClass: 'swiper-button-lock',\r\n navigationDisabledClass: 'swiper-navigation-disabled'\r\n }\r\n });\r\n swiper.navigation = {\r\n nextEl: null,\r\n prevEl: null\r\n };\r\n function getEl(el) {\r\n let res;\r\n if (el && typeof el === 'string' && swiper.isElement) {\r\n res = swiper.el.querySelector(el);\r\n if (res)\r\n return res;\r\n }\r\n if (el) {\r\n if (typeof el === 'string')\r\n res = [...document.querySelectorAll(el)];\r\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\r\n res = swiper.el.querySelector(el);\r\n }\r\n }\r\n if (el && !res)\r\n return el;\r\n // if (Array.isArray(res) && res.length === 1) res = res[0];\r\n return res;\r\n }\r\n function toggleEl(el, disabled) {\r\n const params = swiper.params.navigation;\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n if (subEl) {\r\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\r\n if (subEl.tagName === 'BUTTON')\r\n subEl.disabled = disabled;\r\n if (swiper.params.watchOverflow && swiper.enabled) {\r\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\r\n }\r\n }\r\n });\r\n }\r\n function update() {\r\n // Update Navigation Buttons\r\n const { nextEl, prevEl } = swiper.navigation;\r\n if (swiper.params.loop) {\r\n toggleEl(prevEl, false);\r\n toggleEl(nextEl, false);\r\n return;\r\n }\r\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\r\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\r\n }\r\n function onPrevClick(e) {\r\n e.preventDefault();\r\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind)\r\n return;\r\n swiper.slidePrev();\r\n emit('navigationPrev');\r\n }\r\n function onNextClick(e) {\r\n e.preventDefault();\r\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind)\r\n return;\r\n swiper.slideNext();\r\n emit('navigationNext');\r\n }\r\n function init() {\r\n const params = swiper.params.navigation;\r\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\r\n nextEl: 'swiper-button-next',\r\n prevEl: 'swiper-button-prev'\r\n });\r\n if (!(params.nextEl || params.prevEl))\r\n return;\r\n let nextEl = getEl(params.nextEl);\r\n let prevEl = getEl(params.prevEl);\r\n Object.assign(swiper.navigation, {\r\n nextEl,\r\n prevEl\r\n });\r\n nextEl = makeElementsArray(nextEl);\r\n prevEl = makeElementsArray(prevEl);\r\n const initButton = (el, dir) => {\r\n if (el) {\r\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\r\n }\r\n if (!swiper.enabled && el) {\r\n el.classList.add(...params.lockClass.split(' '));\r\n }\r\n };\r\n nextEl.forEach(el => initButton(el, 'next'));\r\n prevEl.forEach(el => initButton(el, 'prev'));\r\n }\r\n function destroy() {\r\n let { nextEl, prevEl } = swiper.navigation;\r\n nextEl = makeElementsArray(nextEl);\r\n prevEl = makeElementsArray(prevEl);\r\n const destroyButton = (el, dir) => {\r\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\r\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\r\n };\r\n nextEl.forEach(el => destroyButton(el, 'next'));\r\n prevEl.forEach(el => destroyButton(el, 'prev'));\r\n }\r\n on('init', () => {\r\n if (swiper.params.navigation.enabled === false) {\r\n // eslint-disable-next-line\r\n disable();\r\n }\r\n else {\r\n init();\r\n update();\r\n }\r\n });\r\n on('toEdge fromEdge lock unlock', () => {\r\n update();\r\n });\r\n on('destroy', () => {\r\n destroy();\r\n });\r\n on('enable disable', () => {\r\n let { nextEl, prevEl } = swiper.navigation;\r\n nextEl = makeElementsArray(nextEl);\r\n prevEl = makeElementsArray(prevEl);\r\n if (swiper.enabled) {\r\n update();\r\n return;\r\n }\r\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\r\n });\r\n on('click', (_s, e) => {\r\n let { nextEl, prevEl } = swiper.navigation;\r\n nextEl = makeElementsArray(nextEl);\r\n prevEl = makeElementsArray(prevEl);\r\n const targetEl = e.target;\r\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\r\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl)))\r\n return;\r\n let isHidden;\r\n if (nextEl.length) {\r\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\r\n }\r\n else if (prevEl.length) {\r\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\r\n }\r\n if (isHidden === true) {\r\n emit('navigationShow');\r\n }\r\n else {\r\n emit('navigationHide');\r\n }\r\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\r\n }\r\n });\r\n const enable = () => {\r\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\r\n init();\r\n update();\r\n };\r\n const disable = () => {\r\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\r\n destroy();\r\n };\r\n Object.assign(swiper.navigation, {\r\n enable,\r\n disable,\r\n update,\r\n init,\r\n destroy\r\n });\r\n }\r\n function classesToSelector(classes) {\r\n if (classes === void 0) {\r\n classes = '';\r\n }\r\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\r\n .replace(/ /g, '.')}`;\r\n }\r\n function Pagination(_ref) {\r\n let { swiper, extendParams, on, emit } = _ref;\r\n const pfx = 'swiper-pagination';\r\n extendParams({\r\n pagination: {\r\n el: null,\r\n bulletElement: 'span',\r\n clickable: false,\r\n hideOnClick: false,\r\n renderBullet: null,\r\n renderProgressbar: null,\r\n renderFraction: null,\r\n renderCustom: null,\r\n progressbarOpposite: false,\r\n type: 'bullets',\r\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\r\n dynamicBullets: false,\r\n dynamicMainBullets: 1,\r\n formatFractionCurrent: number => number,\r\n formatFractionTotal: number => number,\r\n bulletClass: `${pfx}-bullet`,\r\n bulletActiveClass: `${pfx}-bullet-active`,\r\n modifierClass: `${pfx}-`,\r\n currentClass: `${pfx}-current`,\r\n totalClass: `${pfx}-total`,\r\n hiddenClass: `${pfx}-hidden`,\r\n progressbarFillClass: `${pfx}-progressbar-fill`,\r\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\r\n clickableClass: `${pfx}-clickable`,\r\n lockClass: `${pfx}-lock`,\r\n horizontalClass: `${pfx}-horizontal`,\r\n verticalClass: `${pfx}-vertical`,\r\n paginationDisabledClass: `${pfx}-disabled`\r\n }\r\n });\r\n swiper.pagination = {\r\n el: null,\r\n bullets: []\r\n };\r\n let bulletSize;\r\n let dynamicBulletIndex = 0;\r\n function isPaginationDisabled() {\r\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\r\n }\r\n function setSideBullets(bulletEl, position) {\r\n const { bulletActiveClass } = swiper.params.pagination;\r\n if (!bulletEl)\r\n return;\r\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\r\n if (bulletEl) {\r\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\r\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\r\n if (bulletEl) {\r\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\r\n }\r\n }\r\n }\r\n function onBulletClick(e) {\r\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\r\n if (!bulletEl) {\r\n return;\r\n }\r\n e.preventDefault();\r\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\r\n if (swiper.params.loop) {\r\n if (swiper.realIndex === index)\r\n return;\r\n swiper.slideToLoop(index);\r\n }\r\n else {\r\n swiper.slideTo(index);\r\n }\r\n }\r\n function update() {\r\n // Render || Update Pagination bullets/items\r\n const rtl = swiper.rtl;\r\n const params = swiper.params.pagination;\r\n if (isPaginationDisabled())\r\n return;\r\n let el = swiper.pagination.el;\r\n el = makeElementsArray(el);\r\n // Current/Total\r\n let current;\r\n let previousIndex;\r\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\r\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\r\n if (swiper.params.loop) {\r\n previousIndex = swiper.previousRealIndex || 0;\r\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\r\n }\r\n else if (typeof swiper.snapIndex !== 'undefined') {\r\n current = swiper.snapIndex;\r\n previousIndex = swiper.previousSnapIndex;\r\n }\r\n else {\r\n previousIndex = swiper.previousIndex || 0;\r\n current = swiper.activeIndex || 0;\r\n }\r\n // Types\r\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\r\n const bullets = swiper.pagination.bullets;\r\n let firstIndex;\r\n let lastIndex;\r\n let midIndex;\r\n if (params.dynamicBullets) {\r\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\r\n el.forEach(subEl => {\r\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\r\n });\r\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\r\n dynamicBulletIndex += current - (previousIndex || 0);\r\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\r\n dynamicBulletIndex = params.dynamicMainBullets - 1;\r\n }\r\n else if (dynamicBulletIndex < 0) {\r\n dynamicBulletIndex = 0;\r\n }\r\n }\r\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\r\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\r\n midIndex = (lastIndex + firstIndex) / 2;\r\n }\r\n bullets.forEach(bulletEl => {\r\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();\r\n bulletEl.classList.remove(...classesToRemove);\r\n });\r\n if (el.length > 1) {\r\n bullets.forEach(bullet => {\r\n const bulletIndex = elementIndex(bullet);\r\n if (bulletIndex === current) {\r\n bullet.classList.add(...params.bulletActiveClass.split(' '));\r\n }\r\n else if (swiper.isElement) {\r\n bullet.setAttribute('part', 'bullet');\r\n }\r\n if (params.dynamicBullets) {\r\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\r\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\r\n }\r\n if (bulletIndex === firstIndex) {\r\n setSideBullets(bullet, 'prev');\r\n }\r\n if (bulletIndex === lastIndex) {\r\n setSideBullets(bullet, 'next');\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n const bullet = bullets[current];\r\n if (bullet) {\r\n bullet.classList.add(...params.bulletActiveClass.split(' '));\r\n }\r\n if (swiper.isElement) {\r\n bullets.forEach((bulletEl, bulletIndex) => {\r\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\r\n });\r\n }\r\n if (params.dynamicBullets) {\r\n const firstDisplayedBullet = bullets[firstIndex];\r\n const lastDisplayedBullet = bullets[lastIndex];\r\n for (let i = firstIndex; i <= lastIndex; i += 1) {\r\n if (bullets[i]) {\r\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\r\n }\r\n }\r\n setSideBullets(firstDisplayedBullet, 'prev');\r\n setSideBullets(lastDisplayedBullet, 'next');\r\n }\r\n }\r\n if (params.dynamicBullets) {\r\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\r\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\r\n const offsetProp = rtl ? 'right' : 'left';\r\n bullets.forEach(bullet => {\r\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\r\n });\r\n }\r\n }\r\n el.forEach((subEl, subElIndex) => {\r\n if (params.type === 'fraction') {\r\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\r\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\r\n });\r\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\r\n totalEl.textContent = params.formatFractionTotal(total);\r\n });\r\n }\r\n if (params.type === 'progressbar') {\r\n let progressbarDirection;\r\n if (params.progressbarOpposite) {\r\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\r\n }\r\n else {\r\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\r\n }\r\n const scale = (current + 1) / total;\r\n let scaleX = 1;\r\n let scaleY = 1;\r\n if (progressbarDirection === 'horizontal') {\r\n scaleX = scale;\r\n }\r\n else {\r\n scaleY = scale;\r\n }\r\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\r\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\r\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\r\n });\r\n }\r\n if (params.type === 'custom' && params.renderCustom) {\r\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\r\n if (subElIndex === 0)\r\n emit('paginationRender', subEl);\r\n }\r\n else {\r\n if (subElIndex === 0)\r\n emit('paginationRender', subEl);\r\n emit('paginationUpdate', subEl);\r\n }\r\n if (swiper.params.watchOverflow && swiper.enabled) {\r\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\r\n }\r\n });\r\n }\r\n function render() {\r\n // Render Container\r\n const params = swiper.params.pagination;\r\n if (isPaginationDisabled())\r\n return;\r\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;\r\n let el = swiper.pagination.el;\r\n el = makeElementsArray(el);\r\n let paginationHTML = '';\r\n if (params.type === 'bullets') {\r\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\r\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\r\n numberOfBullets = slidesLength;\r\n }\r\n for (let i = 0; i < numberOfBullets; i += 1) {\r\n if (params.renderBullet) {\r\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\r\n }\r\n else {\r\n // prettier-ignore\r\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\r\n }\r\n }\r\n }\r\n if (params.type === 'fraction') {\r\n if (params.renderFraction) {\r\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\r\n }\r\n else {\r\n paginationHTML = `` + ' / ' + ``;\r\n }\r\n }\r\n if (params.type === 'progressbar') {\r\n if (params.renderProgressbar) {\r\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\r\n }\r\n else {\r\n paginationHTML = ``;\r\n }\r\n }\r\n swiper.pagination.bullets = [];\r\n el.forEach(subEl => {\r\n if (params.type !== 'custom') {\r\n subEl.innerHTML = paginationHTML || '';\r\n }\r\n if (params.type === 'bullets') {\r\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\r\n }\r\n });\r\n if (params.type !== 'custom') {\r\n emit('paginationRender', el[0]);\r\n }\r\n }\r\n function init() {\r\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\r\n el: 'swiper-pagination'\r\n });\r\n const params = swiper.params.pagination;\r\n if (!params.el)\r\n return;\r\n let el;\r\n if (typeof params.el === 'string' && swiper.isElement) {\r\n el = swiper.el.querySelector(params.el);\r\n }\r\n if (!el && typeof params.el === 'string') {\r\n el = [...document.querySelectorAll(params.el)];\r\n }\r\n if (!el) {\r\n el = params.el;\r\n }\r\n if (!el || el.length === 0)\r\n return;\r\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\r\n el = [...swiper.el.querySelectorAll(params.el)];\r\n // check if it belongs to another nested Swiper\r\n if (el.length > 1) {\r\n el = el.filter(subEl => {\r\n if (elementParents(subEl, '.swiper')[0] !== swiper.el)\r\n return false;\r\n return true;\r\n })[0];\r\n }\r\n }\r\n if (Array.isArray(el) && el.length === 1)\r\n el = el[0];\r\n Object.assign(swiper.pagination, {\r\n el\r\n });\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n if (params.type === 'bullets' && params.clickable) {\r\n subEl.classList.add(...(params.clickableClass || '').split(' '));\r\n }\r\n subEl.classList.add(params.modifierClass + params.type);\r\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n if (params.type === 'bullets' && params.dynamicBullets) {\r\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\r\n dynamicBulletIndex = 0;\r\n if (params.dynamicMainBullets < 1) {\r\n params.dynamicMainBullets = 1;\r\n }\r\n }\r\n if (params.type === 'progressbar' && params.progressbarOpposite) {\r\n subEl.classList.add(params.progressbarOppositeClass);\r\n }\r\n if (params.clickable) {\r\n subEl.addEventListener('click', onBulletClick);\r\n }\r\n if (!swiper.enabled) {\r\n subEl.classList.add(params.lockClass);\r\n }\r\n });\r\n }\r\n function destroy() {\r\n const params = swiper.params.pagination;\r\n if (isPaginationDisabled())\r\n return;\r\n let el = swiper.pagination.el;\r\n if (el) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.classList.remove(params.hiddenClass);\r\n subEl.classList.remove(params.modifierClass + params.type);\r\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n if (params.clickable) {\r\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\r\n subEl.removeEventListener('click', onBulletClick);\r\n }\r\n });\r\n }\r\n if (swiper.pagination.bullets)\r\n swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\r\n }\r\n on('changeDirection', () => {\r\n if (!swiper.pagination || !swiper.pagination.el)\r\n return;\r\n const params = swiper.params.pagination;\r\n let { el } = swiper.pagination;\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\r\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n });\r\n });\r\n on('init', () => {\r\n if (swiper.params.pagination.enabled === false) {\r\n // eslint-disable-next-line\r\n disable();\r\n }\r\n else {\r\n init();\r\n render();\r\n update();\r\n }\r\n });\r\n on('activeIndexChange', () => {\r\n if (typeof swiper.snapIndex === 'undefined') {\r\n update();\r\n }\r\n });\r\n on('snapIndexChange', () => {\r\n update();\r\n });\r\n on('snapGridLengthChange', () => {\r\n render();\r\n update();\r\n });\r\n on('destroy', () => {\r\n destroy();\r\n });\r\n on('enable disable', () => {\r\n let { el } = swiper.pagination;\r\n if (el) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\r\n }\r\n });\r\n on('lock unlock', () => {\r\n update();\r\n });\r\n on('click', (_s, e) => {\r\n const targetEl = e.target;\r\n const el = makeElementsArray(swiper.pagination.el);\r\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\r\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\r\n return;\r\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\r\n if (isHidden === true) {\r\n emit('paginationShow');\r\n }\r\n else {\r\n emit('paginationHide');\r\n }\r\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\r\n }\r\n });\r\n const enable = () => {\r\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\r\n let { el } = swiper.pagination;\r\n if (el) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\r\n }\r\n init();\r\n render();\r\n update();\r\n };\r\n const disable = () => {\r\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\r\n let { el } = swiper.pagination;\r\n if (el) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\r\n }\r\n destroy();\r\n };\r\n Object.assign(swiper.pagination, {\r\n enable,\r\n disable,\r\n render,\r\n update,\r\n init,\r\n destroy\r\n });\r\n }\r\n function Scrollbar(_ref) {\r\n let { swiper, extendParams, on, emit } = _ref;\r\n const document = getDocument();\r\n let isTouched = false;\r\n let timeout = null;\r\n let dragTimeout = null;\r\n let dragStartPos;\r\n let dragSize;\r\n let trackSize;\r\n let divider;\r\n extendParams({\r\n scrollbar: {\r\n el: null,\r\n dragSize: 'auto',\r\n hide: false,\r\n draggable: false,\r\n snapOnRelease: true,\r\n lockClass: 'swiper-scrollbar-lock',\r\n dragClass: 'swiper-scrollbar-drag',\r\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\r\n horizontalClass: `swiper-scrollbar-horizontal`,\r\n verticalClass: `swiper-scrollbar-vertical`\r\n }\r\n });\r\n swiper.scrollbar = {\r\n el: null,\r\n dragEl: null\r\n };\r\n function setTranslate() {\r\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\r\n return;\r\n const { scrollbar, rtlTranslate: rtl } = swiper;\r\n const { dragEl, el } = scrollbar;\r\n const params = swiper.params.scrollbar;\r\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\r\n let newSize = dragSize;\r\n let newPos = (trackSize - dragSize) * progress;\r\n if (rtl) {\r\n newPos = -newPos;\r\n if (newPos > 0) {\r\n newSize = dragSize - newPos;\r\n newPos = 0;\r\n }\r\n else if (-newPos + dragSize > trackSize) {\r\n newSize = trackSize + newPos;\r\n }\r\n }\r\n else if (newPos < 0) {\r\n newSize = dragSize + newPos;\r\n newPos = 0;\r\n }\r\n else if (newPos + dragSize > trackSize) {\r\n newSize = trackSize - newPos;\r\n }\r\n if (swiper.isHorizontal()) {\r\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\r\n dragEl.style.width = `${newSize}px`;\r\n }\r\n else {\r\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\r\n dragEl.style.height = `${newSize}px`;\r\n }\r\n if (params.hide) {\r\n clearTimeout(timeout);\r\n el.style.opacity = 1;\r\n timeout = setTimeout(() => {\r\n el.style.opacity = 0;\r\n el.style.transitionDuration = '400ms';\r\n }, 1000);\r\n }\r\n }\r\n function setTransition(duration) {\r\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\r\n return;\r\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\r\n }\r\n function updateSize() {\r\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\r\n return;\r\n const { scrollbar } = swiper;\r\n const { dragEl, el } = scrollbar;\r\n dragEl.style.width = '';\r\n dragEl.style.height = '';\r\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\r\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\r\n if (swiper.params.scrollbar.dragSize === 'auto') {\r\n dragSize = trackSize * divider;\r\n }\r\n else {\r\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\r\n }\r\n if (swiper.isHorizontal()) {\r\n dragEl.style.width = `${dragSize}px`;\r\n }\r\n else {\r\n dragEl.style.height = `${dragSize}px`;\r\n }\r\n if (divider >= 1) {\r\n el.style.display = 'none';\r\n }\r\n else {\r\n el.style.display = '';\r\n }\r\n if (swiper.params.scrollbar.hide) {\r\n el.style.opacity = 0;\r\n }\r\n if (swiper.params.watchOverflow && swiper.enabled) {\r\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\r\n }\r\n }\r\n function getPointerPosition(e) {\r\n return swiper.isHorizontal() ? e.clientX : e.clientY;\r\n }\r\n function setDragPosition(e) {\r\n const { scrollbar, rtlTranslate: rtl } = swiper;\r\n const { el } = scrollbar;\r\n let positionRatio;\r\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\r\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\r\n if (rtl) {\r\n positionRatio = 1 - positionRatio;\r\n }\r\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\r\n swiper.updateProgress(position);\r\n swiper.setTranslate(position);\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n function onDragStart(e) {\r\n const params = swiper.params.scrollbar;\r\n const { scrollbar, wrapperEl } = swiper;\r\n const { el, dragEl } = scrollbar;\r\n isTouched = true;\r\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n wrapperEl.style.transitionDuration = '100ms';\r\n dragEl.style.transitionDuration = '100ms';\r\n setDragPosition(e);\r\n clearTimeout(dragTimeout);\r\n el.style.transitionDuration = '0ms';\r\n if (params.hide) {\r\n el.style.opacity = 1;\r\n }\r\n if (swiper.params.cssMode) {\r\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\r\n }\r\n emit('scrollbarDragStart', e);\r\n }\r\n function onDragMove(e) {\r\n const { scrollbar, wrapperEl } = swiper;\r\n const { el, dragEl } = scrollbar;\r\n if (!isTouched)\r\n return;\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n else\r\n e.returnValue = false;\r\n setDragPosition(e);\r\n wrapperEl.style.transitionDuration = '0ms';\r\n el.style.transitionDuration = '0ms';\r\n dragEl.style.transitionDuration = '0ms';\r\n emit('scrollbarDragMove', e);\r\n }\r\n function onDragEnd(e) {\r\n const params = swiper.params.scrollbar;\r\n const { scrollbar, wrapperEl } = swiper;\r\n const { el } = scrollbar;\r\n if (!isTouched)\r\n return;\r\n isTouched = false;\r\n if (swiper.params.cssMode) {\r\n swiper.wrapperEl.style['scroll-snap-type'] = '';\r\n wrapperEl.style.transitionDuration = '';\r\n }\r\n if (params.hide) {\r\n clearTimeout(dragTimeout);\r\n dragTimeout = nextTick(() => {\r\n el.style.opacity = 0;\r\n el.style.transitionDuration = '400ms';\r\n }, 1000);\r\n }\r\n emit('scrollbarDragEnd', e);\r\n if (params.snapOnRelease) {\r\n swiper.slideToClosest();\r\n }\r\n }\r\n function events(method) {\r\n const { scrollbar, params } = swiper;\r\n const el = scrollbar.el;\r\n if (!el)\r\n return;\r\n const target = el;\r\n const activeListener = params.passiveListeners ? {\r\n passive: false,\r\n capture: false\r\n } : false;\r\n const passiveListener = params.passiveListeners ? {\r\n passive: true,\r\n capture: false\r\n } : false;\r\n if (!target)\r\n return;\r\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\r\n target[eventMethod]('pointerdown', onDragStart, activeListener);\r\n document[eventMethod]('pointermove', onDragMove, activeListener);\r\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\r\n }\r\n function enableDraggable() {\r\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\r\n return;\r\n events('on');\r\n }\r\n function disableDraggable() {\r\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\r\n return;\r\n events('off');\r\n }\r\n function init() {\r\n const { scrollbar, el: swiperEl } = swiper;\r\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\r\n el: 'swiper-scrollbar'\r\n });\r\n const params = swiper.params.scrollbar;\r\n if (!params.el)\r\n return;\r\n let el;\r\n if (typeof params.el === 'string' && swiper.isElement) {\r\n el = swiper.el.querySelector(params.el);\r\n }\r\n if (!el && typeof params.el === 'string') {\r\n el = document.querySelectorAll(params.el);\r\n if (!el.length)\r\n return;\r\n }\r\n else if (!el) {\r\n el = params.el;\r\n }\r\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\r\n el = swiperEl.querySelector(params.el);\r\n }\r\n if (el.length > 0)\r\n el = el[0];\r\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n let dragEl;\r\n if (el) {\r\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\r\n if (!dragEl) {\r\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\r\n el.append(dragEl);\r\n }\r\n }\r\n Object.assign(scrollbar, {\r\n el,\r\n dragEl\r\n });\r\n if (params.draggable) {\r\n enableDraggable();\r\n }\r\n if (el) {\r\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\r\n }\r\n }\r\n function destroy() {\r\n const params = swiper.params.scrollbar;\r\n const el = swiper.scrollbar.el;\r\n if (el) {\r\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\r\n }\r\n disableDraggable();\r\n }\r\n on('changeDirection', () => {\r\n if (!swiper.scrollbar || !swiper.scrollbar.el)\r\n return;\r\n const params = swiper.params.scrollbar;\r\n let { el } = swiper.scrollbar;\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\r\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n });\r\n });\r\n on('init', () => {\r\n if (swiper.params.scrollbar.enabled === false) {\r\n // eslint-disable-next-line\r\n disable();\r\n }\r\n else {\r\n init();\r\n updateSize();\r\n setTranslate();\r\n }\r\n });\r\n on('update resize observerUpdate lock unlock changeDirection', () => {\r\n updateSize();\r\n });\r\n on('setTranslate', () => {\r\n setTranslate();\r\n });\r\n on('setTransition', (_s, duration) => {\r\n setTransition(duration);\r\n });\r\n on('enable disable', () => {\r\n const { el } = swiper.scrollbar;\r\n if (el) {\r\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\r\n }\r\n });\r\n on('destroy', () => {\r\n destroy();\r\n });\r\n const enable = () => {\r\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\r\n if (swiper.scrollbar.el) {\r\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\r\n }\r\n init();\r\n updateSize();\r\n setTranslate();\r\n };\r\n const disable = () => {\r\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\r\n if (swiper.scrollbar.el) {\r\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\r\n }\r\n destroy();\r\n };\r\n Object.assign(swiper.scrollbar, {\r\n enable,\r\n disable,\r\n updateSize,\r\n setTranslate,\r\n init,\r\n destroy\r\n });\r\n }\r\n function Parallax(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n parallax: {\r\n enabled: false\r\n }\r\n });\r\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\r\n const setTransform = (el, progress) => {\r\n const { rtl } = swiper;\r\n const rtlFactor = rtl ? -1 : 1;\r\n const p = el.getAttribute('data-swiper-parallax') || '0';\r\n let x = el.getAttribute('data-swiper-parallax-x');\r\n let y = el.getAttribute('data-swiper-parallax-y');\r\n const scale = el.getAttribute('data-swiper-parallax-scale');\r\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\r\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\r\n if (x || y) {\r\n x = x || '0';\r\n y = y || '0';\r\n }\r\n else if (swiper.isHorizontal()) {\r\n x = p;\r\n y = '0';\r\n }\r\n else {\r\n y = p;\r\n x = '0';\r\n }\r\n if (x.indexOf('%') >= 0) {\r\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\r\n }\r\n else {\r\n x = `${x * progress * rtlFactor}px`;\r\n }\r\n if (y.indexOf('%') >= 0) {\r\n y = `${parseInt(y, 10) * progress}%`;\r\n }\r\n else {\r\n y = `${y * progress}px`;\r\n }\r\n if (typeof opacity !== 'undefined' && opacity !== null) {\r\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\r\n el.style.opacity = currentOpacity;\r\n }\r\n let transform = `translate3d(${x}, ${y}, 0px)`;\r\n if (typeof scale !== 'undefined' && scale !== null) {\r\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\r\n transform += ` scale(${currentScale})`;\r\n }\r\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\r\n const currentRotate = rotate * progress * -1;\r\n transform += ` rotate(${currentRotate}deg)`;\r\n }\r\n el.style.transform = transform;\r\n };\r\n const setTranslate = () => {\r\n const { el, slides, progress, snapGrid, isElement } = swiper;\r\n const elements = elementChildren(el, elementsSelector);\r\n if (swiper.isElement) {\r\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\r\n }\r\n elements.forEach(subEl => {\r\n setTransform(subEl, progress);\r\n });\r\n slides.forEach((slideEl, slideIndex) => {\r\n let slideProgress = slideEl.progress;\r\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\r\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\r\n }\r\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\r\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\r\n setTransform(subEl, slideProgress);\r\n });\r\n });\r\n };\r\n const setTransition = function (duration) {\r\n if (duration === void 0) {\r\n duration = swiper.params.speed;\r\n }\r\n const { el, hostEl } = swiper;\r\n const elements = [...el.querySelectorAll(elementsSelector)];\r\n if (swiper.isElement) {\r\n elements.push(...hostEl.querySelectorAll(elementsSelector));\r\n }\r\n elements.forEach(parallaxEl => {\r\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\r\n if (duration === 0)\r\n parallaxDuration = 0;\r\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\r\n });\r\n };\r\n on('beforeInit', () => {\r\n if (!swiper.params.parallax.enabled)\r\n return;\r\n swiper.params.watchSlidesProgress = true;\r\n swiper.originalParams.watchSlidesProgress = true;\r\n });\r\n on('init', () => {\r\n if (!swiper.params.parallax.enabled)\r\n return;\r\n setTranslate();\r\n });\r\n on('setTranslate', () => {\r\n if (!swiper.params.parallax.enabled)\r\n return;\r\n setTranslate();\r\n });\r\n on('setTransition', (_swiper, duration) => {\r\n if (!swiper.params.parallax.enabled)\r\n return;\r\n setTransition(duration);\r\n });\r\n }\r\n function Zoom(_ref) {\r\n let { swiper, extendParams, on, emit } = _ref;\r\n const window = getWindow();\r\n extendParams({\r\n zoom: {\r\n enabled: false,\r\n limitToOriginalSize: false,\r\n maxRatio: 3,\r\n minRatio: 1,\r\n toggle: true,\r\n containerClass: 'swiper-zoom-container',\r\n zoomedSlideClass: 'swiper-slide-zoomed'\r\n }\r\n });\r\n swiper.zoom = {\r\n enabled: false\r\n };\r\n let currentScale = 1;\r\n let isScaling = false;\r\n let fakeGestureTouched;\r\n let fakeGestureMoved;\r\n const evCache = [];\r\n const gesture = {\r\n originX: 0,\r\n originY: 0,\r\n slideEl: undefined,\r\n slideWidth: undefined,\r\n slideHeight: undefined,\r\n imageEl: undefined,\r\n imageWrapEl: undefined,\r\n maxRatio: 3\r\n };\r\n const image = {\r\n isTouched: undefined,\r\n isMoved: undefined,\r\n currentX: undefined,\r\n currentY: undefined,\r\n minX: undefined,\r\n minY: undefined,\r\n maxX: undefined,\r\n maxY: undefined,\r\n width: undefined,\r\n height: undefined,\r\n startX: undefined,\r\n startY: undefined,\r\n touchesStart: {},\r\n touchesCurrent: {}\r\n };\r\n const velocity = {\r\n x: undefined,\r\n y: undefined,\r\n prevPositionX: undefined,\r\n prevPositionY: undefined,\r\n prevTime: undefined\r\n };\r\n let scale = 1;\r\n Object.defineProperty(swiper.zoom, 'scale', {\r\n get() {\r\n return scale;\r\n },\r\n set(value) {\r\n if (scale !== value) {\r\n const imageEl = gesture.imageEl;\r\n const slideEl = gesture.slideEl;\r\n emit('zoomChange', value, imageEl, slideEl);\r\n }\r\n scale = value;\r\n }\r\n });\r\n function getDistanceBetweenTouches() {\r\n if (evCache.length < 2)\r\n return 1;\r\n const x1 = evCache[0].pageX;\r\n const y1 = evCache[0].pageY;\r\n const x2 = evCache[1].pageX;\r\n const y2 = evCache[1].pageY;\r\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\r\n return distance;\r\n }\r\n function getMaxRatio() {\r\n const params = swiper.params.zoom;\r\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\r\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\r\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\r\n return Math.min(imageMaxRatio, maxRatio);\r\n }\r\n return maxRatio;\r\n }\r\n function getScaleOrigin() {\r\n if (evCache.length < 2)\r\n return {\r\n x: null,\r\n y: null\r\n };\r\n const box = gesture.imageEl.getBoundingClientRect();\r\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];\r\n }\r\n function getSlideSelector() {\r\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\r\n }\r\n function eventWithinSlide(e) {\r\n const slideSelector = getSlideSelector();\r\n if (e.target.matches(slideSelector))\r\n return true;\r\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0)\r\n return true;\r\n return false;\r\n }\r\n function eventWithinZoomContainer(e) {\r\n const selector = `.${swiper.params.zoom.containerClass}`;\r\n if (e.target.matches(selector))\r\n return true;\r\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0)\r\n return true;\r\n return false;\r\n }\r\n // Events\r\n function onGestureStart(e) {\r\n if (e.pointerType === 'mouse') {\r\n evCache.splice(0, evCache.length);\r\n }\r\n if (!eventWithinSlide(e))\r\n return;\r\n const params = swiper.params.zoom;\r\n fakeGestureTouched = false;\r\n fakeGestureMoved = false;\r\n evCache.push(e);\r\n if (evCache.length < 2) {\r\n return;\r\n }\r\n fakeGestureTouched = true;\r\n gesture.scaleStart = getDistanceBetweenTouches();\r\n if (!gesture.slideEl) {\r\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\r\n if (!gesture.slideEl)\r\n gesture.slideEl = swiper.slides[swiper.activeIndex];\r\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\r\n if (imageEl) {\r\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\r\n }\r\n gesture.imageEl = imageEl;\r\n if (imageEl) {\r\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\r\n }\r\n else {\r\n gesture.imageWrapEl = undefined;\r\n }\r\n if (!gesture.imageWrapEl) {\r\n gesture.imageEl = undefined;\r\n return;\r\n }\r\n gesture.maxRatio = getMaxRatio();\r\n }\r\n if (gesture.imageEl) {\r\n const [originX, originY] = getScaleOrigin();\r\n gesture.originX = originX;\r\n gesture.originY = originY;\r\n gesture.imageEl.style.transitionDuration = '0ms';\r\n }\r\n isScaling = true;\r\n }\r\n function onGestureChange(e) {\r\n if (!eventWithinSlide(e))\r\n return;\r\n const params = swiper.params.zoom;\r\n const zoom = swiper.zoom;\r\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\r\n if (pointerIndex >= 0)\r\n evCache[pointerIndex] = e;\r\n if (evCache.length < 2) {\r\n return;\r\n }\r\n fakeGestureMoved = true;\r\n gesture.scaleMove = getDistanceBetweenTouches();\r\n if (!gesture.imageEl) {\r\n return;\r\n }\r\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\r\n if (zoom.scale > gesture.maxRatio) {\r\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\r\n }\r\n if (zoom.scale < params.minRatio) {\r\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\r\n }\r\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\r\n }\r\n function onGestureEnd(e) {\r\n if (!eventWithinSlide(e))\r\n return;\r\n if (e.pointerType === 'mouse' && e.type === 'pointerout')\r\n return;\r\n const params = swiper.params.zoom;\r\n const zoom = swiper.zoom;\r\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\r\n if (pointerIndex >= 0)\r\n evCache.splice(pointerIndex, 1);\r\n if (!fakeGestureTouched || !fakeGestureMoved) {\r\n return;\r\n }\r\n fakeGestureTouched = false;\r\n fakeGestureMoved = false;\r\n if (!gesture.imageEl)\r\n return;\r\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\r\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\r\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\r\n currentScale = zoom.scale;\r\n isScaling = false;\r\n if (zoom.scale > 1 && gesture.slideEl) {\r\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\r\n }\r\n else if (zoom.scale <= 1 && gesture.slideEl) {\r\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\r\n }\r\n if (zoom.scale === 1) {\r\n gesture.originX = 0;\r\n gesture.originY = 0;\r\n gesture.slideEl = undefined;\r\n }\r\n }\r\n function onTouchStart(e) {\r\n const device = swiper.device;\r\n if (!gesture.imageEl)\r\n return;\r\n if (image.isTouched)\r\n return;\r\n if (device.android && e.cancelable)\r\n e.preventDefault();\r\n image.isTouched = true;\r\n const event = evCache.length > 0 ? evCache[0] : e;\r\n image.touchesStart.x = event.pageX;\r\n image.touchesStart.y = event.pageY;\r\n }\r\n function onTouchMove(e) {\r\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e))\r\n return;\r\n const zoom = swiper.zoom;\r\n if (!gesture.imageEl)\r\n return;\r\n if (!image.isTouched || !gesture.slideEl)\r\n return;\r\n if (!image.isMoved) {\r\n image.width = gesture.imageEl.offsetWidth;\r\n image.height = gesture.imageEl.offsetHeight;\r\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\r\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\r\n gesture.slideWidth = gesture.slideEl.offsetWidth;\r\n gesture.slideHeight = gesture.slideEl.offsetHeight;\r\n gesture.imageWrapEl.style.transitionDuration = '0ms';\r\n }\r\n // Define if we need image drag\r\n const scaledWidth = image.width * zoom.scale;\r\n const scaledHeight = image.height * zoom.scale;\r\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight)\r\n return;\r\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\r\n image.maxX = -image.minX;\r\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\r\n image.maxY = -image.minY;\r\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\r\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\r\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\r\n if (touchesDiff > 5) {\r\n swiper.allowClick = false;\r\n }\r\n if (!image.isMoved && !isScaling) {\r\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)) {\r\n image.isTouched = false;\r\n return;\r\n }\r\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)) {\r\n image.isTouched = false;\r\n return;\r\n }\r\n }\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n e.stopPropagation();\r\n image.isMoved = true;\r\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\r\n const { originX, originY } = gesture;\r\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\r\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\r\n if (image.currentX < image.minX) {\r\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\r\n }\r\n if (image.currentX > image.maxX) {\r\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\r\n }\r\n if (image.currentY < image.minY) {\r\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\r\n }\r\n if (image.currentY > image.maxY) {\r\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\r\n }\r\n // Velocity\r\n if (!velocity.prevPositionX)\r\n velocity.prevPositionX = image.touchesCurrent.x;\r\n if (!velocity.prevPositionY)\r\n velocity.prevPositionY = image.touchesCurrent.y;\r\n if (!velocity.prevTime)\r\n velocity.prevTime = Date.now();\r\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\r\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\r\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2)\r\n velocity.x = 0;\r\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2)\r\n velocity.y = 0;\r\n velocity.prevPositionX = image.touchesCurrent.x;\r\n velocity.prevPositionY = image.touchesCurrent.y;\r\n velocity.prevTime = Date.now();\r\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\r\n }\r\n function onTouchEnd() {\r\n const zoom = swiper.zoom;\r\n if (!gesture.imageEl)\r\n return;\r\n if (!image.isTouched || !image.isMoved) {\r\n image.isTouched = false;\r\n image.isMoved = false;\r\n return;\r\n }\r\n image.isTouched = false;\r\n image.isMoved = false;\r\n let momentumDurationX = 300;\r\n let momentumDurationY = 300;\r\n const momentumDistanceX = velocity.x * momentumDurationX;\r\n const newPositionX = image.currentX + momentumDistanceX;\r\n const momentumDistanceY = velocity.y * momentumDurationY;\r\n const newPositionY = image.currentY + momentumDistanceY;\r\n // Fix duration\r\n if (velocity.x !== 0)\r\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\r\n if (velocity.y !== 0)\r\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\r\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\r\n image.currentX = newPositionX;\r\n image.currentY = newPositionY;\r\n // Define if we need image drag\r\n const scaledWidth = image.width * zoom.scale;\r\n const scaledHeight = image.height * zoom.scale;\r\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\r\n image.maxX = -image.minX;\r\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\r\n image.maxY = -image.minY;\r\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\r\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\r\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\r\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\r\n }\r\n function onTransitionEnd() {\r\n const zoom = swiper.zoom;\r\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\r\n if (gesture.imageEl) {\r\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\r\n }\r\n if (gesture.imageWrapEl) {\r\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\r\n }\r\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\r\n zoom.scale = 1;\r\n currentScale = 1;\r\n gesture.slideEl = undefined;\r\n gesture.imageEl = undefined;\r\n gesture.imageWrapEl = undefined;\r\n gesture.originX = 0;\r\n gesture.originY = 0;\r\n }\r\n }\r\n function zoomIn(e) {\r\n const zoom = swiper.zoom;\r\n const params = swiper.params.zoom;\r\n if (!gesture.slideEl) {\r\n if (e && e.target) {\r\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\r\n }\r\n if (!gesture.slideEl) {\r\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\r\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\r\n }\r\n else {\r\n gesture.slideEl = swiper.slides[swiper.activeIndex];\r\n }\r\n }\r\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\r\n if (imageEl) {\r\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\r\n }\r\n gesture.imageEl = imageEl;\r\n if (imageEl) {\r\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\r\n }\r\n else {\r\n gesture.imageWrapEl = undefined;\r\n }\r\n }\r\n if (!gesture.imageEl || !gesture.imageWrapEl)\r\n return;\r\n if (swiper.params.cssMode) {\r\n swiper.wrapperEl.style.overflow = 'hidden';\r\n swiper.wrapperEl.style.touchAction = 'none';\r\n }\r\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\r\n let touchX;\r\n let touchY;\r\n let offsetX;\r\n let offsetY;\r\n let diffX;\r\n let diffY;\r\n let translateX;\r\n let translateY;\r\n let imageWidth;\r\n let imageHeight;\r\n let scaledWidth;\r\n let scaledHeight;\r\n let translateMinX;\r\n let translateMinY;\r\n let translateMaxX;\r\n let translateMaxY;\r\n let slideWidth;\r\n let slideHeight;\r\n if (typeof image.touchesStart.x === 'undefined' && e) {\r\n touchX = e.pageX;\r\n touchY = e.pageY;\r\n }\r\n else {\r\n touchX = image.touchesStart.x;\r\n touchY = image.touchesStart.y;\r\n }\r\n const forceZoomRatio = typeof e === 'number' ? e : null;\r\n if (currentScale === 1 && forceZoomRatio) {\r\n touchX = undefined;\r\n touchY = undefined;\r\n }\r\n const maxRatio = getMaxRatio();\r\n zoom.scale = forceZoomRatio || maxRatio;\r\n currentScale = forceZoomRatio || maxRatio;\r\n if (e && !(currentScale === 1 && forceZoomRatio)) {\r\n slideWidth = gesture.slideEl.offsetWidth;\r\n slideHeight = gesture.slideEl.offsetHeight;\r\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\r\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\r\n diffX = offsetX + slideWidth / 2 - touchX;\r\n diffY = offsetY + slideHeight / 2 - touchY;\r\n imageWidth = gesture.imageEl.offsetWidth;\r\n imageHeight = gesture.imageEl.offsetHeight;\r\n scaledWidth = imageWidth * zoom.scale;\r\n scaledHeight = imageHeight * zoom.scale;\r\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\r\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\r\n translateMaxX = -translateMinX;\r\n translateMaxY = -translateMinY;\r\n translateX = diffX * zoom.scale;\r\n translateY = diffY * zoom.scale;\r\n if (translateX < translateMinX) {\r\n translateX = translateMinX;\r\n }\r\n if (translateX > translateMaxX) {\r\n translateX = translateMaxX;\r\n }\r\n if (translateY < translateMinY) {\r\n translateY = translateMinY;\r\n }\r\n if (translateY > translateMaxY) {\r\n translateY = translateMaxY;\r\n }\r\n }\r\n else {\r\n translateX = 0;\r\n translateY = 0;\r\n }\r\n if (forceZoomRatio && zoom.scale === 1) {\r\n gesture.originX = 0;\r\n gesture.originY = 0;\r\n }\r\n gesture.imageWrapEl.style.transitionDuration = '300ms';\r\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\r\n gesture.imageEl.style.transitionDuration = '300ms';\r\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\r\n }\r\n function zoomOut() {\r\n const zoom = swiper.zoom;\r\n const params = swiper.params.zoom;\r\n if (!gesture.slideEl) {\r\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\r\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\r\n }\r\n else {\r\n gesture.slideEl = swiper.slides[swiper.activeIndex];\r\n }\r\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\r\n if (imageEl) {\r\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\r\n }\r\n gesture.imageEl = imageEl;\r\n if (imageEl) {\r\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\r\n }\r\n else {\r\n gesture.imageWrapEl = undefined;\r\n }\r\n }\r\n if (!gesture.imageEl || !gesture.imageWrapEl)\r\n return;\r\n if (swiper.params.cssMode) {\r\n swiper.wrapperEl.style.overflow = '';\r\n swiper.wrapperEl.style.touchAction = '';\r\n }\r\n zoom.scale = 1;\r\n currentScale = 1;\r\n gesture.imageWrapEl.style.transitionDuration = '300ms';\r\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\r\n gesture.imageEl.style.transitionDuration = '300ms';\r\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\r\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\r\n gesture.slideEl = undefined;\r\n gesture.originX = 0;\r\n gesture.originY = 0;\r\n }\r\n // Toggle Zoom\r\n function zoomToggle(e) {\r\n const zoom = swiper.zoom;\r\n if (zoom.scale && zoom.scale !== 1) {\r\n // Zoom Out\r\n zoomOut();\r\n }\r\n else {\r\n // Zoom In\r\n zoomIn(e);\r\n }\r\n }\r\n function getListeners() {\r\n const passiveListener = swiper.params.passiveListeners ? {\r\n passive: true,\r\n capture: false\r\n } : false;\r\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\r\n passive: false,\r\n capture: true\r\n } : true;\r\n return {\r\n passiveListener,\r\n activeListenerWithCapture\r\n };\r\n }\r\n // Attach/Detach Events\r\n function enable() {\r\n const zoom = swiper.zoom;\r\n if (zoom.enabled)\r\n return;\r\n zoom.enabled = true;\r\n const { passiveListener, activeListenerWithCapture } = getListeners();\r\n // Scale image\r\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\r\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\r\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\r\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\r\n });\r\n // Move image\r\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\r\n }\r\n function disable() {\r\n const zoom = swiper.zoom;\r\n if (!zoom.enabled)\r\n return;\r\n zoom.enabled = false;\r\n const { passiveListener, activeListenerWithCapture } = getListeners();\r\n // Scale image\r\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\r\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\r\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\r\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\r\n });\r\n // Move image\r\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\r\n }\r\n on('init', () => {\r\n if (swiper.params.zoom.enabled) {\r\n enable();\r\n }\r\n });\r\n on('destroy', () => {\r\n disable();\r\n });\r\n on('touchStart', (_s, e) => {\r\n if (!swiper.zoom.enabled)\r\n return;\r\n onTouchStart(e);\r\n });\r\n on('touchEnd', (_s, e) => {\r\n if (!swiper.zoom.enabled)\r\n return;\r\n onTouchEnd();\r\n });\r\n on('doubleTap', (_s, e) => {\r\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\r\n zoomToggle(e);\r\n }\r\n });\r\n on('transitionEnd', () => {\r\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\r\n onTransitionEnd();\r\n }\r\n });\r\n on('slideChange', () => {\r\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\r\n onTransitionEnd();\r\n }\r\n });\r\n Object.assign(swiper.zoom, {\r\n enable,\r\n disable,\r\n in: zoomIn,\r\n out: zoomOut,\r\n toggle: zoomToggle\r\n });\r\n }\r\n /* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\r\n function Controller(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n controller: {\r\n control: undefined,\r\n inverse: false,\r\n by: 'slide' // or 'container'\r\n }\r\n });\r\n swiper.controller = {\r\n control: undefined\r\n };\r\n function LinearSpline(x, y) {\r\n const binarySearch = function search() {\r\n let maxIndex;\r\n let minIndex;\r\n let guess;\r\n return (array, val) => {\r\n minIndex = -1;\r\n maxIndex = array.length;\r\n while (maxIndex - minIndex > 1) {\r\n guess = maxIndex + minIndex >> 1;\r\n if (array[guess] <= val) {\r\n minIndex = guess;\r\n }\r\n else {\r\n maxIndex = guess;\r\n }\r\n }\r\n return maxIndex;\r\n };\r\n }();\r\n this.x = x;\r\n this.y = y;\r\n this.lastIndex = x.length - 1;\r\n // Given an x value (x2), return the expected y2 value:\r\n // (x1,y1) is the known point before given value,\r\n // (x3,y3) is the known point after given value.\r\n let i1;\r\n let i3;\r\n this.interpolate = function interpolate(x2) {\r\n if (!x2)\r\n return 0;\r\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\r\n i3 = binarySearch(this.x, x2);\r\n i1 = i3 - 1;\r\n // We have our indexes i1 & i3, so we can calculate already:\r\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\r\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\r\n };\r\n return this;\r\n }\r\n function getInterpolateFunction(c) {\r\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\r\n }\r\n function setTranslate(_t, byController) {\r\n const controlled = swiper.controller.control;\r\n let multiplier;\r\n let controlledTranslate;\r\n const Swiper = swiper.constructor;\r\n function setControlledTranslate(c) {\r\n if (c.destroyed)\r\n return;\r\n // this will create an Interpolate function based on the snapGrids\r\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\r\n // it makes sense to create this only once and recall it for the interpolation\r\n // the function does a lot of value caching for performance\r\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\r\n if (swiper.params.controller.by === 'slide') {\r\n getInterpolateFunction(c);\r\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\r\n // but it did not work out\r\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\r\n }\r\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\r\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\r\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\r\n multiplier = 1;\r\n }\r\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\r\n }\r\n if (swiper.params.controller.inverse) {\r\n controlledTranslate = c.maxTranslate() - controlledTranslate;\r\n }\r\n c.updateProgress(controlledTranslate);\r\n c.setTranslate(controlledTranslate, swiper);\r\n c.updateActiveIndex();\r\n c.updateSlidesClasses();\r\n }\r\n if (Array.isArray(controlled)) {\r\n for (let i = 0; i < controlled.length; i += 1) {\r\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\r\n setControlledTranslate(controlled[i]);\r\n }\r\n }\r\n }\r\n else if (controlled instanceof Swiper && byController !== controlled) {\r\n setControlledTranslate(controlled);\r\n }\r\n }\r\n function setTransition(duration, byController) {\r\n const Swiper = swiper.constructor;\r\n const controlled = swiper.controller.control;\r\n let i;\r\n function setControlledTransition(c) {\r\n if (c.destroyed)\r\n return;\r\n c.setTransition(duration, swiper);\r\n if (duration !== 0) {\r\n c.transitionStart();\r\n if (c.params.autoHeight) {\r\n nextTick(() => {\r\n c.updateAutoHeight();\r\n });\r\n }\r\n elementTransitionEnd(c.wrapperEl, () => {\r\n if (!controlled)\r\n return;\r\n c.transitionEnd();\r\n });\r\n }\r\n }\r\n if (Array.isArray(controlled)) {\r\n for (i = 0; i < controlled.length; i += 1) {\r\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\r\n setControlledTransition(controlled[i]);\r\n }\r\n }\r\n }\r\n else if (controlled instanceof Swiper && byController !== controlled) {\r\n setControlledTransition(controlled);\r\n }\r\n }\r\n function removeSpline() {\r\n if (!swiper.controller.control)\r\n return;\r\n if (swiper.controller.spline) {\r\n swiper.controller.spline = undefined;\r\n delete swiper.controller.spline;\r\n }\r\n }\r\n on('beforeInit', () => {\r\n if (typeof window !== 'undefined' && (\r\n // eslint-disable-line\r\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\r\n const controlElement = document.querySelector(swiper.params.controller.control);\r\n if (controlElement && controlElement.swiper) {\r\n swiper.controller.control = controlElement.swiper;\r\n }\r\n else if (controlElement) {\r\n const onControllerSwiper = e => {\r\n swiper.controller.control = e.detail[0];\r\n swiper.update();\r\n controlElement.removeEventListener('init', onControllerSwiper);\r\n };\r\n controlElement.addEventListener('init', onControllerSwiper);\r\n }\r\n return;\r\n }\r\n swiper.controller.control = swiper.params.controller.control;\r\n });\r\n on('update', () => {\r\n removeSpline();\r\n });\r\n on('resize', () => {\r\n removeSpline();\r\n });\r\n on('observerUpdate', () => {\r\n removeSpline();\r\n });\r\n on('setTranslate', (_s, translate, byController) => {\r\n if (!swiper.controller.control || swiper.controller.control.destroyed)\r\n return;\r\n swiper.controller.setTranslate(translate, byController);\r\n });\r\n on('setTransition', (_s, duration, byController) => {\r\n if (!swiper.controller.control || swiper.controller.control.destroyed)\r\n return;\r\n swiper.controller.setTransition(duration, byController);\r\n });\r\n Object.assign(swiper.controller, {\r\n setTranslate,\r\n setTransition\r\n });\r\n }\r\n function A11y(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n a11y: {\r\n enabled: true,\r\n notificationClass: 'swiper-notification',\r\n prevSlideMessage: 'Previous slide',\r\n nextSlideMessage: 'Next slide',\r\n firstSlideMessage: 'This is the first slide',\r\n lastSlideMessage: 'This is the last slide',\r\n paginationBulletMessage: 'Go to slide {{index}}',\r\n slideLabelMessage: '{{index}} / {{slidesLength}}',\r\n containerMessage: null,\r\n containerRoleDescriptionMessage: null,\r\n itemRoleDescriptionMessage: null,\r\n slideRole: 'group',\r\n id: null\r\n }\r\n });\r\n swiper.a11y = {\r\n clicked: false\r\n };\r\n let liveRegion = null;\r\n function notify(message) {\r\n const notification = liveRegion;\r\n if (notification.length === 0)\r\n return;\r\n notification.innerHTML = '';\r\n notification.innerHTML = message;\r\n }\r\n function getRandomNumber(size) {\r\n if (size === void 0) {\r\n size = 16;\r\n }\r\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\r\n return 'x'.repeat(size).replace(/x/g, randomChar);\r\n }\r\n function makeElFocusable(el) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('tabIndex', '0');\r\n });\r\n }\r\n function makeElNotFocusable(el) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('tabIndex', '-1');\r\n });\r\n }\r\n function addElRole(el, role) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('role', role);\r\n });\r\n }\r\n function addElRoleDescription(el, description) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('aria-roledescription', description);\r\n });\r\n }\r\n function addElControls(el, controls) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('aria-controls', controls);\r\n });\r\n }\r\n function addElLabel(el, label) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('aria-label', label);\r\n });\r\n }\r\n function addElId(el, id) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('id', id);\r\n });\r\n }\r\n function addElLive(el, live) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('aria-live', live);\r\n });\r\n }\r\n function disableEl(el) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('aria-disabled', true);\r\n });\r\n }\r\n function enableEl(el) {\r\n el = makeElementsArray(el);\r\n el.forEach(subEl => {\r\n subEl.setAttribute('aria-disabled', false);\r\n });\r\n }\r\n function onEnterOrSpaceKey(e) {\r\n if (e.keyCode !== 13 && e.keyCode !== 32)\r\n return;\r\n const params = swiper.params.a11y;\r\n const targetEl = e.target;\r\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\r\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass)))\r\n return;\r\n }\r\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\r\n if (!(swiper.isEnd && !swiper.params.loop)) {\r\n swiper.slideNext();\r\n }\r\n if (swiper.isEnd) {\r\n notify(params.lastSlideMessage);\r\n }\r\n else {\r\n notify(params.nextSlideMessage);\r\n }\r\n }\r\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\r\n if (!(swiper.isBeginning && !swiper.params.loop)) {\r\n swiper.slidePrev();\r\n }\r\n if (swiper.isBeginning) {\r\n notify(params.firstSlideMessage);\r\n }\r\n else {\r\n notify(params.prevSlideMessage);\r\n }\r\n }\r\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\r\n targetEl.click();\r\n }\r\n }\r\n function updateNavigation() {\r\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation)\r\n return;\r\n const { nextEl, prevEl } = swiper.navigation;\r\n if (prevEl) {\r\n if (swiper.isBeginning) {\r\n disableEl(prevEl);\r\n makeElNotFocusable(prevEl);\r\n }\r\n else {\r\n enableEl(prevEl);\r\n makeElFocusable(prevEl);\r\n }\r\n }\r\n if (nextEl) {\r\n if (swiper.isEnd) {\r\n disableEl(nextEl);\r\n makeElNotFocusable(nextEl);\r\n }\r\n else {\r\n enableEl(nextEl);\r\n makeElFocusable(nextEl);\r\n }\r\n }\r\n }\r\n function hasPagination() {\r\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\r\n }\r\n function hasClickablePagination() {\r\n return hasPagination() && swiper.params.pagination.clickable;\r\n }\r\n function updatePagination() {\r\n const params = swiper.params.a11y;\r\n if (!hasPagination())\r\n return;\r\n swiper.pagination.bullets.forEach(bulletEl => {\r\n if (swiper.params.pagination.clickable) {\r\n makeElFocusable(bulletEl);\r\n if (!swiper.params.pagination.renderBullet) {\r\n addElRole(bulletEl, 'button');\r\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\r\n }\r\n }\r\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\r\n bulletEl.setAttribute('aria-current', 'true');\r\n }\r\n else {\r\n bulletEl.removeAttribute('aria-current');\r\n }\r\n });\r\n }\r\n const initNavEl = (el, wrapperId, message) => {\r\n makeElFocusable(el);\r\n if (el.tagName !== 'BUTTON') {\r\n addElRole(el, 'button');\r\n el.addEventListener('keydown', onEnterOrSpaceKey);\r\n }\r\n addElLabel(el, message);\r\n addElControls(el, wrapperId);\r\n };\r\n const handlePointerDown = () => {\r\n swiper.a11y.clicked = true;\r\n };\r\n const handlePointerUp = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n if (!swiper.destroyed) {\r\n swiper.a11y.clicked = false;\r\n }\r\n });\r\n });\r\n };\r\n const handleFocus = e => {\r\n if (swiper.a11y.clicked)\r\n return;\r\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\r\n if (!slideEl || !swiper.slides.includes(slideEl))\r\n return;\r\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\r\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\r\n if (isActive || isVisible)\r\n return;\r\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents)\r\n return;\r\n if (swiper.isHorizontal()) {\r\n swiper.el.scrollLeft = 0;\r\n }\r\n else {\r\n swiper.el.scrollTop = 0;\r\n }\r\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\r\n };\r\n const initSlides = () => {\r\n const params = swiper.params.a11y;\r\n if (params.itemRoleDescriptionMessage) {\r\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\r\n }\r\n if (params.slideRole) {\r\n addElRole(swiper.slides, params.slideRole);\r\n }\r\n const slidesLength = swiper.slides.length;\r\n if (params.slideLabelMessage) {\r\n swiper.slides.forEach((slideEl, index) => {\r\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\r\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\r\n addElLabel(slideEl, ariaLabelMessage);\r\n });\r\n }\r\n };\r\n const init = () => {\r\n const params = swiper.params.a11y;\r\n swiper.el.append(liveRegion);\r\n // Container\r\n const containerEl = swiper.el;\r\n if (params.containerRoleDescriptionMessage) {\r\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\r\n }\r\n if (params.containerMessage) {\r\n addElLabel(containerEl, params.containerMessage);\r\n }\r\n // Wrapper\r\n const wrapperEl = swiper.wrapperEl;\r\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\r\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\r\n addElId(wrapperEl, wrapperId);\r\n addElLive(wrapperEl, live);\r\n // Slide\r\n initSlides();\r\n // Navigation\r\n let { nextEl, prevEl } = swiper.navigation ? swiper.navigation : {};\r\n nextEl = makeElementsArray(nextEl);\r\n prevEl = makeElementsArray(prevEl);\r\n if (nextEl) {\r\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\r\n }\r\n if (prevEl) {\r\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\r\n }\r\n // Pagination\r\n if (hasClickablePagination()) {\r\n const paginationEl = makeElementsArray(swiper.pagination.el);\r\n paginationEl.forEach(el => {\r\n el.addEventListener('keydown', onEnterOrSpaceKey);\r\n });\r\n }\r\n // Tab focus\r\n swiper.el.addEventListener('focus', handleFocus, true);\r\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\r\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\r\n };\r\n function destroy() {\r\n if (liveRegion)\r\n liveRegion.remove();\r\n let { nextEl, prevEl } = swiper.navigation ? swiper.navigation : {};\r\n nextEl = makeElementsArray(nextEl);\r\n prevEl = makeElementsArray(prevEl);\r\n if (nextEl) {\r\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\r\n }\r\n if (prevEl) {\r\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\r\n }\r\n // Pagination\r\n if (hasClickablePagination()) {\r\n const paginationEl = makeElementsArray(swiper.pagination.el);\r\n paginationEl.forEach(el => {\r\n el.removeEventListener('keydown', onEnterOrSpaceKey);\r\n });\r\n }\r\n // Tab focus\r\n swiper.el.removeEventListener('focus', handleFocus, true);\r\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\r\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\r\n }\r\n on('beforeInit', () => {\r\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\r\n liveRegion.setAttribute('aria-live', 'assertive');\r\n liveRegion.setAttribute('aria-atomic', 'true');\r\n });\r\n on('afterInit', () => {\r\n if (!swiper.params.a11y.enabled)\r\n return;\r\n init();\r\n });\r\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\r\n if (!swiper.params.a11y.enabled)\r\n return;\r\n initSlides();\r\n });\r\n on('fromEdge toEdge afterInit lock unlock', () => {\r\n if (!swiper.params.a11y.enabled)\r\n return;\r\n updateNavigation();\r\n });\r\n on('paginationUpdate', () => {\r\n if (!swiper.params.a11y.enabled)\r\n return;\r\n updatePagination();\r\n });\r\n on('destroy', () => {\r\n if (!swiper.params.a11y.enabled)\r\n return;\r\n destroy();\r\n });\r\n }\r\n function History(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n history: {\r\n enabled: false,\r\n root: '',\r\n replaceState: false,\r\n key: 'slides',\r\n keepQuery: false\r\n }\r\n });\r\n let initialized = false;\r\n let paths = {};\r\n const slugify = text => {\r\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\r\n };\r\n const getPathValues = urlOverride => {\r\n const window = getWindow();\r\n let location;\r\n if (urlOverride) {\r\n location = new URL(urlOverride);\r\n }\r\n else {\r\n location = window.location;\r\n }\r\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\r\n const total = pathArray.length;\r\n const key = pathArray[total - 2];\r\n const value = pathArray[total - 1];\r\n return {\r\n key,\r\n value\r\n };\r\n };\r\n const setHistory = (key, index) => {\r\n const window = getWindow();\r\n if (!initialized || !swiper.params.history.enabled)\r\n return;\r\n let location;\r\n if (swiper.params.url) {\r\n location = new URL(swiper.params.url);\r\n }\r\n else {\r\n location = window.location;\r\n }\r\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\r\n let value = slugify(slide.getAttribute('data-history'));\r\n if (swiper.params.history.root.length > 0) {\r\n let root = swiper.params.history.root;\r\n if (root[root.length - 1] === '/')\r\n root = root.slice(0, root.length - 1);\r\n value = `${root}/${key ? `${key}/` : ''}${value}`;\r\n }\r\n else if (!location.pathname.includes(key)) {\r\n value = `${key ? `${key}/` : ''}${value}`;\r\n }\r\n if (swiper.params.history.keepQuery) {\r\n value += location.search;\r\n }\r\n const currentState = window.history.state;\r\n if (currentState && currentState.value === value) {\r\n return;\r\n }\r\n if (swiper.params.history.replaceState) {\r\n window.history.replaceState({\r\n value\r\n }, null, value);\r\n }\r\n else {\r\n window.history.pushState({\r\n value\r\n }, null, value);\r\n }\r\n };\r\n const scrollToSlide = (speed, value, runCallbacks) => {\r\n if (value) {\r\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\r\n const slide = swiper.slides[i];\r\n const slideHistory = slugify(slide.getAttribute('data-history'));\r\n if (slideHistory === value) {\r\n const index = swiper.getSlideIndex(slide);\r\n swiper.slideTo(index, speed, runCallbacks);\r\n }\r\n }\r\n }\r\n else {\r\n swiper.slideTo(0, speed, runCallbacks);\r\n }\r\n };\r\n const setHistoryPopState = () => {\r\n paths = getPathValues(swiper.params.url);\r\n scrollToSlide(swiper.params.speed, paths.value, false);\r\n };\r\n const init = () => {\r\n const window = getWindow();\r\n if (!swiper.params.history)\r\n return;\r\n if (!window.history || !window.history.pushState) {\r\n swiper.params.history.enabled = false;\r\n swiper.params.hashNavigation.enabled = true;\r\n return;\r\n }\r\n initialized = true;\r\n paths = getPathValues(swiper.params.url);\r\n if (!paths.key && !paths.value) {\r\n if (!swiper.params.history.replaceState) {\r\n window.addEventListener('popstate', setHistoryPopState);\r\n }\r\n return;\r\n }\r\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\r\n if (!swiper.params.history.replaceState) {\r\n window.addEventListener('popstate', setHistoryPopState);\r\n }\r\n };\r\n const destroy = () => {\r\n const window = getWindow();\r\n if (!swiper.params.history.replaceState) {\r\n window.removeEventListener('popstate', setHistoryPopState);\r\n }\r\n };\r\n on('init', () => {\r\n if (swiper.params.history.enabled) {\r\n init();\r\n }\r\n });\r\n on('destroy', () => {\r\n if (swiper.params.history.enabled) {\r\n destroy();\r\n }\r\n });\r\n on('transitionEnd _freeModeNoMomentumRelease', () => {\r\n if (initialized) {\r\n setHistory(swiper.params.history.key, swiper.activeIndex);\r\n }\r\n });\r\n on('slideChange', () => {\r\n if (initialized && swiper.params.cssMode) {\r\n setHistory(swiper.params.history.key, swiper.activeIndex);\r\n }\r\n });\r\n }\r\n function HashNavigation(_ref) {\r\n let { swiper, extendParams, emit, on } = _ref;\r\n let initialized = false;\r\n const document = getDocument();\r\n const window = getWindow();\r\n extendParams({\r\n hashNavigation: {\r\n enabled: false,\r\n replaceState: false,\r\n watchState: false,\r\n getSlideIndex(_s, hash) {\r\n if (swiper.virtual && swiper.params.virtual.enabled) {\r\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\r\n if (!slideWithHash)\r\n return 0;\r\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\r\n return index;\r\n }\r\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\r\n }\r\n }\r\n });\r\n const onHashChange = () => {\r\n emit('hashChange');\r\n const newHash = document.location.hash.replace('#', '');\r\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\r\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\r\n if (newHash !== activeSlideHash) {\r\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\r\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex))\r\n return;\r\n swiper.slideTo(newIndex);\r\n }\r\n };\r\n const setHash = () => {\r\n if (!initialized || !swiper.params.hashNavigation.enabled)\r\n return;\r\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\r\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\r\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\r\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\r\n emit('hashSet');\r\n }\r\n else {\r\n document.location.hash = activeSlideHash || '';\r\n emit('hashSet');\r\n }\r\n };\r\n const init = () => {\r\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled)\r\n return;\r\n initialized = true;\r\n const hash = document.location.hash.replace('#', '');\r\n if (hash) {\r\n const speed = 0;\r\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\r\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\r\n }\r\n if (swiper.params.hashNavigation.watchState) {\r\n window.addEventListener('hashchange', onHashChange);\r\n }\r\n };\r\n const destroy = () => {\r\n if (swiper.params.hashNavigation.watchState) {\r\n window.removeEventListener('hashchange', onHashChange);\r\n }\r\n };\r\n on('init', () => {\r\n if (swiper.params.hashNavigation.enabled) {\r\n init();\r\n }\r\n });\r\n on('destroy', () => {\r\n if (swiper.params.hashNavigation.enabled) {\r\n destroy();\r\n }\r\n });\r\n on('transitionEnd _freeModeNoMomentumRelease', () => {\r\n if (initialized) {\r\n setHash();\r\n }\r\n });\r\n on('slideChange', () => {\r\n if (initialized && swiper.params.cssMode) {\r\n setHash();\r\n }\r\n });\r\n }\r\n /* eslint no-underscore-dangle: \"off\" */\r\n /* eslint no-use-before-define: \"off\" */\r\n function Autoplay(_ref) {\r\n let { swiper, extendParams, on, emit, params } = _ref;\r\n swiper.autoplay = {\r\n running: false,\r\n paused: false,\r\n timeLeft: 0\r\n };\r\n extendParams({\r\n autoplay: {\r\n enabled: false,\r\n delay: 3000,\r\n waitForTransition: true,\r\n disableOnInteraction: false,\r\n stopOnLastSlide: false,\r\n reverseDirection: false,\r\n pauseOnMouseEnter: false\r\n }\r\n });\r\n let timeout;\r\n let raf;\r\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\r\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\r\n let autoplayTimeLeft;\r\n let autoplayStartTime = new Date().getTime();\r\n let wasPaused;\r\n let isTouched;\r\n let pausedByTouch;\r\n let touchStartTimeout;\r\n let slideChanged;\r\n let pausedByInteraction;\r\n let pausedByPointerEnter;\r\n function onTransitionEnd(e) {\r\n if (!swiper || swiper.destroyed || !swiper.wrapperEl)\r\n return;\r\n if (e.target !== swiper.wrapperEl)\r\n return;\r\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\r\n if (pausedByPointerEnter) {\r\n return;\r\n }\r\n resume();\r\n }\r\n const calcTimeLeft = () => {\r\n if (swiper.destroyed || !swiper.autoplay.running)\r\n return;\r\n if (swiper.autoplay.paused) {\r\n wasPaused = true;\r\n }\r\n else if (wasPaused) {\r\n autoplayDelayCurrent = autoplayTimeLeft;\r\n wasPaused = false;\r\n }\r\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\r\n swiper.autoplay.timeLeft = timeLeft;\r\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\r\n raf = requestAnimationFrame(() => {\r\n calcTimeLeft();\r\n });\r\n };\r\n const getSlideDelay = () => {\r\n let activeSlideEl;\r\n if (swiper.virtual && swiper.params.virtual.enabled) {\r\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\r\n }\r\n else {\r\n activeSlideEl = swiper.slides[swiper.activeIndex];\r\n }\r\n if (!activeSlideEl)\r\n return undefined;\r\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\r\n return currentSlideDelay;\r\n };\r\n const run = delayForce => {\r\n if (swiper.destroyed || !swiper.autoplay.running)\r\n return;\r\n cancelAnimationFrame(raf);\r\n calcTimeLeft();\r\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\r\n autoplayDelayTotal = swiper.params.autoplay.delay;\r\n autoplayDelayCurrent = swiper.params.autoplay.delay;\r\n const currentSlideDelay = getSlideDelay();\r\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\r\n delay = currentSlideDelay;\r\n autoplayDelayTotal = currentSlideDelay;\r\n autoplayDelayCurrent = currentSlideDelay;\r\n }\r\n autoplayTimeLeft = delay;\r\n const speed = swiper.params.speed;\r\n const proceed = () => {\r\n if (!swiper || swiper.destroyed)\r\n return;\r\n if (swiper.params.autoplay.reverseDirection) {\r\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\r\n swiper.slidePrev(speed, true, true);\r\n emit('autoplay');\r\n }\r\n else if (!swiper.params.autoplay.stopOnLastSlide) {\r\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\r\n emit('autoplay');\r\n }\r\n }\r\n else {\r\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\r\n swiper.slideNext(speed, true, true);\r\n emit('autoplay');\r\n }\r\n else if (!swiper.params.autoplay.stopOnLastSlide) {\r\n swiper.slideTo(0, speed, true, true);\r\n emit('autoplay');\r\n }\r\n }\r\n if (swiper.params.cssMode) {\r\n autoplayStartTime = new Date().getTime();\r\n requestAnimationFrame(() => {\r\n run();\r\n });\r\n }\r\n };\r\n if (delay > 0) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n proceed();\r\n }, delay);\r\n }\r\n else {\r\n requestAnimationFrame(() => {\r\n proceed();\r\n });\r\n }\r\n // eslint-disable-next-line\r\n return delay;\r\n };\r\n const start = () => {\r\n autoplayStartTime = new Date().getTime();\r\n swiper.autoplay.running = true;\r\n run();\r\n emit('autoplayStart');\r\n };\r\n const stop = () => {\r\n swiper.autoplay.running = false;\r\n clearTimeout(timeout);\r\n cancelAnimationFrame(raf);\r\n emit('autoplayStop');\r\n };\r\n const pause = (internal, reset) => {\r\n if (swiper.destroyed || !swiper.autoplay.running)\r\n return;\r\n clearTimeout(timeout);\r\n if (!internal) {\r\n pausedByInteraction = true;\r\n }\r\n const proceed = () => {\r\n emit('autoplayPause');\r\n if (swiper.params.autoplay.waitForTransition) {\r\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\r\n }\r\n else {\r\n resume();\r\n }\r\n };\r\n swiper.autoplay.paused = true;\r\n if (reset) {\r\n if (slideChanged) {\r\n autoplayTimeLeft = swiper.params.autoplay.delay;\r\n }\r\n slideChanged = false;\r\n proceed();\r\n return;\r\n }\r\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\r\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\r\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop)\r\n return;\r\n if (autoplayTimeLeft < 0)\r\n autoplayTimeLeft = 0;\r\n proceed();\r\n };\r\n const resume = () => {\r\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running)\r\n return;\r\n autoplayStartTime = new Date().getTime();\r\n if (pausedByInteraction) {\r\n pausedByInteraction = false;\r\n run(autoplayTimeLeft);\r\n }\r\n else {\r\n run();\r\n }\r\n swiper.autoplay.paused = false;\r\n emit('autoplayResume');\r\n };\r\n const onVisibilityChange = () => {\r\n if (swiper.destroyed || !swiper.autoplay.running)\r\n return;\r\n const document = getDocument();\r\n if (document.visibilityState === 'hidden') {\r\n pausedByInteraction = true;\r\n pause(true);\r\n }\r\n if (document.visibilityState === 'visible') {\r\n resume();\r\n }\r\n };\r\n const onPointerEnter = e => {\r\n if (e.pointerType !== 'mouse')\r\n return;\r\n pausedByInteraction = true;\r\n pausedByPointerEnter = true;\r\n if (swiper.animating || swiper.autoplay.paused)\r\n return;\r\n pause(true);\r\n };\r\n const onPointerLeave = e => {\r\n if (e.pointerType !== 'mouse')\r\n return;\r\n pausedByPointerEnter = false;\r\n if (swiper.autoplay.paused) {\r\n resume();\r\n }\r\n };\r\n const attachMouseEvents = () => {\r\n if (swiper.params.autoplay.pauseOnMouseEnter) {\r\n swiper.el.addEventListener('pointerenter', onPointerEnter);\r\n swiper.el.addEventListener('pointerleave', onPointerLeave);\r\n }\r\n };\r\n const detachMouseEvents = () => {\r\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\r\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\r\n };\r\n const attachDocumentEvents = () => {\r\n const document = getDocument();\r\n document.addEventListener('visibilitychange', onVisibilityChange);\r\n };\r\n const detachDocumentEvents = () => {\r\n const document = getDocument();\r\n document.removeEventListener('visibilitychange', onVisibilityChange);\r\n };\r\n on('init', () => {\r\n if (swiper.params.autoplay.enabled) {\r\n attachMouseEvents();\r\n attachDocumentEvents();\r\n start();\r\n }\r\n });\r\n on('destroy', () => {\r\n detachMouseEvents();\r\n detachDocumentEvents();\r\n if (swiper.autoplay.running) {\r\n stop();\r\n }\r\n });\r\n on('_freeModeStaticRelease', () => {\r\n if (pausedByTouch || pausedByInteraction) {\r\n resume();\r\n }\r\n });\r\n on('_freeModeNoMomentumRelease', () => {\r\n if (!swiper.params.autoplay.disableOnInteraction) {\r\n pause(true, true);\r\n }\r\n else {\r\n stop();\r\n }\r\n });\r\n on('beforeTransitionStart', (_s, speed, internal) => {\r\n if (swiper.destroyed || !swiper.autoplay.running)\r\n return;\r\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\r\n pause(true, true);\r\n }\r\n else {\r\n stop();\r\n }\r\n });\r\n on('sliderFirstMove', () => {\r\n if (swiper.destroyed || !swiper.autoplay.running)\r\n return;\r\n if (swiper.params.autoplay.disableOnInteraction) {\r\n stop();\r\n return;\r\n }\r\n isTouched = true;\r\n pausedByTouch = false;\r\n pausedByInteraction = false;\r\n touchStartTimeout = setTimeout(() => {\r\n pausedByInteraction = true;\r\n pausedByTouch = true;\r\n pause(true);\r\n }, 200);\r\n });\r\n on('touchEnd', () => {\r\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched)\r\n return;\r\n clearTimeout(touchStartTimeout);\r\n clearTimeout(timeout);\r\n if (swiper.params.autoplay.disableOnInteraction) {\r\n pausedByTouch = false;\r\n isTouched = false;\r\n return;\r\n }\r\n if (pausedByTouch && swiper.params.cssMode)\r\n resume();\r\n pausedByTouch = false;\r\n isTouched = false;\r\n });\r\n on('slideChange', () => {\r\n if (swiper.destroyed || !swiper.autoplay.running)\r\n return;\r\n slideChanged = true;\r\n });\r\n Object.assign(swiper.autoplay, {\r\n start,\r\n stop,\r\n pause,\r\n resume\r\n });\r\n }\r\n function Thumb(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n thumbs: {\r\n swiper: null,\r\n multipleActiveThumbs: true,\r\n autoScrollOffset: 0,\r\n slideThumbActiveClass: 'swiper-slide-thumb-active',\r\n thumbsContainerClass: 'swiper-thumbs'\r\n }\r\n });\r\n let initialized = false;\r\n let swiperCreated = false;\r\n swiper.thumbs = {\r\n swiper: null\r\n };\r\n function onThumbClick() {\r\n const thumbsSwiper = swiper.thumbs.swiper;\r\n if (!thumbsSwiper || thumbsSwiper.destroyed)\r\n return;\r\n const clickedIndex = thumbsSwiper.clickedIndex;\r\n const clickedSlide = thumbsSwiper.clickedSlide;\r\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass))\r\n return;\r\n if (typeof clickedIndex === 'undefined' || clickedIndex === null)\r\n return;\r\n let slideToIndex;\r\n if (thumbsSwiper.params.loop) {\r\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\r\n }\r\n else {\r\n slideToIndex = clickedIndex;\r\n }\r\n if (swiper.params.loop) {\r\n swiper.slideToLoop(slideToIndex);\r\n }\r\n else {\r\n swiper.slideTo(slideToIndex);\r\n }\r\n }\r\n function init() {\r\n const { thumbs: thumbsParams } = swiper.params;\r\n if (initialized)\r\n return false;\r\n initialized = true;\r\n const SwiperClass = swiper.constructor;\r\n if (thumbsParams.swiper instanceof SwiperClass) {\r\n swiper.thumbs.swiper = thumbsParams.swiper;\r\n Object.assign(swiper.thumbs.swiper.originalParams, {\r\n watchSlidesProgress: true,\r\n slideToClickedSlide: false\r\n });\r\n Object.assign(swiper.thumbs.swiper.params, {\r\n watchSlidesProgress: true,\r\n slideToClickedSlide: false\r\n });\r\n swiper.thumbs.swiper.update();\r\n }\r\n else if (isObject(thumbsParams.swiper)) {\r\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\r\n Object.assign(thumbsSwiperParams, {\r\n watchSlidesProgress: true,\r\n slideToClickedSlide: false\r\n });\r\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\r\n swiperCreated = true;\r\n }\r\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\r\n swiper.thumbs.swiper.on('tap', onThumbClick);\r\n return true;\r\n }\r\n function update(initial) {\r\n const thumbsSwiper = swiper.thumbs.swiper;\r\n if (!thumbsSwiper || thumbsSwiper.destroyed)\r\n return;\r\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\r\n // Activate thumbs\r\n let thumbsToActivate = 1;\r\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\r\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\r\n thumbsToActivate = swiper.params.slidesPerView;\r\n }\r\n if (!swiper.params.thumbs.multipleActiveThumbs) {\r\n thumbsToActivate = 1;\r\n }\r\n thumbsToActivate = Math.floor(thumbsToActivate);\r\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\r\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\r\n for (let i = 0; i < thumbsToActivate; i += 1) {\r\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\r\n slideEl.classList.add(thumbActiveClass);\r\n });\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < thumbsToActivate; i += 1) {\r\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\r\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\r\n }\r\n }\r\n }\r\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\r\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\r\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\r\n const currentThumbsIndex = thumbsSwiper.activeIndex;\r\n let newThumbsIndex;\r\n let direction;\r\n if (thumbsSwiper.params.loop) {\r\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\r\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\r\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\r\n }\r\n else {\r\n newThumbsIndex = swiper.realIndex;\r\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\r\n }\r\n if (useOffset) {\r\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\r\n }\r\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\r\n if (thumbsSwiper.params.centeredSlides) {\r\n if (newThumbsIndex > currentThumbsIndex) {\r\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\r\n }\r\n else {\r\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\r\n }\r\n }\r\n else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1)\r\n ;\r\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\r\n }\r\n }\r\n }\r\n on('beforeInit', () => {\r\n const { thumbs } = swiper.params;\r\n if (!thumbs || !thumbs.swiper)\r\n return;\r\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\r\n const document = getDocument();\r\n const getThumbsElementAndInit = () => {\r\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\r\n if (thumbsElement && thumbsElement.swiper) {\r\n thumbs.swiper = thumbsElement.swiper;\r\n init();\r\n update(true);\r\n }\r\n else if (thumbsElement) {\r\n const onThumbsSwiper = e => {\r\n thumbs.swiper = e.detail[0];\r\n thumbsElement.removeEventListener('init', onThumbsSwiper);\r\n init();\r\n update(true);\r\n thumbs.swiper.update();\r\n swiper.update();\r\n };\r\n thumbsElement.addEventListener('init', onThumbsSwiper);\r\n }\r\n return thumbsElement;\r\n };\r\n const watchForThumbsToAppear = () => {\r\n if (swiper.destroyed)\r\n return;\r\n const thumbsElement = getThumbsElementAndInit();\r\n if (!thumbsElement) {\r\n requestAnimationFrame(watchForThumbsToAppear);\r\n }\r\n };\r\n requestAnimationFrame(watchForThumbsToAppear);\r\n }\r\n else {\r\n init();\r\n update(true);\r\n }\r\n });\r\n on('slideChange update resize observerUpdate', () => {\r\n update();\r\n });\r\n on('setTransition', (_s, duration) => {\r\n const thumbsSwiper = swiper.thumbs.swiper;\r\n if (!thumbsSwiper || thumbsSwiper.destroyed)\r\n return;\r\n thumbsSwiper.setTransition(duration);\r\n });\r\n on('beforeDestroy', () => {\r\n const thumbsSwiper = swiper.thumbs.swiper;\r\n if (!thumbsSwiper || thumbsSwiper.destroyed)\r\n return;\r\n if (swiperCreated) {\r\n thumbsSwiper.destroy();\r\n }\r\n });\r\n Object.assign(swiper.thumbs, {\r\n init,\r\n update\r\n });\r\n }\r\n function freeMode(_ref) {\r\n let { swiper, extendParams, emit, once } = _ref;\r\n extendParams({\r\n freeMode: {\r\n enabled: false,\r\n momentum: true,\r\n momentumRatio: 1,\r\n momentumBounce: true,\r\n momentumBounceRatio: 1,\r\n momentumVelocityRatio: 1,\r\n sticky: false,\r\n minimumVelocity: 0.02\r\n }\r\n });\r\n function onTouchStart() {\r\n if (swiper.params.cssMode)\r\n return;\r\n const translate = swiper.getTranslate();\r\n swiper.setTranslate(translate);\r\n swiper.setTransition(0);\r\n swiper.touchEventsData.velocities.length = 0;\r\n swiper.freeMode.onTouchEnd({\r\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\r\n });\r\n }\r\n function onTouchMove() {\r\n if (swiper.params.cssMode)\r\n return;\r\n const { touchEventsData: data, touches } = swiper;\r\n // Velocity\r\n if (data.velocities.length === 0) {\r\n data.velocities.push({\r\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\r\n time: data.touchStartTime\r\n });\r\n }\r\n data.velocities.push({\r\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\r\n time: now()\r\n });\r\n }\r\n function onTouchEnd(_ref2) {\r\n let { currentPos } = _ref2;\r\n if (swiper.params.cssMode)\r\n return;\r\n const { params, wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\r\n // Time diff\r\n const touchEndTime = now();\r\n const timeDiff = touchEndTime - data.touchStartTime;\r\n if (currentPos < -swiper.minTranslate()) {\r\n swiper.slideTo(swiper.activeIndex);\r\n return;\r\n }\r\n if (currentPos > -swiper.maxTranslate()) {\r\n if (swiper.slides.length < snapGrid.length) {\r\n swiper.slideTo(snapGrid.length - 1);\r\n }\r\n else {\r\n swiper.slideTo(swiper.slides.length - 1);\r\n }\r\n return;\r\n }\r\n if (params.freeMode.momentum) {\r\n if (data.velocities.length > 1) {\r\n const lastMoveEvent = data.velocities.pop();\r\n const velocityEvent = data.velocities.pop();\r\n const distance = lastMoveEvent.position - velocityEvent.position;\r\n const time = lastMoveEvent.time - velocityEvent.time;\r\n swiper.velocity = distance / time;\r\n swiper.velocity /= 2;\r\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\r\n swiper.velocity = 0;\r\n }\r\n // this implies that the user stopped moving a finger then released.\r\n // There would be no events with distance zero, so the last event is stale.\r\n if (time > 150 || now() - lastMoveEvent.time > 300) {\r\n swiper.velocity = 0;\r\n }\r\n }\r\n else {\r\n swiper.velocity = 0;\r\n }\r\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\r\n data.velocities.length = 0;\r\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\r\n const momentumDistance = swiper.velocity * momentumDuration;\r\n let newPosition = swiper.translate + momentumDistance;\r\n if (rtl)\r\n newPosition = -newPosition;\r\n let doBounce = false;\r\n let afterBouncePosition;\r\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\r\n let needsLoopFix;\r\n if (newPosition < swiper.maxTranslate()) {\r\n if (params.freeMode.momentumBounce) {\r\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\r\n newPosition = swiper.maxTranslate() - bounceAmount;\r\n }\r\n afterBouncePosition = swiper.maxTranslate();\r\n doBounce = true;\r\n data.allowMomentumBounce = true;\r\n }\r\n else {\r\n newPosition = swiper.maxTranslate();\r\n }\r\n if (params.loop && params.centeredSlides)\r\n needsLoopFix = true;\r\n }\r\n else if (newPosition > swiper.minTranslate()) {\r\n if (params.freeMode.momentumBounce) {\r\n if (newPosition - swiper.minTranslate() > bounceAmount) {\r\n newPosition = swiper.minTranslate() + bounceAmount;\r\n }\r\n afterBouncePosition = swiper.minTranslate();\r\n doBounce = true;\r\n data.allowMomentumBounce = true;\r\n }\r\n else {\r\n newPosition = swiper.minTranslate();\r\n }\r\n if (params.loop && params.centeredSlides)\r\n needsLoopFix = true;\r\n }\r\n else if (params.freeMode.sticky) {\r\n let nextSlide;\r\n for (let j = 0; j < snapGrid.length; j += 1) {\r\n if (snapGrid[j] > -newPosition) {\r\n nextSlide = j;\r\n break;\r\n }\r\n }\r\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\r\n newPosition = snapGrid[nextSlide];\r\n }\r\n else {\r\n newPosition = snapGrid[nextSlide - 1];\r\n }\r\n newPosition = -newPosition;\r\n }\r\n if (needsLoopFix) {\r\n once('transitionEnd', () => {\r\n swiper.loopFix();\r\n });\r\n }\r\n // Fix duration\r\n if (swiper.velocity !== 0) {\r\n if (rtl) {\r\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\r\n }\r\n else {\r\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\r\n }\r\n if (params.freeMode.sticky) {\r\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\r\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\r\n // It's easy to see this when simulating touch with mouse events. To fix this,\r\n // limit single-slide swipes to the default slide duration. This also has the\r\n // nice side effect of matching slide speed if the user stopped moving before\r\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\r\n // For faster swipes, also apply limits (albeit higher ones).\r\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\r\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\r\n if (moveDistance < currentSlideSize) {\r\n momentumDuration = params.speed;\r\n }\r\n else if (moveDistance < 2 * currentSlideSize) {\r\n momentumDuration = params.speed * 1.5;\r\n }\r\n else {\r\n momentumDuration = params.speed * 2.5;\r\n }\r\n }\r\n }\r\n else if (params.freeMode.sticky) {\r\n swiper.slideToClosest();\r\n return;\r\n }\r\n if (params.freeMode.momentumBounce && doBounce) {\r\n swiper.updateProgress(afterBouncePosition);\r\n swiper.setTransition(momentumDuration);\r\n swiper.setTranslate(newPosition);\r\n swiper.transitionStart(true, swiper.swipeDirection);\r\n swiper.animating = true;\r\n elementTransitionEnd(wrapperEl, () => {\r\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce)\r\n return;\r\n emit('momentumBounce');\r\n swiper.setTransition(params.speed);\r\n setTimeout(() => {\r\n swiper.setTranslate(afterBouncePosition);\r\n elementTransitionEnd(wrapperEl, () => {\r\n if (!swiper || swiper.destroyed)\r\n return;\r\n swiper.transitionEnd();\r\n });\r\n }, 0);\r\n });\r\n }\r\n else if (swiper.velocity) {\r\n emit('_freeModeNoMomentumRelease');\r\n swiper.updateProgress(newPosition);\r\n swiper.setTransition(momentumDuration);\r\n swiper.setTranslate(newPosition);\r\n swiper.transitionStart(true, swiper.swipeDirection);\r\n if (!swiper.animating) {\r\n swiper.animating = true;\r\n elementTransitionEnd(wrapperEl, () => {\r\n if (!swiper || swiper.destroyed)\r\n return;\r\n swiper.transitionEnd();\r\n });\r\n }\r\n }\r\n else {\r\n swiper.updateProgress(newPosition);\r\n }\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n else if (params.freeMode.sticky) {\r\n swiper.slideToClosest();\r\n return;\r\n }\r\n else if (params.freeMode) {\r\n emit('_freeModeNoMomentumRelease');\r\n }\r\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\r\n emit('_freeModeStaticRelease');\r\n swiper.updateProgress();\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n }\r\n Object.assign(swiper, {\r\n freeMode: {\r\n onTouchStart,\r\n onTouchMove,\r\n onTouchEnd\r\n }\r\n });\r\n }\r\n function Grid(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n grid: {\r\n rows: 1,\r\n fill: 'column'\r\n }\r\n });\r\n let slidesNumberEvenToRows;\r\n let slidesPerRow;\r\n let numFullColumns;\r\n let wasMultiRow;\r\n const getSpaceBetween = () => {\r\n let spaceBetween = swiper.params.spaceBetween;\r\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\r\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\r\n }\r\n else if (typeof spaceBetween === 'string') {\r\n spaceBetween = parseFloat(spaceBetween);\r\n }\r\n return spaceBetween;\r\n };\r\n const initSlides = slides => {\r\n const { slidesPerView } = swiper.params;\r\n const { rows, fill } = swiper.params.grid;\r\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\r\n numFullColumns = Math.floor(slidesLength / rows);\r\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\r\n slidesNumberEvenToRows = slidesLength;\r\n }\r\n else {\r\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\r\n }\r\n if (slidesPerView !== 'auto' && fill === 'row') {\r\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\r\n }\r\n slidesPerRow = slidesNumberEvenToRows / rows;\r\n };\r\n const unsetSlides = () => {\r\n if (swiper.slides) {\r\n swiper.slides.forEach(slide => {\r\n if (slide.swiperSlideGridSet) {\r\n slide.style.height = '';\r\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\r\n }\r\n });\r\n }\r\n };\r\n const updateSlide = (i, slide, slides) => {\r\n const { slidesPerGroup } = swiper.params;\r\n const spaceBetween = getSpaceBetween();\r\n const { rows, fill } = swiper.params.grid;\r\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\r\n // Set slides order\r\n let newSlideOrderIndex;\r\n let column;\r\n let row;\r\n if (fill === 'row' && slidesPerGroup > 1) {\r\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\r\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\r\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\r\n row = Math.floor(slideIndexInGroup / columnsInGroup);\r\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\r\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\r\n slide.style.order = newSlideOrderIndex;\r\n }\r\n else if (fill === 'column') {\r\n column = Math.floor(i / rows);\r\n row = i - column * rows;\r\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\r\n row += 1;\r\n if (row >= rows) {\r\n row = 0;\r\n column += 1;\r\n }\r\n }\r\n }\r\n else {\r\n row = Math.floor(i / slidesPerRow);\r\n column = i - row * slidesPerRow;\r\n }\r\n slide.row = row;\r\n slide.column = column;\r\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\r\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\r\n slide.swiperSlideGridSet = true;\r\n };\r\n const updateWrapperSize = (slideSize, snapGrid) => {\r\n const { centeredSlides, roundLengths } = swiper.params;\r\n const spaceBetween = getSpaceBetween();\r\n const { rows } = swiper.params.grid;\r\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\r\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\r\n if (!swiper.params.cssMode) {\r\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\r\n }\r\n if (centeredSlides) {\r\n const newSlidesGrid = [];\r\n for (let i = 0; i < snapGrid.length; i += 1) {\r\n let slidesGridItem = snapGrid[i];\r\n if (roundLengths)\r\n slidesGridItem = Math.floor(slidesGridItem);\r\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0])\r\n newSlidesGrid.push(slidesGridItem);\r\n }\r\n snapGrid.splice(0, snapGrid.length);\r\n snapGrid.push(...newSlidesGrid);\r\n }\r\n };\r\n const onInit = () => {\r\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\r\n };\r\n const onUpdate = () => {\r\n const { params, el } = swiper;\r\n const isMultiRow = params.grid && params.grid.rows > 1;\r\n if (wasMultiRow && !isMultiRow) {\r\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\r\n numFullColumns = 1;\r\n swiper.emitContainerClasses();\r\n }\r\n else if (!wasMultiRow && isMultiRow) {\r\n el.classList.add(`${params.containerModifierClass}grid`);\r\n if (params.grid.fill === 'column') {\r\n el.classList.add(`${params.containerModifierClass}grid-column`);\r\n }\r\n swiper.emitContainerClasses();\r\n }\r\n wasMultiRow = isMultiRow;\r\n };\r\n on('init', onInit);\r\n on('update', onUpdate);\r\n swiper.grid = {\r\n initSlides,\r\n unsetSlides,\r\n updateSlide,\r\n updateWrapperSize\r\n };\r\n }\r\n function appendSlide(slides) {\r\n const swiper = this;\r\n const { params, slidesEl } = swiper;\r\n if (params.loop) {\r\n swiper.loopDestroy();\r\n }\r\n const appendElement = slideEl => {\r\n if (typeof slideEl === 'string') {\r\n const tempDOM = document.createElement('div');\r\n tempDOM.innerHTML = slideEl;\r\n slidesEl.append(tempDOM.children[0]);\r\n tempDOM.innerHTML = '';\r\n }\r\n else {\r\n slidesEl.append(slideEl);\r\n }\r\n };\r\n if (typeof slides === 'object' && 'length' in slides) {\r\n for (let i = 0; i < slides.length; i += 1) {\r\n if (slides[i])\r\n appendElement(slides[i]);\r\n }\r\n }\r\n else {\r\n appendElement(slides);\r\n }\r\n swiper.recalcSlides();\r\n if (params.loop) {\r\n swiper.loopCreate();\r\n }\r\n if (!params.observer || swiper.isElement) {\r\n swiper.update();\r\n }\r\n }\r\n function prependSlide(slides) {\r\n const swiper = this;\r\n const { params, activeIndex, slidesEl } = swiper;\r\n if (params.loop) {\r\n swiper.loopDestroy();\r\n }\r\n let newActiveIndex = activeIndex + 1;\r\n const prependElement = slideEl => {\r\n if (typeof slideEl === 'string') {\r\n const tempDOM = document.createElement('div');\r\n tempDOM.innerHTML = slideEl;\r\n slidesEl.prepend(tempDOM.children[0]);\r\n tempDOM.innerHTML = '';\r\n }\r\n else {\r\n slidesEl.prepend(slideEl);\r\n }\r\n };\r\n if (typeof slides === 'object' && 'length' in slides) {\r\n for (let i = 0; i < slides.length; i += 1) {\r\n if (slides[i])\r\n prependElement(slides[i]);\r\n }\r\n newActiveIndex = activeIndex + slides.length;\r\n }\r\n else {\r\n prependElement(slides);\r\n }\r\n swiper.recalcSlides();\r\n if (params.loop) {\r\n swiper.loopCreate();\r\n }\r\n if (!params.observer || swiper.isElement) {\r\n swiper.update();\r\n }\r\n swiper.slideTo(newActiveIndex, 0, false);\r\n }\r\n function addSlide(index, slides) {\r\n const swiper = this;\r\n const { params, activeIndex, slidesEl } = swiper;\r\n let activeIndexBuffer = activeIndex;\r\n if (params.loop) {\r\n activeIndexBuffer -= swiper.loopedSlides;\r\n swiper.loopDestroy();\r\n swiper.recalcSlides();\r\n }\r\n const baseLength = swiper.slides.length;\r\n if (index <= 0) {\r\n swiper.prependSlide(slides);\r\n return;\r\n }\r\n if (index >= baseLength) {\r\n swiper.appendSlide(slides);\r\n return;\r\n }\r\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\r\n const slidesBuffer = [];\r\n for (let i = baseLength - 1; i >= index; i -= 1) {\r\n const currentSlide = swiper.slides[i];\r\n currentSlide.remove();\r\n slidesBuffer.unshift(currentSlide);\r\n }\r\n if (typeof slides === 'object' && 'length' in slides) {\r\n for (let i = 0; i < slides.length; i += 1) {\r\n if (slides[i])\r\n slidesEl.append(slides[i]);\r\n }\r\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\r\n }\r\n else {\r\n slidesEl.append(slides);\r\n }\r\n for (let i = 0; i < slidesBuffer.length; i += 1) {\r\n slidesEl.append(slidesBuffer[i]);\r\n }\r\n swiper.recalcSlides();\r\n if (params.loop) {\r\n swiper.loopCreate();\r\n }\r\n if (!params.observer || swiper.isElement) {\r\n swiper.update();\r\n }\r\n if (params.loop) {\r\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\r\n }\r\n else {\r\n swiper.slideTo(newActiveIndex, 0, false);\r\n }\r\n }\r\n function removeSlide(slidesIndexes) {\r\n const swiper = this;\r\n const { params, activeIndex } = swiper;\r\n let activeIndexBuffer = activeIndex;\r\n if (params.loop) {\r\n activeIndexBuffer -= swiper.loopedSlides;\r\n swiper.loopDestroy();\r\n }\r\n let newActiveIndex = activeIndexBuffer;\r\n let indexToRemove;\r\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\r\n for (let i = 0; i < slidesIndexes.length; i += 1) {\r\n indexToRemove = slidesIndexes[i];\r\n if (swiper.slides[indexToRemove])\r\n swiper.slides[indexToRemove].remove();\r\n if (indexToRemove < newActiveIndex)\r\n newActiveIndex -= 1;\r\n }\r\n newActiveIndex = Math.max(newActiveIndex, 0);\r\n }\r\n else {\r\n indexToRemove = slidesIndexes;\r\n if (swiper.slides[indexToRemove])\r\n swiper.slides[indexToRemove].remove();\r\n if (indexToRemove < newActiveIndex)\r\n newActiveIndex -= 1;\r\n newActiveIndex = Math.max(newActiveIndex, 0);\r\n }\r\n swiper.recalcSlides();\r\n if (params.loop) {\r\n swiper.loopCreate();\r\n }\r\n if (!params.observer || swiper.isElement) {\r\n swiper.update();\r\n }\r\n if (params.loop) {\r\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\r\n }\r\n else {\r\n swiper.slideTo(newActiveIndex, 0, false);\r\n }\r\n }\r\n function removeAllSlides() {\r\n const swiper = this;\r\n const slidesIndexes = [];\r\n for (let i = 0; i < swiper.slides.length; i += 1) {\r\n slidesIndexes.push(i);\r\n }\r\n swiper.removeSlide(slidesIndexes);\r\n }\r\n function Manipulation(_ref) {\r\n let { swiper } = _ref;\r\n Object.assign(swiper, {\r\n appendSlide: appendSlide.bind(swiper),\r\n prependSlide: prependSlide.bind(swiper),\r\n addSlide: addSlide.bind(swiper),\r\n removeSlide: removeSlide.bind(swiper),\r\n removeAllSlides: removeAllSlides.bind(swiper)\r\n });\r\n }\r\n function effectInit(params) {\r\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective, recreateShadows, getEffectParams } = params;\r\n on('beforeInit', () => {\r\n if (swiper.params.effect !== effect)\r\n return;\r\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\r\n if (perspective && perspective()) {\r\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\r\n }\r\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\r\n Object.assign(swiper.params, overwriteParamsResult);\r\n Object.assign(swiper.originalParams, overwriteParamsResult);\r\n });\r\n on('setTranslate', () => {\r\n if (swiper.params.effect !== effect)\r\n return;\r\n setTranslate();\r\n });\r\n on('setTransition', (_s, duration) => {\r\n if (swiper.params.effect !== effect)\r\n return;\r\n setTransition(duration);\r\n });\r\n on('transitionEnd', () => {\r\n if (swiper.params.effect !== effect)\r\n return;\r\n if (recreateShadows) {\r\n if (!getEffectParams || !getEffectParams().slideShadows)\r\n return;\r\n // remove shadows\r\n swiper.slides.forEach(slideEl => {\r\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\r\n });\r\n // create new one\r\n recreateShadows();\r\n }\r\n });\r\n let requireUpdateOnVirtual;\r\n on('virtualUpdate', () => {\r\n if (swiper.params.effect !== effect)\r\n return;\r\n if (!swiper.slides.length) {\r\n requireUpdateOnVirtual = true;\r\n }\r\n requestAnimationFrame(() => {\r\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\r\n setTranslate();\r\n requireUpdateOnVirtual = false;\r\n }\r\n });\r\n });\r\n }\r\n function effectTarget(effectParams, slideEl) {\r\n const transformEl = getSlideTransformEl(slideEl);\r\n if (transformEl !== slideEl) {\r\n transformEl.style.backfaceVisibility = 'hidden';\r\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\r\n }\r\n return transformEl;\r\n }\r\n function effectVirtualTransitionEnd(_ref) {\r\n let { swiper, duration, transformElements, allSlides } = _ref;\r\n const { activeIndex } = swiper;\r\n const getSlide = el => {\r\n if (!el.parentElement) {\r\n // assume shadow root\r\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\r\n return slide;\r\n }\r\n return el.parentElement;\r\n };\r\n if (swiper.params.virtualTranslate && duration !== 0) {\r\n let eventTriggered = false;\r\n let transitionEndTarget;\r\n if (allSlides) {\r\n transitionEndTarget = transformElements;\r\n }\r\n else {\r\n transitionEndTarget = transformElements.filter(transformEl => {\r\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\r\n return swiper.getSlideIndex(el) === activeIndex;\r\n });\r\n }\r\n transitionEndTarget.forEach(el => {\r\n elementTransitionEnd(el, () => {\r\n if (eventTriggered)\r\n return;\r\n if (!swiper || swiper.destroyed)\r\n return;\r\n eventTriggered = true;\r\n swiper.animating = false;\r\n const evt = new window.CustomEvent('transitionend', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n swiper.wrapperEl.dispatchEvent(evt);\r\n });\r\n });\r\n }\r\n }\r\n function EffectFade(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n fadeEffect: {\r\n crossFade: false\r\n }\r\n });\r\n const setTranslate = () => {\r\n const { slides } = swiper;\r\n const params = swiper.params.fadeEffect;\r\n for (let i = 0; i < slides.length; i += 1) {\r\n const slideEl = swiper.slides[i];\r\n const offset = slideEl.swiperSlideOffset;\r\n let tx = -offset;\r\n if (!swiper.params.virtualTranslate)\r\n tx -= swiper.translate;\r\n let ty = 0;\r\n if (!swiper.isHorizontal()) {\r\n ty = tx;\r\n tx = 0;\r\n }\r\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\r\n const targetEl = effectTarget(params, slideEl);\r\n targetEl.style.opacity = slideOpacity;\r\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\r\n }\r\n };\r\n const setTransition = duration => {\r\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\r\n transformElements.forEach(el => {\r\n el.style.transitionDuration = `${duration}ms`;\r\n });\r\n effectVirtualTransitionEnd({\r\n swiper,\r\n duration,\r\n transformElements,\r\n allSlides: true\r\n });\r\n };\r\n effectInit({\r\n effect: 'fade',\r\n swiper,\r\n on,\r\n setTranslate,\r\n setTransition,\r\n overwriteParams: () => ({\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n watchSlidesProgress: true,\r\n spaceBetween: 0,\r\n virtualTranslate: !swiper.params.cssMode\r\n })\r\n });\r\n }\r\n function EffectCube(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n cubeEffect: {\r\n slideShadows: true,\r\n shadow: true,\r\n shadowOffset: 20,\r\n shadowScale: 0.94\r\n }\r\n });\r\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\r\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\r\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\r\n if (!shadowBefore) {\r\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\r\n slideEl.append(shadowBefore);\r\n }\r\n if (!shadowAfter) {\r\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\r\n slideEl.append(shadowAfter);\r\n }\r\n if (shadowBefore)\r\n shadowBefore.style.opacity = Math.max(-progress, 0);\r\n if (shadowAfter)\r\n shadowAfter.style.opacity = Math.max(progress, 0);\r\n };\r\n const recreateShadows = () => {\r\n // create new ones\r\n const isHorizontal = swiper.isHorizontal();\r\n swiper.slides.forEach(slideEl => {\r\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\r\n createSlideShadows(slideEl, progress, isHorizontal);\r\n });\r\n };\r\n const setTranslate = () => {\r\n const { el, wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, browser } = swiper;\r\n const params = swiper.params.cubeEffect;\r\n const isHorizontal = swiper.isHorizontal();\r\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\r\n let wrapperRotate = 0;\r\n let cubeShadowEl;\r\n if (params.shadow) {\r\n if (isHorizontal) {\r\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\r\n if (!cubeShadowEl) {\r\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\r\n swiper.wrapperEl.append(cubeShadowEl);\r\n }\r\n cubeShadowEl.style.height = `${swiperWidth}px`;\r\n }\r\n else {\r\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\r\n if (!cubeShadowEl) {\r\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\r\n el.append(cubeShadowEl);\r\n }\r\n }\r\n }\r\n for (let i = 0; i < slides.length; i += 1) {\r\n const slideEl = slides[i];\r\n let slideIndex = i;\r\n if (isVirtual) {\r\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\r\n }\r\n let slideAngle = slideIndex * 90;\r\n let round = Math.floor(slideAngle / 360);\r\n if (rtl) {\r\n slideAngle = -slideAngle;\r\n round = Math.floor(-slideAngle / 360);\r\n }\r\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\r\n let tx = 0;\r\n let ty = 0;\r\n let tz = 0;\r\n if (slideIndex % 4 === 0) {\r\n tx = -round * 4 * swiperSize;\r\n tz = 0;\r\n }\r\n else if ((slideIndex - 1) % 4 === 0) {\r\n tx = 0;\r\n tz = -round * 4 * swiperSize;\r\n }\r\n else if ((slideIndex - 2) % 4 === 0) {\r\n tx = swiperSize + round * 4 * swiperSize;\r\n tz = swiperSize;\r\n }\r\n else if ((slideIndex - 3) % 4 === 0) {\r\n tx = -swiperSize;\r\n tz = 3 * swiperSize + swiperSize * 4 * round;\r\n }\r\n if (rtl) {\r\n tx = -tx;\r\n }\r\n if (!isHorizontal) {\r\n ty = tx;\r\n tx = 0;\r\n }\r\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\r\n if (progress <= 1 && progress > -1) {\r\n wrapperRotate = slideIndex * 90 + progress * 90;\r\n if (rtl)\r\n wrapperRotate = -slideIndex * 90 - progress * 90;\r\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) {\r\n wrapperRotate += 0.001;\r\n }\r\n }\r\n slideEl.style.transform = transform;\r\n if (params.slideShadows) {\r\n createSlideShadows(slideEl, progress, isHorizontal);\r\n }\r\n }\r\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\r\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\r\n if (params.shadow) {\r\n if (isHorizontal) {\r\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\r\n }\r\n else {\r\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\r\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\r\n const scale1 = params.shadowScale;\r\n const scale2 = params.shadowScale / multiplier;\r\n const offset = params.shadowOffset;\r\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\r\n }\r\n }\r\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\r\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\r\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\r\n };\r\n const setTransition = duration => {\r\n const { el, slides } = swiper;\r\n slides.forEach(slideEl => {\r\n slideEl.style.transitionDuration = `${duration}ms`;\r\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\r\n subEl.style.transitionDuration = `${duration}ms`;\r\n });\r\n });\r\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\r\n const shadowEl = el.querySelector('.swiper-cube-shadow');\r\n if (shadowEl)\r\n shadowEl.style.transitionDuration = `${duration}ms`;\r\n }\r\n };\r\n effectInit({\r\n effect: 'cube',\r\n swiper,\r\n on,\r\n setTranslate,\r\n setTransition,\r\n recreateShadows,\r\n getEffectParams: () => swiper.params.cubeEffect,\r\n perspective: () => true,\r\n overwriteParams: () => ({\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n watchSlidesProgress: true,\r\n resistanceRatio: 0,\r\n spaceBetween: 0,\r\n centeredSlides: false,\r\n virtualTranslate: true\r\n })\r\n });\r\n }\r\n function createShadow(suffix, slideEl, side) {\r\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\r\n const shadowContainer = getSlideTransformEl(slideEl);\r\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\r\n if (!shadowEl) {\r\n shadowEl = createElement('div', shadowClass.split(' '));\r\n shadowContainer.append(shadowEl);\r\n }\r\n return shadowEl;\r\n }\r\n function EffectFlip(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n flipEffect: {\r\n slideShadows: true,\r\n limitRotation: true\r\n }\r\n });\r\n const createSlideShadows = (slideEl, progress) => {\r\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\r\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\r\n if (!shadowBefore) {\r\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\r\n }\r\n if (!shadowAfter) {\r\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\r\n }\r\n if (shadowBefore)\r\n shadowBefore.style.opacity = Math.max(-progress, 0);\r\n if (shadowAfter)\r\n shadowAfter.style.opacity = Math.max(progress, 0);\r\n };\r\n const recreateShadows = () => {\r\n // Set shadows\r\n swiper.params.flipEffect;\r\n swiper.slides.forEach(slideEl => {\r\n let progress = slideEl.progress;\r\n if (swiper.params.flipEffect.limitRotation) {\r\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\r\n }\r\n createSlideShadows(slideEl, progress);\r\n });\r\n };\r\n const setTranslate = () => {\r\n const { slides, rtlTranslate: rtl } = swiper;\r\n const params = swiper.params.flipEffect;\r\n for (let i = 0; i < slides.length; i += 1) {\r\n const slideEl = slides[i];\r\n let progress = slideEl.progress;\r\n if (swiper.params.flipEffect.limitRotation) {\r\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\r\n }\r\n const offset = slideEl.swiperSlideOffset;\r\n const rotate = -180 * progress;\r\n let rotateY = rotate;\r\n let rotateX = 0;\r\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\r\n let ty = 0;\r\n if (!swiper.isHorizontal()) {\r\n ty = tx;\r\n tx = 0;\r\n rotateX = -rotateY;\r\n rotateY = 0;\r\n }\r\n else if (rtl) {\r\n rotateY = -rotateY;\r\n }\r\n if (swiper.browser && swiper.browser.need3dFix) {\r\n if (Math.abs(rotateY) / 90 % 2 === 1) {\r\n rotateY += 0.001;\r\n }\r\n if (Math.abs(rotateX) / 90 % 2 === 1) {\r\n rotateX += 0.001;\r\n }\r\n }\r\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\r\n if (params.slideShadows) {\r\n createSlideShadows(slideEl, progress);\r\n }\r\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\r\n const targetEl = effectTarget(params, slideEl);\r\n targetEl.style.transform = transform;\r\n }\r\n };\r\n const setTransition = duration => {\r\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\r\n transformElements.forEach(el => {\r\n el.style.transitionDuration = `${duration}ms`;\r\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\r\n shadowEl.style.transitionDuration = `${duration}ms`;\r\n });\r\n });\r\n effectVirtualTransitionEnd({\r\n swiper,\r\n duration,\r\n transformElements\r\n });\r\n };\r\n effectInit({\r\n effect: 'flip',\r\n swiper,\r\n on,\r\n setTranslate,\r\n setTransition,\r\n recreateShadows,\r\n getEffectParams: () => swiper.params.flipEffect,\r\n perspective: () => true,\r\n overwriteParams: () => ({\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n watchSlidesProgress: true,\r\n spaceBetween: 0,\r\n virtualTranslate: !swiper.params.cssMode\r\n })\r\n });\r\n }\r\n function EffectCoverflow(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n coverflowEffect: {\r\n rotate: 50,\r\n stretch: 0,\r\n depth: 100,\r\n scale: 1,\r\n modifier: 1,\r\n slideShadows: true\r\n }\r\n });\r\n const setTranslate = () => {\r\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\r\n const params = swiper.params.coverflowEffect;\r\n const isHorizontal = swiper.isHorizontal();\r\n const transform = swiper.translate;\r\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\r\n const rotate = isHorizontal ? params.rotate : -params.rotate;\r\n const translate = params.depth;\r\n // Each slide offset from center\r\n for (let i = 0, length = slides.length; i < length; i += 1) {\r\n const slideEl = slides[i];\r\n const slideSize = slidesSizesGrid[i];\r\n const slideOffset = slideEl.swiperSlideOffset;\r\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\r\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\r\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\r\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\r\n // var rotateZ = 0\r\n let translateZ = -translate * Math.abs(offsetMultiplier);\r\n let stretch = params.stretch;\r\n // Allow percentage to make a relative stretch for responsive sliders\r\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\r\n stretch = parseFloat(params.stretch) / 100 * slideSize;\r\n }\r\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\r\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\r\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\r\n // Fix for ultra small values\r\n if (Math.abs(translateX) < 0.001)\r\n translateX = 0;\r\n if (Math.abs(translateY) < 0.001)\r\n translateY = 0;\r\n if (Math.abs(translateZ) < 0.001)\r\n translateZ = 0;\r\n if (Math.abs(rotateY) < 0.001)\r\n rotateY = 0;\r\n if (Math.abs(rotateX) < 0.001)\r\n rotateX = 0;\r\n if (Math.abs(scale) < 0.001)\r\n scale = 0;\r\n if (swiper.browser && swiper.browser.need3dFix) {\r\n if (Math.abs(rotateY) / 90 % 2 === 1) {\r\n rotateY += 0.001;\r\n }\r\n if (Math.abs(rotateX) / 90 % 2 === 1) {\r\n rotateX += 0.001;\r\n }\r\n }\r\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\r\n const targetEl = effectTarget(params, slideEl);\r\n targetEl.style.transform = slideTransform;\r\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\r\n if (params.slideShadows) {\r\n // Set shadows\r\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\r\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\r\n if (!shadowBeforeEl) {\r\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\r\n }\r\n if (!shadowAfterEl) {\r\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\r\n }\r\n if (shadowBeforeEl)\r\n shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\r\n if (shadowAfterEl)\r\n shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\r\n }\r\n }\r\n };\r\n const setTransition = duration => {\r\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\r\n transformElements.forEach(el => {\r\n el.style.transitionDuration = `${duration}ms`;\r\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\r\n shadowEl.style.transitionDuration = `${duration}ms`;\r\n });\r\n });\r\n };\r\n effectInit({\r\n effect: 'coverflow',\r\n swiper,\r\n on,\r\n setTranslate,\r\n setTransition,\r\n perspective: () => true,\r\n overwriteParams: () => ({\r\n watchSlidesProgress: true\r\n })\r\n });\r\n }\r\n function EffectCreative(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n creativeEffect: {\r\n limitProgress: 1,\r\n shadowPerProgress: false,\r\n progressMultiplier: 1,\r\n perspective: true,\r\n prev: {\r\n translate: [0, 0, 0],\r\n rotate: [0, 0, 0],\r\n opacity: 1,\r\n scale: 1\r\n },\r\n next: {\r\n translate: [0, 0, 0],\r\n rotate: [0, 0, 0],\r\n opacity: 1,\r\n scale: 1\r\n }\r\n }\r\n });\r\n const getTranslateValue = value => {\r\n if (typeof value === 'string')\r\n return value;\r\n return `${value}px`;\r\n };\r\n const setTranslate = () => {\r\n const { slides, wrapperEl, slidesSizesGrid } = swiper;\r\n const params = swiper.params.creativeEffect;\r\n const { progressMultiplier: multiplier } = params;\r\n const isCenteredSlides = swiper.params.centeredSlides;\r\n if (isCenteredSlides) {\r\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\r\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\r\n }\r\n for (let i = 0; i < slides.length; i += 1) {\r\n const slideEl = slides[i];\r\n const slideProgress = slideEl.progress;\r\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\r\n let originalProgress = progress;\r\n if (!isCenteredSlides) {\r\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\r\n }\r\n const offset = slideEl.swiperSlideOffset;\r\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\r\n const r = [0, 0, 0];\r\n let custom = false;\r\n if (!swiper.isHorizontal()) {\r\n t[1] = t[0];\r\n t[0] = 0;\r\n }\r\n let data = {\r\n translate: [0, 0, 0],\r\n rotate: [0, 0, 0],\r\n scale: 1,\r\n opacity: 1\r\n };\r\n if (progress < 0) {\r\n data = params.next;\r\n custom = true;\r\n }\r\n else if (progress > 0) {\r\n data = params.prev;\r\n custom = true;\r\n }\r\n // set translate\r\n t.forEach((value, index) => {\r\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\r\n });\r\n // set rotates\r\n r.forEach((value, index) => {\r\n let val = data.rotate[index] * Math.abs(progress * multiplier);\r\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) {\r\n val += 0.001;\r\n }\r\n r[index] = val;\r\n });\r\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\r\n const translateString = t.join(', ');\r\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\r\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\r\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\r\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\r\n // Set shadows\r\n if (custom && data.shadow || !custom) {\r\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\r\n if (!shadowEl && data.shadow) {\r\n shadowEl = createShadow('creative', slideEl);\r\n }\r\n if (shadowEl) {\r\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\r\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\r\n }\r\n }\r\n const targetEl = effectTarget(params, slideEl);\r\n targetEl.style.transform = transform;\r\n targetEl.style.opacity = opacityString;\r\n if (data.origin) {\r\n targetEl.style.transformOrigin = data.origin;\r\n }\r\n }\r\n };\r\n const setTransition = duration => {\r\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\r\n transformElements.forEach(el => {\r\n el.style.transitionDuration = `${duration}ms`;\r\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\r\n shadowEl.style.transitionDuration = `${duration}ms`;\r\n });\r\n });\r\n effectVirtualTransitionEnd({\r\n swiper,\r\n duration,\r\n transformElements,\r\n allSlides: true\r\n });\r\n };\r\n effectInit({\r\n effect: 'creative',\r\n swiper,\r\n on,\r\n setTranslate,\r\n setTransition,\r\n perspective: () => swiper.params.creativeEffect.perspective,\r\n overwriteParams: () => ({\r\n watchSlidesProgress: true,\r\n virtualTranslate: !swiper.params.cssMode\r\n })\r\n });\r\n }\r\n function EffectCards(_ref) {\r\n let { swiper, extendParams, on } = _ref;\r\n extendParams({\r\n cardsEffect: {\r\n slideShadows: true,\r\n rotate: true,\r\n perSlideRotate: 2,\r\n perSlideOffset: 8\r\n }\r\n });\r\n const setTranslate = () => {\r\n const { slides, activeIndex, rtlTranslate: rtl } = swiper;\r\n const params = swiper.params.cardsEffect;\r\n const { startTranslate, isTouched } = swiper.touchEventsData;\r\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\r\n for (let i = 0; i < slides.length; i += 1) {\r\n const slideEl = slides[i];\r\n const slideProgress = slideEl.progress;\r\n const progress = Math.min(Math.max(slideProgress, -4), 4);\r\n let offset = slideEl.swiperSlideOffset;\r\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\r\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\r\n }\r\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\r\n offset -= slides[0].swiperSlideOffset;\r\n }\r\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\r\n let tY = 0;\r\n const tZ = -100 * Math.abs(progress);\r\n let scale = 1;\r\n let rotate = -params.perSlideRotate * progress;\r\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\r\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\r\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\r\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\r\n if (isSwipeToNext || isSwipeToPrev) {\r\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\r\n rotate += -28 * progress * subProgress;\r\n scale += -0.5 * subProgress;\r\n tXAdd += 96 * subProgress;\r\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\r\n }\r\n if (progress < 0) {\r\n // next\r\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\r\n }\r\n else if (progress > 0) {\r\n // prev\r\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\r\n }\r\n else {\r\n tX = `${tX}px`;\r\n }\r\n if (!swiper.isHorizontal()) {\r\n const prevY = tY;\r\n tY = tX;\r\n tX = prevY;\r\n }\r\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\r\n /* eslint-disable */\r\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\r\n /* eslint-enable */\r\n if (params.slideShadows) {\r\n // Set shadows\r\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\r\n if (!shadowEl) {\r\n shadowEl = createShadow('cards', slideEl);\r\n }\r\n if (shadowEl)\r\n shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\r\n }\r\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\r\n const targetEl = effectTarget(params, slideEl);\r\n targetEl.style.transform = transform;\r\n }\r\n };\r\n const setTransition = duration => {\r\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\r\n transformElements.forEach(el => {\r\n el.style.transitionDuration = `${duration}ms`;\r\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\r\n shadowEl.style.transitionDuration = `${duration}ms`;\r\n });\r\n });\r\n effectVirtualTransitionEnd({\r\n swiper,\r\n duration,\r\n transformElements\r\n });\r\n };\r\n effectInit({\r\n effect: 'cards',\r\n swiper,\r\n on,\r\n setTranslate,\r\n setTransition,\r\n perspective: () => true,\r\n overwriteParams: () => ({\r\n watchSlidesProgress: true,\r\n virtualTranslate: !swiper.params.cssMode\r\n })\r\n });\r\n }\r\n /**\r\n * Swiper 11.0.7\r\n * Most modern mobile touch slider and framework with hardware accelerated transitions\r\n * https://swiperjs.com\r\n *\r\n * Copyright 2014-2024 Vladimir Kharlampidi\r\n *\r\n * Released under the MIT License\r\n *\r\n * Released on: February 27, 2024\r\n */\r\n // Swiper Class\r\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];\r\n Swiper.use(modules);\r\n return Swiper;\r\n})();\r\nexports.default = Swiper;\r\n","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 };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };"],"sourceRoot":""}