{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/stimulus/dist/stimulus.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/esm/utils/dom.js","webpack:///./node_modules/swiper/esm/utils/get-support.js","webpack:///./node_modules/swiper/esm/utils/get-device.js","webpack:///./node_modules/swiper/esm/utils/get-browser.js","webpack:///./node_modules/swiper/esm/utils/utils.js","webpack:///./node_modules/swiper/esm/modules/resize/resize.js","webpack:///./node_modules/swiper/esm/modules/observer/observer.js","webpack:///./node_modules/swiper/esm/components/core/modular.js","webpack:///./node_modules/swiper/esm/components/core/events-emitter.js","webpack:///./node_modules/swiper/esm/components/core/translate/index.js","webpack:///./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/index.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack:///./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/esm/components/core/events/onResize.js","webpack:///./node_modules/swiper/esm/components/core/events/onClick.js","webpack:///./node_modules/swiper/esm/components/core/events/onScroll.js","webpack:///./node_modules/swiper/esm/components/core/events/index.js","webpack:///./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack:///./node_modules/swiper/esm/components/core/defaults.js","webpack:///./node_modules/swiper/esm/components/core/core-class.js","webpack:///./node_modules/swiper/esm/components/core/update/index.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSize.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack:///./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/transition/index.js","webpack:///./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/esm/components/core/loop/index.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/index.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/classes/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack:///./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack:///./node_modules/swiper/esm/components/core/images/index.js","webpack:///./node_modules/swiper/esm/components/core/images/loadImage.js","webpack:///./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack:///./node_modules/swiper/esm/components/virtual/virtual.js","webpack:///./node_modules/swiper/esm/components/keyboard/keyboard.js","webpack:///./node_modules/swiper/esm/components/mousewheel/mousewheel.js","webpack:///./node_modules/swiper/esm/components/navigation/navigation.js","webpack:///./node_modules/swiper/esm/components/pagination/pagination.js","webpack:///./node_modules/swiper/esm/components/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/esm/components/parallax/parallax.js","webpack:///./node_modules/swiper/esm/components/zoom/zoom.js","webpack:///./node_modules/swiper/esm/components/lazy/lazy.js","webpack:///./node_modules/swiper/esm/components/controller/controller.js","webpack:///./node_modules/swiper/esm/components/a11y/a11y.js","webpack:///./node_modules/swiper/esm/components/history/history.js","webpack:///./node_modules/swiper/esm/components/hash-navigation/hash-navigation.js","webpack:///./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack:///./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack:///./node_modules/swiper/esm/components/effect-cube/effect-cube.js","webpack:///./node_modules/swiper/esm/components/effect-flip/effect-flip.js","webpack:///./node_modules/swiper/esm/components/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack:///./node_modules/swiper/swiper-bundle.esm.js","webpack:///./node_modules/stimulus-carousel/dist/stimulus-carousel.es.js","webpack:///./node_modules/intl-tel-input/index.js","webpack:///./app/javascript/packs/modules/countdown.js","webpack:///./app/javascript/packs/modules/tel-input.js","webpack:///./node_modules/intl-tel-input/build/js/intlTelInput.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","webpack:///./app/javascript/controllers/carousel_controller.js","webpack:///./app/javascript/controllers/site/faq_controller.js","webpack:///./app/javascript/controllers/site/menu_controller.js","webpack:///./app/javascript/controllers/site/tab_container_controller.js","webpack:///./app/javascript/packs/modules sync \\.js$","webpack:///./app/javascript/images sync \\.(svg|png|jpg|jpeg|gif)$","webpack:///./app/javascript/images/android-app-download.png","webpack:///./app/javascript/images/android-app-qrcode.png","webpack:///./app/javascript/images/app.png","webpack:///./app/javascript/images/avatar-upload.png","webpack:///./app/javascript/images/avatar-upload.svg","webpack:///./app/javascript/images/avatar.png","webpack:///./app/javascript/images/bola-de-futebol.png","webpack:///./app/javascript/images/brasileirao.png","webpack:///./app/javascript/images/bronze-medal.svg","webpack:///./app/javascript/images/calendar.png","webpack:///./app/javascript/images/campo-de-futebol.png","webpack:///./app/javascript/images/campo-de-futebol2.png","webpack:///./app/javascript/images/champion.gif","webpack:///./app/javascript/images/copaamerica.jpg","webpack:///./app/javascript/images/dessi.jpeg","webpack:///./app/javascript/images/dryer.gif","webpack:///./app/javascript/images/dryer.png","webpack:///./app/javascript/images/dryer.svg","webpack:///./app/javascript/images/eliminated.svg","webpack:///./app/javascript/images/football.png","webpack:///./app/javascript/images/free.svg","webpack:///./app/javascript/images/gabigol.jpg","webpack:///./app/javascript/images/games.png","webpack:///./app/javascript/images/gold-medal.svg","webpack:///./app/javascript/images/gold-trophy.svg","webpack:///./app/javascript/images/hello.png","webpack:///./app/javascript/images/how_it_works_1.png","webpack:///./app/javascript/images/how_it_works_2.png","webpack:///./app/javascript/images/how_it_works_3.png","webpack:///./app/javascript/images/how_it_works_4.png","webpack:///./app/javascript/images/howtoplay1.png","webpack:///./app/javascript/images/howtoplay2.png","webpack:///./app/javascript/images/howtoplay3.png","webpack:///./app/javascript/images/icon-login.svg","webpack:///./app/javascript/images/joao-marcatto.jpg","webpack:///./app/javascript/images/knock_out.png","webpack:///./app/javascript/images/locked.svg","webpack:///./app/javascript/images/logo.svg","webpack:///./app/javascript/images/pago.svg","webpack:///./app/javascript/images/paid_game.png","webpack:///./app/javascript/images/pix.png","webpack:///./app/javascript/images/podio.png","webpack:///./app/javascript/images/qr_code_pix.jpeg","webpack:///./app/javascript/images/railsway.png","webpack:///./app/javascript/images/rank.png","webpack:///./app/javascript/images/round-robin.svg","webpack:///./app/javascript/images/round_robin.png","webpack:///./app/javascript/images/serie_a.png","webpack:///./app/javascript/images/serie_b.png","webpack:///./app/javascript/images/silver-medal.svg","webpack:///./app/javascript/images/site/16x16.png","webpack:///./app/javascript/images/site/32x32.png","webpack:///./app/javascript/images/site/64x64.png","webpack:///./app/javascript/images/site/arrow-down.svg","webpack:///./app/javascript/images/site/background.png","webpack:///./app/javascript/images/site/check.svg","webpack:///./app/javascript/images/site/close.svg","webpack:///./app/javascript/images/site/e-futebol.png","webpack:///./app/javascript/images/site/ellipse-left.svg","webpack:///./app/javascript/images/site/ellipse-right.svg","webpack:///./app/javascript/images/site/hamburguer.png","webpack:///./app/javascript/images/site/hamburguer.svg","webpack:///./app/javascript/images/site/hits.svg","webpack:///./app/javascript/images/site/insta.png","webpack:///./app/javascript/images/site/insta.svg","webpack:///./app/javascript/images/site/laliga.svg","webpack:///./app/javascript/images/site/mail.svg","webpack:///./app/javascript/images/site/mailer.svg","webpack:///./app/javascript/images/site/marks-left.svg","webpack:///./app/javascript/images/site/marks-right.svg","webpack:///./app/javascript/images/site/oficial_background.png","webpack:///./app/javascript/images/site/premier.png","webpack:///./app/javascript/images/site/rectangle.svg","webpack:///./app/javascript/images/site/serie-a.png","webpack:///./app/javascript/images/site/serie-b.png","webpack:///./app/javascript/images/site/serie-c.png","webpack:///./app/javascript/images/site/step-five.svg","webpack:///./app/javascript/images/site/step-four.svg","webpack:///./app/javascript/images/site/step-one.svg","webpack:///./app/javascript/images/site/step-three.svg","webpack:///./app/javascript/images/site/step-two.svg","webpack:///./app/javascript/images/site/tack.svg","webpack:///./app/javascript/images/site/trophies.svg","webpack:///./app/javascript/images/site/whats.svg","webpack:///./app/javascript/images/site/wpp.png","webpack:///./app/javascript/images/survivor.svg","webpack:///./app/javascript/images/survivor_.svg","webpack:///./app/javascript/images/trophy-notice.svg","webpack:///./app/javascript/images/trophy.gif","webpack:///./app/javascript/images/trophy.svg","webpack:///./app/javascript/images/unlocked.svg","webpack:///./app/javascript/images/user.svg","webpack:///./app/javascript/images/user_green.svg","webpack:///./app/javascript/images/whats.png","webpack:///./app/javascript/images/whatsapp2.png","webpack:///./app/javascript/images/win_matches.png","webpack:///./app/javascript/images/winner.svg","webpack:///./app/javascript/images/word_2022.png","webpack:///./app/javascript/images/wpp.png","webpack:///./node_modules/vanilla-masker/lib/vanilla-masker.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./app/javascript/controllers/autosave_controller.js","webpack:///./app/javascript/controllers/drawer_controller.js","webpack:///./app/javascript/controllers/form_controller.js","webpack:///./app/javascript/controllers/game_wizard_controller.js","webpack:///./app/javascript/controllers/hello_controller.js","webpack:///./app/javascript/controllers/image_preview_controller.js","webpack:///./app/javascript/controllers/league_controller.js","webpack:///./app/javascript/controllers/mask_controller.js","webpack:///./app/javascript/controllers/message_controller.js","webpack:///./app/javascript/controllers/nav_authentication_controller.js","webpack:///./app/javascript/controllers/navbar_controller.js","webpack:///./app/javascript/controllers/pool_controller.js","webpack:///./app/javascript/controllers/sharer_controller.js","webpack:///./app/javascript/controllers/steps_controller.js","webpack:///./app/javascript/controllers/sweepstak_wizard_controller.js","webpack:///./app/javascript/controllers/switcher_controller.js","webpack:///./app/javascript/controllers/text_preview_controller.js","webpack:///./app/javascript/controllers/toggle_controller.js","webpack:///./app/javascript/controllers/token_controller.js","webpack:///./app/javascript/controllers/index.js","webpack:///./app/javascript/packs/application.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_slicedToArray","e","Array","isArray","_arrayWithHoles","iterator","u","a","f","next","done","push","length","return","_iterableToArrayLimit","_arrayLikeToArray","toString","slice","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","EventListener","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","bindings","hasBindings","size","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","clearEventListeners","arguments","undefined","clearEventListenersForBinding","handleError","error","message","detail","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","createEventListener","set","parts","keys","join","defaultActionDescriptorFilters","_ref","stopPropagation","prevent","_ref2","preventDefault","self","_ref3","element","target","descriptorPattern","parseEventTarget","eventTargetName","window","document","camelize","replace","_","char","toUpperCase","namespaceCamelize","capitalize","charAt","dasherize","toLowerCase","isSomething","hasProperty","allModifiers","Action","descriptor","schema","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","keyFilter","forToken","token","descriptorString","matches","trim","match","includes","split","options","parseActionDescriptorString","content","eventFilter","shouldIgnoreKeyboardEvent","filters","keyFilterDissatisfied","standardFilter","filter","keyMappings","shouldIgnoreMouseEvent","params","pattern","RegExp","_ref4","attributes","typecast","_allModifiers$map2","modifier","meta","ctrl","alt","shift","metaKey","ctrlKey","altKey","shiftKey","button","form","details","input","getAttribute","select","textarea","Error","JSON","parse","o_O","Binding","context","action","actionEvent","prepareActionEvent","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","method","controller","actionDescriptorFilters","passes","_ref5","entries","_ref6","currentTarget","logDebugActivity","KeyboardEvent","MouseEvent","Element","contains","scope","containsElement","ElementObserver","delegate","mutationObserverInit","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","node","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","selector","hasAttribute","querySelectorAll","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_ref7","_ref8","_ref9","_ref10","SelectorObserver","_selector","matchesByElement","selectorMatchElement","selectorMatched","selectors","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","zip","findIndex","_ref11","_ref12","previousToken","currentToken","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","connectAction","disconnectAction","clear","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_ref13","valueDescriptors","data","rawValue","rawOldValue","changedMethodName","changedMethod","reader","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref14","connectTarget","_ref15","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","attributeObserverMap","outletDefinitions","outletName","setupSelectorObserverForOutlet","setupAttributeObserverForOutlet","dependentContexts","observer","disconnectAllOutlets","stopSelectorObservers","stopAttributeObservers","_ref16","outlet","getOutlet","connectOutlet","_ref17","getOutletFromMap","disconnectOutlet","_ref18","hasOutlet","hasOutletController","controllerAttribute","_element","getOutletNameFromOutletAttributeName","updateSelectorObserverForOutlet","outletConnected","outletDisconnected","selectorObserver","body","attributeNameForOutletName","outlets","getSelectorForOutletName","outletAttributeForScope","find","outletDependencies","dependencies","router","controllerConstructor","dependentControllerIdentifiers","identifiers","contexts","getControllerForElementAndIdentifier","Context","_this","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","_len","args","_key2","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessings","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","setPrototypeOf","b","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","_len2","targetNames","_key3","findTarget","findLegacyTarget","findAll","_len3","_key4","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","_len4","outletNames","_key5","findOutlet","_len5","_key6","findAllOutlets","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","isDocumentScope","documentElement","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","parseValueForElementAndIdentifier","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","proposeToConnectScopeForElementAndIdentifier","console","defaultSchema","enter","tab","esc","space","up","down","home","end","page_up","page_down","objectFromEntries","array","memo","_ref19","_ref20","k","v","Application","_this2","debug","logFormattedMessage","Promise","resolve","readyState","register","load","registerActionOption","head","_len6","rest","_key7","shouldLoad","unload","_len7","_key8","controllers","onerror","groupCollapsed","log","groupEnd","getOutletController","getControllerAndEnsureConnectedScope","outletController","parseValueDefinitionPair","_ref21","_ref22","payload","typeDefinition","typeObject","typeFromObject","hasType","hasDefault","default","fullObject","onlyType","onlyDefault","parseValueTypeConstant","typeFromDefaultValue","parseValueTypeDefault","parseValueTypeObject","typeFromConstant","propertyPath","parseValueTypeDefinition","constant","defaultValuesByType","constantFromType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","Number","String","boolean","number","string","writeJSON","stringify","Controller","_identifier","_application","dispatch","_ref23","_ref23$target","_ref23$detail","_ref23$prefix","prefix","_ref23$bubbles","bubbles","_ref23$cancelable","cancelable","CustomEvent","dispatchEvent","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletElement","propertiesForOutletDefinition","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","querySelector","cspNonce","expando","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","isContentEditable","isEditable","$","csrfParam","csrfToken","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","fire","evt","createEvent","initCustomEvent","Event","defaultPrevented","obj","stopEverything","eventType","handler","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","response","responseText","getResponseHeader","floor","status","success","statusText","complete","beforeSend","XMLHttpRequest","OPENED","send","url","location","href","indexOf","dataType","accept","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","createElement","appendChild","removeChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","disabled","option","selected","checked","encodeURIComponent","formElements","el","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","handleMethod","formContent","link","style","display","click","isRemote","handleRemote","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","setTimeout","isObject","src","ssrDocument","activeElement","blur","nodeName","getElementById","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","hash","hostname","origin","pathname","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","getComputedStyle","getPropertyValue","Image","Date","screen","clearTimeout","matchMedia","requestAnimationFrame","cancelAnimationFrame","id","getWindow","win","_getPrototypeOf","__proto__","_setPrototypeOf","_construct","Parent","Class","sham","Proxy","_isNativeReflectConstruct","apply","instance","Function","_wrapNativeSuper","_cache","fn","Wrapper","writable","configurable","Dom7","_Array","subClass","superClass","items","proto","ReferenceError","_assertThisInitialized","arrayFlat","arr","res","arrayFilter","toCreate","tempParent","qsa","uniqueArray","arrayUnique","noTrigger","shortcut","_key","trigger","on","Methods","addClass","classNames","_el$classList","classList","removeClass","_el$classList2","remove","hasClass","className","toggleClass","toggle","attr","attrs","attrName","removeAttr","transform","transition","duration","transitionDuration","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","_parents","parents","j","events","_event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","dom7proxy","splice","_len9","_key9","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","_styles","styles","offsetWidth","parseFloat","outerHeight","_styles2","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","css","props","_prop","each","textContent","compareWith","child","previousSibling","eq","returnIndex","newChild","tempDiv","firstChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","_next","prev","previousElementSibling","prevAll","prevEls","_prev","parent","_parent","foundElements","found","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","to","noExtend","nextSource","HTMLElement","keysArray","nextIndex","len","nextKey","desc","__swiper__","bindModuleMethods","subKey","classesToSelector","createElementIfNotDefined","$container","createElements","checkProps","auto","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","_temp","support","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isEdge","isSafari","isWebView","calcBrowser","swiper","resize","createObserver","destroyed","initialized","ResizeObserver","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","resizeHandler","removeObserver","unobserve","emit","orientationChangeHandler","init","resizeObserver","destroy","_extends","source","Observer","attach","WebkitMutationObserver","observerUpdate","characterData","observers","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","useParams","instanceParams","moduleName","useModules","modulesParams","moduleParams","moduleEventName","priority","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","isHorizontal","rtl","rtlTranslate","translate","virtualTranslate","cssMode","currentTranslate","setTranslate","byController","wrapperEl","progress","x","y","roundLengths","previousTranslate","translatesDiff","maxTranslate","minTranslate","updateProgress","snapGrid","translateTo","speed","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","_wrapperEl$scrollTo","isH","scrollTo","behavior","setTransition","onTranslateToWrapperTransitionEnd","slideTo","initial","indexAsNumber","parseInt","isFinite","slideIndex","slidesGrid","previousIndex","activeIndex","enabled","skip","min","slidesPerGroupSkip","snapIndex","slidesPerGroup","initialSlide","direction","normalizeSlideIndex","normalizedTranslate","normalizedGird","normalizedGridNext","allowSlideNext","allowSlidePrev","updateActiveIndex","autoHeight","updateAutoHeight","updateSlidesClasses","effect","transitionStart","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loop","loopedSlides","slideNext","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","abs","prevIndex","normalizedSnapGrid","prevSnap","snap","slideReset","slideToClosest","threshold","currentSnap","slideToClickedSlide","realIndex","slidesPerView","slidesPerViewDynamic","slideToIndex","clickedIndex","clickedSlide","centeredSlides","slides","slideClass","slideDuplicateClass","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","diffX","diffY","sqrt","pow","touchAngle","atan2","PI","touchMoveStopPropagation","nested","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","diff","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","watchSlidesProgress","watchSlidesVisibility","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","updateClickedSlide","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","nextSlide","moveDistance","currentSlideSize","slidesSizesGrid","longSwipesMs","stopIndex","groupSize","_increment","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","updateSlides","isEnd","isBeginning","autoplay","running","paused","run","watchOverflow","checkOverflow","preventClicks","preventClicksPropagation","onScroll","dummyEventAttached","dummyEventListener","updateOnWindowResize","setWrapperSize","breakpointsBase","spaceBetween","slidesPerColumn","slidesPerColumnFill","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","centerInsufficientSlides","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopFillGroupWithBlank","passiveListeners","containerModifierClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","_defineProperties","prototypes","modular","eventsEmitter","update","clientWidth","clientHeight","isNaN","getDirectionLabel","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","ceil","newSlidesGrid","_$wrapperEl$css","_$wrapperEl$css2","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","_slide$","swiperSlideSize","_i","slidesGridItem","_i2","_slidesGridItem","_slides$filter$css","allSlidesSize","slideSizeValue","maxSnap","_allSlidesSize","allSlidesOffset","updateSlidesOffset","activeSlides","getSlideByIndex","visibleSlides","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideProgress","slideBefore","slideAfter","multiplier","wasBeginning","wasEnd","activeSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","slideFound","dir","loopCreate","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","attachEvents","touchEvents","onTouchMove","onClick","move","passive","cancel","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","_points$i","wasLocked","lastSlidePosition","addClasses","resultClasses","suffixes","item","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","onload","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","browser","moduleParamName","desktop","swiperParams","defaults","passedParams","touchEventsTouch","touchEventsDesktop","clickTimeout","Constructor","protoProps","staticProps","_proto","setProgress","current","getSlideClasses","slideEl","updates","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","prototypeGroup","protoMethod","Virtual","force","_swiper$params","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarget","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","positions","sensitivity","_newEvent","sign","ignoreWheelEvents","timeout","_recentWheelEvents","_prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","newEvent","raw","prevEvent","animateSlider","releaseScroll","thresholdDelta","thresholdTime","getTime","Navigation","toggleEl","disabledClass","_swiper$navigation","$nextEl","$prevEl","lockClass","onPrevClick","onNextClick","_swiper$navigation2","Pagination","pagination","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","toggleGestures","slideSelector","enableGestures","gesturesEnabled","disableGestures","activeListenerWithCapture","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","background","$pictureEl","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","scrollingElement","isWindow","scrollElementWidth","scrollElementHeight","scrollHandlerAttached","LinearSpline","guess","i1","i3","binarySearch","interpolate","getInterpolateFunction","spline","_setTranslate","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","A11y","getRandomNumber","repeat","round","random","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","a11y","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","$containerEl","containerRoleDescriptionMessage","containerMessage","wrapperId","itemRoleDescriptionMessage","slideRole","ariaLabelMessage","slideLabelMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","urlOverride","pathArray","URL","part","setHistory","slugify","root","currentState","state","HashNavigation","onHashChange","newHash","setHash","watchState","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","attachMouseEvents","pauseOnMouseEnter","detachMouseEvents","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","cubeEffect","wrapperRotate","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","Thumbs","thumbsParams","thumbs","SwiperClass","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","components","hideOnClick","toEdge","fromEdge","_swiper$navigation3","_swiper$navigation4","targetEl","isHidden","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","touchStart","touchEnd","doubleTap","slideChange","checkInView","loadOnTransitionStart","scroll","notificationClass","afterInit","paginationUpdate","beforeTransitionStart","sliderFirstMove","beforeDestroy","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","propertyIsEnumerable","__defNormalProp","__spreadValues","prop","defaultOptions","optionsValue","countdownComponents","getElementsByClassName","countdownComponent","countdownEndAt","dataset","countdownOutput","countDownDate","setInterval","days","hours","minutes","seconds","output","containerError","itemError","errorMap","iti","intlTelInput","initialCountry","preferredCountries","allowDropdown","separeDialCode","nationalMode","hiddenInput","utilsScript","handleChange","reset","validate","submit","isValidNumber","errorCode","getValidationError","factory","allCountries","iso2","dialCode","areaCodes","intlTelInputGlobals","getInstance","instances","documentReady","autoHideDialCode","autoPlaceholder","customContainer","customPlaceholder","dropdownContainer","excludeCountries","formatOnDisplay","geoIpLookup","localizedCountries","onlyCountries","placeholderNumberType","separateDialCode","regionlessNanpNumbers","forEachProp","forEachInstance","Iti","_classCallCheck","telInput","activeItem","highlightedItem","customOptions","hadInitialPlaceholder","isMobile","autoCountryPromise","reject","resolveAutoCountryPromise","rejectAutoCountryPromise","utilsScriptPromise","resolveUtilsScriptPromise","rejectUtilsScriptPromise","promise","all","selectedCountryData","_processCountryData","_generateMarkup","_setInitialState","_initListeners","_initRequests","_processAllCountries","_processCountryCodes","_processPreferredCountries","_translateCountriesByLocale","countries","_countryNameSort","countryCode","countryCodeMaxLen","countryCodes","lowerCaseOnlyCountries","country","lowerCaseExcludeCountries","iso","localeCompare","dialCodes","_addCountryCode","_c","rootCountryCode","areaCode","partialDialCode","countryData","_getCountryData","container","parentClass","_createEl","flagsContainer","selectedFlag","selectedFlagInner","selectedDialCode","dropdownArrow","countryList","_appendListItems","dropdown","hiddenInputName","lastIndexOf","preferred","tmp","idSuffix","insertAdjacentHTML","attributeValue","inputValue","_getDialCode","isRegionlessNanp","_isRegionlessNanp","_this$options","_updateFlagFromNumber","_setFlag","defaultCountry","_updateValFromNumber","_initKeyListeners","_initBlurListeners","_initDropdownListeners","_initHiddenInputListener","_this3","_handleHiddenInputSubmit","getNumber","_this4","_handleLabelClick","focus","_getClosestLabel","_handleClickSelectedFlag","readOnly","_showDropdown","_handleFlagsContainerKeydown","_closeDropdown","_this5","intlTelInputUtils","loadUtils","_loadAutoCountry","autoCountry","handleAutoCountry","startedLoadingAutoCountry","_this6","_handleKeyupEvent","_triggerCountryChange","_handleClipboardEvent","_this7","_handleSubmitOrBlurEvent","_removeEmptyDialCode","numeric","_getNumeric","_setDropdownPosition","_highlightListItem","_scrollTo","_bindDropdownListeners","_trigger","shouldHaveClass","_this8","pos","windowTop","pageYOffset","inputTop","dropdownHeight","dropdownFitsBelow","dropdownFitsAbove","_toggleClass","extraTop","_handleWindowScroll","_this9","_handleMouseoverCountryList","listItem","_getClosestListItem","_handleClickCountryList","_selectListItem","isOpening","_handleClickOffToClose","query","queryTimer","_handleKeydownOnDropdown","_handleUpDownKey","_handleEnterKey","_searchForCountry","_startsWith","originalNumber","useNational","_intlTelInputUtils$nu","numberFormat","NATIONAL","INTERNATIONAL","format","formatNumber","_beforeSetNumber","isNanp","alreadySelected","shouldFocus","prevItem","ignoreOnlyCountriesOption","allowFail","prevCountry","title","selectedFlagWidth","_getHiddenSelectedFlagWidth","_updatePlaceholder","nextItem","containerClone","visibility","flagsContainerClone","selectedFlagClone","shouldSetPlaceholder","numberType","placeholder","getExampleNumber","flagChanged","_updateDialCode","setSelectionRange","middle","containerHeight","containerTop","containerBottom","elementHeight","elementTop","elementBottom","newScrollTop","middleOffset","heightDifference","newDialCodeBare","hasSelectedListItem","newNumber","inputVal","newDialCode","prevDialCode","includeAreaCode","numericChars","numericVal","_cap","setCountry","getExtension","_getFullNumber","getNumberType","originalCountryCode","getCountryData","injectScript","handleSuccess","handleFailure","async","startedLoadingUtilsScript","version","_init","Turbolinks","supported","visit","clearCache","setProgressBarDelay","copyObject","defer","throttle","uuid","Location","absoluteURL","requestURL","anchor","wrap","getOrigin","getPath","getPathComponents","getLastPathComponent","isHTML","isPrefixedBy","isEqualTo","toCacheKey","toJSON","valueOf","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","sent","notifyApplicationBeforeRequestStart","requestStarted","abort","lengthComputable","loaded","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","ontimeout","onabort","requestFinished","ProgressBar","trickle","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","show","visible","installStylesheetElement","installProgressElement","startTrickling","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","setValue","trickleInterval","clearInterval","BrowserAdapter","showProgressBar","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","reload","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","onPageLoad","onPopState","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","outerHTML","tracked","fromHeadElement","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","clone","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","Renderer","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","replaceChild","ErrorRenderer","newHead","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","snapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","scrollToElement","scrollIntoView","scrollToPosition","updatePosition","pageXOffset","scrollPositionChanged","SnapshotCache","snapshots","put","Visit","performScroll","adapter","timingMetrics","recordTimingMetric","request","cancelRender","fail","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTimingMetrics","snapshotCached","frame","clickBubbled","clickCaptured","view","scrollManager","startHistory","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","nodeIsVisitable","currentScript","definitionsFromContext","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","_default","_Carousel","_callSuper","_inherits","Carousel","_Controller","icon","lastElementChild","modalTarget","screenTarget","_step","_iterator","_createForOfIteratorHelper","tabTargets","err","_step2","_iterator2","barTargets","_step3","_iterator3","containerTargets","webpackContext","req","webpackContextResolve","code","DIGIT","ALPHA","ALPHANUM","BY_PASS_KEYS","isAllowedKeyCode","mergeMoneyOptions","delimiter","lastOutput","precision","separator","showSignal","suffixUnit","unit","zeroCents","moneyPrecision","addPlaceholdersToOutput","VanillaMasker","unbindElementToMask","onkeyup","onkeydown","bindElementToMask","maskFunction","that","onType","srcElement","VMasker","maskMoney","maskNumber","maskAlphaNum","maskPattern","unMask","toMoney","zeroMatcher","zeroRegExp","digitsLength","lastDigitLength","clearDelimiter","clearSeparator","money","masked","cents","signal","startsWith","beginCents","centsValue","centsLength","centsSliced","toPattern","patternChars","charsValues","outputLength","toNumber","toAlphaNumeric","createCommonjsModule","sparkMd5","hex_chr","md5cycle","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","lo","hi","substring","md51_array","subarray","Uint8Array","rhex","hex","toUtf8","str","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","fromCharCode","concatenateArrayBuffers","first","second","byteLength","buffer","hexToBinaryString","bytes","SparkMD5","clamp","num","targetArray","sourceArray","begin","appendBinary","contents","_buff","_length","_hash","ret","_finish","getState","setState","hashBinary","classCallCheck","createClass","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElements","toArray$1","eventInit","BlobRecord","checksum","filename","content_type","byte_size","responseType","requestDidLoad","requestDidError","blob","direct_upload","directUploadData","_xhr","BlobUpload","_blob$directUploadDat","headers","DirectUpload","upload","messages","DirectUploadController","directUpload","insertAdjacentElement","dispatchError","signed_id","alert","uploadRequestDidProgress","inputSelector","DirectUploadsController","files","createDirectUploadControllers","startNextController","processingAttribute","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","submitForm","autostart","ActiveStorage","channels","require","webpackEmptyContext","input_id","matchId","formTarget","away_input_id","second_field","home_input_id","drawerTarget","submitTarget","match_id","team","teamLogo","innerText","stepTargets","nextStep","nav","previousType","inputTarget","outputTarget","hasSvgTarget","svg","svgTarget","avatar","readAsDataURL","leagueId","mask","status_message","team_content","new_team","original_team","teamTarget","original_logo","logoTarget","authenticationTarget","previousEl","currentEl","previousStepType","previousStep","previous","navTargets","labelTargets","teamId","teamEl","unavailable","teamArea","nameField","clearMessageError","setMessageError","emailField","emailValidation","backgroundColor","previewText","outputTargets","textTarget","descriptionTargets","formatTargets","componentTargets","component","splitNumber","dig","popuNext","buttonTarget","requireAll"],"mappings":"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AA0B,kE,kBCA3CC,EAAOD,QAAU,IAA0B,kE,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,iE,kBCA3CC,EAAOD,QAAU,IAA0B,6D,kBCA3CC,EAAOD,QAAU,IAA0B,0D,kBCA3CC,EAAOD,QAAU,IAA0B,wD,kBCA3CC,EAAOD,QAAU,IAA0B,wD,kBCA3CC,EAAOD,QAAU,IAA0B,6D,kBCA3CC,EAAOD,QAAU,IAA0B,uD,kBCA3CC,EAAOD,QAAU,IAA0B,yD,kBCA3CC,EAAOD,QAAU,IAA0B,gE,kBCA3CC,EAAOD,QAAU,IAA0B,4D,kBCA3CC,EAAOD,QAAU,IAA0B,wD,kBCA3CC,EAAOD,QAAU,IAA0B,+D,kBCA3CC,EAAOD,QAAU,IAA0B,+D,kBCA3CC,EAAOD,QAAU,IAA0B,2D,kBCA3CC,EAAOD,QAAU,IAA0B,2D,kBCA3CC,EAAOD,QAAU,IAA0B,gE,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,mE,kBCA3CC,EAAOD,QAAU,IAA0B,mE,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,kE,kBCA3CC,EAAOD,QAAU,IAA0B,qE,kBCA3CC,EAAOD,QAAU,IAA0B,sE,kBCA3CC,EAAOD,QAAU,IAA0B,mE,kBCA3CC,EAAOD,QAAU,IAA0B,mE,kBCA3CC,EAAOD,QAAU,IAA0B,6D,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,8D,kBCA3CC,EAAOD,QAAU,IAA0B,+D,kBCA3CC,EAAOD,QAAU,IAA0B,6D,kBCA3CC,EAAOD,QAAU,IAA0B,+D,kBCA3CC,EAAOD,QAAU,IAA0B,mE,kBCA3CC,EAAOD,QAAU,IAA0B,oE,kBCA3CC,EAAOD,QAAU,IAA0B,2E,kBCA3CC,EAAOD,QA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","file":"js/application-220acd5ed5cc47fa3f77.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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 = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 144);\n","function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _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.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); 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; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n const stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n let clearEventListeners = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners) this.clearEventListenersForBinding(binding);\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0) this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\nconst defaultActionDescriptorFilters = {\n stop(_ref) {\n let event = _ref.event,\n value = _ref.value;\n if (value) event.stopPropagation();\n return true;\n },\n prevent(_ref2) {\n let event = _ref2.event,\n value = _ref2.value;\n if (value) event.preventDefault();\n return true;\n },\n self(_ref3) {\n let event = _ref3.event,\n value = _ref3.value,\n element = _ref3.element;\n if (value) {\n return element === event.target;\n } else {\n return true;\n }\n }\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, {\n [token.replace(/^!/, \"\")]: !/^!/.test(token)\n }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter(key => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const _ref4 of Array.from(this.element.attributes)) {\n const name = _ref4.name;\n const value = _ref4.value;\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const _allModifiers$map = allModifiers.map(modifier => filters.includes(modifier)),\n _allModifiers$map2 = _slicedToArray(_allModifiers$map, 4),\n meta = _allModifiers$map2[0],\n ctrl = _allModifiers$map2[1],\n alt = _allModifiers$map2[2],\n shift = _allModifiers$map2[3];\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n select: () => \"change\",\n textarea: () => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const element = this.action.element;\n const actionDescriptorFilters = this.context.application.actionDescriptorFilters;\n const controller = this.context.controller;\n let passes = true;\n for (const _ref5 of Object.entries(this.eventOptions)) {\n var _ref6 = _slicedToArray(_ref5, 2);\n const name = _ref6[0];\n const value = _ref6[1];\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({\n name,\n value,\n event,\n element,\n controller\n });\n } else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, {\n params: this.action.params\n });\n }\n invokeWithEvent(event) {\n const target = event.target,\n currentTarget = event.currentTarget;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, {\n event,\n target,\n currentTarget,\n action: this.methodName\n });\n } catch (error) {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n const detail = {\n identifier,\n controller,\n element,\n index,\n event\n };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\n };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree() {\n let tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(_ref7 => {\n let _ref8 = _slicedToArray(_ref7, 2),\n _key = _ref8[0],\n values = _ref8[1];\n return values.has(value);\n }).map(_ref9 => {\n let _ref10 = _slicedToArray(_ref9, 2),\n key = _ref10[0],\n _values = _ref10[1];\n return key;\n });\n }\n}\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const selector = this.selector;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n } else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const selector = this.selector;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter(match => this.matchElement(match));\n return match.concat(matches);\n } else {\n return [];\n }\n }\n elementMatched(element) {\n const selector = this.selector;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const selector = this.selector;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n } else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue) this.stringMapKeyRemoved(key, attributeName, oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(_ref11 => {\n let _ref12 = _slicedToArray(_ref11, 2),\n previousToken = _ref12[0],\n currentToken = _ref12[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length).map((content, index) => ({\n element,\n attributeName,\n content,\n index\n }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({\n length\n }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const element = token.element;\n const _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const element = token.element;\n const _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return {\n value\n };\n } catch (error) {\n return {\n error\n };\n }\n }\n}\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const _ref13 of this.valueDescriptors) {\n const key = _ref13.key;\n const name = _ref13.name;\n const defaultValue = _ref13.defaultValue;\n const writer = _ref13.writer;\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n } catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched(_ref14) {\n let element = _ref14.element,\n name = _ref14.content;\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched(_ref15) {\n let element = _ref15.element,\n name = _ref15.content;\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach(outletName => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach(context => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach(observer => observer.refresh());\n this.attributeObserverMap.forEach(observer => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach(observer => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach(observer => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, _ref16) {\n let outletName = _ref16.outletName;\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, _ref17) {\n let outletName = _ref17.outletName;\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, _ref18) {\n let outletName = _ref18.outletName;\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n } else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, {\n outletName\n });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find(outletName => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach(module => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach(outlet => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter(context => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find(outlet => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\nclass Context {\n constructor(module, scope) {\n var _this = this;\n this.logDebugActivity = function (functionName) {\n let detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const identifier = _this.identifier,\n controller = _this.controller,\n element = _this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n _this.application.logDebugActivity(_this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n controller[methodName](...args);\n }\n }\n}\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, {\n [key]: descriptor\n });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return object => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n } else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () {};\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return constructor => class extended extends constructor {};\n }\n})();\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find() {\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll() {\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n targetNames[_key4] = arguments[_key4];\n }\n return targetNames.reduce((targets, targetName) => [...targets, ...this.findAllTargets(targetName), ...this.findAllLegacyTargets(targetName)], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const identifier = this.identifier;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` + `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find() {\n for (var _len4 = arguments.length, outletNames = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {\n outletNames[_key5] = arguments[_key5];\n }\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll() {\n for (var _len5 = arguments.length, outletNames = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {\n outletNames[_key6] = arguments[_key6];\n }\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector) return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = element => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [...(this.element.matches(selector) ? [this.element] : []), ...this.queryElements(selector).filter(this.containsElement)];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope ? this : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const element = token.element,\n identifier = token.content;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n } else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({\n enter: \"Enter\",\n tab: \"Tab\",\n esc: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n left: \"ArrowLeft\",\n right: \"ArrowRight\",\n home: \"Home\",\n end: \"End\",\n page_up: \"PageUp\",\n page_down: \"PageDown\"\n }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(c => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map(n => [n, n])))\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, _ref19) => {\n let _ref20 = _slicedToArray(_ref19, 2),\n k = _ref20[0],\n v = _ref20[1];\n return Object.assign(Object.assign({}, memo), {\n [k]: v\n });\n }, {});\n}\nclass Application {\n constructor() {\n var _this2 = this;\n let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = function (identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (_this2.debug) {\n _this2.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({\n identifier,\n controllerConstructor\n });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head) {\n for (var _len6 = arguments.length, rest = new Array(_len6 > 1 ? _len6 - 1 : 0), _key7 = 1; _key7 < _len6; _key7++) {\n rest[_key7 - 1] = arguments[_key7];\n }\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head) {\n for (var _len7 = arguments.length, rest = new Array(_len7 > 1 ? _len7 - 1 : 0), _key8 = 1; _key8 < _len7; _key8++) {\n rest[_key8 - 1] = arguments[_key8];\n }\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n } else {\n resolve();\n }\n });\n}\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const classes = this.classes;\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets.map(outletElement => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n }).filter(controller => controller);\n }\n return [];\n }\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n } else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n }\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n }\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n }\n }\n };\n}\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n } else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, {\n [attributeName]: valueDescriptor\n });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair(_ref21, controller) {\n let _ref22 = _slicedToArray(_ref21, 2),\n token = _ref22[0],\n typeDefinition = _ref22[1];\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeObject = payload.typeObject;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType) return typeFromObject;\n if (onlyDefault) return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject) return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeDefinition = payload.typeDefinition;\n const typeObject = {\n controller,\n token,\n typeObject: typeDefinition\n };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault) return typeObject.default;\n if (hasType) {\n const type = typeObject.type;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType) return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const token = payload.token,\n typeDefinition = payload.typeDefinition;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {}\n connect() {}\n disconnect() {}\n dispatch(eventName) {\n let _ref23 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref23$target = _ref23.target,\n target = _ref23$target === void 0 ? this.element : _ref23$target,\n _ref23$detail = _ref23.detail,\n detail = _ref23$detail === void 0 ? {} : _ref23$detail,\n _ref23$prefix = _ref23.prefix,\n prefix = _ref23$prefix === void 0 ? this.identifier : _ref23$prefix,\n _ref23$bubbles = _ref23.bubbles,\n bubbles = _ref23$bubbles === void 0 ? true : _ref23$bubbles,\n _ref23$cancelable = _ref23.cancelable,\n cancelable = _ref23$cancelable === void 0 ? true : _ref23$cancelable;\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, {\n detail,\n bubbles,\n cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing, OutletPropertiesBlessing];\nController.targets = [];\nController.outlets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.isContentEditable = function (element) {\n var isEditable;\n isEditable = false;\n while (true) {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n if (!element) {\n break;\n }\n }\n return isEditable;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var isContentEditable, stopEverything;\n stopEverything = Rails.stopEverything;\n isContentEditable = Rails.isContentEditable;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isContentEditable,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _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.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); 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; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n const stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n let clearEventListeners = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners) this.clearEventListenersForBinding(binding);\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0) this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\nconst defaultActionDescriptorFilters = {\n stop(_ref) {\n let event = _ref.event,\n value = _ref.value;\n if (value) event.stopPropagation();\n return true;\n },\n prevent(_ref2) {\n let event = _ref2.event,\n value = _ref2.value;\n if (value) event.preventDefault();\n return true;\n },\n self(_ref3) {\n let event = _ref3.event,\n value = _ref3.value,\n element = _ref3.element;\n if (value) {\n return element === event.target;\n } else {\n return true;\n }\n }\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, {\n [token.replace(/^!/, \"\")]: !/^!/.test(token)\n }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter(key => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const _ref4 of Array.from(this.element.attributes)) {\n const name = _ref4.name;\n const value = _ref4.value;\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const _allModifiers$map = allModifiers.map(modifier => filters.includes(modifier)),\n _allModifiers$map2 = _slicedToArray(_allModifiers$map, 4),\n meta = _allModifiers$map2[0],\n ctrl = _allModifiers$map2[1],\n alt = _allModifiers$map2[2],\n shift = _allModifiers$map2[3];\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n select: () => \"change\",\n textarea: () => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const element = this.action.element;\n const actionDescriptorFilters = this.context.application.actionDescriptorFilters;\n const controller = this.context.controller;\n let passes = true;\n for (const _ref5 of Object.entries(this.eventOptions)) {\n var _ref6 = _slicedToArray(_ref5, 2);\n const name = _ref6[0];\n const value = _ref6[1];\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({\n name,\n value,\n event,\n element,\n controller\n });\n } else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, {\n params: this.action.params\n });\n }\n invokeWithEvent(event) {\n const target = event.target,\n currentTarget = event.currentTarget;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, {\n event,\n target,\n currentTarget,\n action: this.methodName\n });\n } catch (error) {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n const detail = {\n identifier,\n controller,\n element,\n index,\n event\n };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\n };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree() {\n let tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(_ref7 => {\n let _ref8 = _slicedToArray(_ref7, 2),\n _key = _ref8[0],\n values = _ref8[1];\n return values.has(value);\n }).map(_ref9 => {\n let _ref10 = _slicedToArray(_ref9, 2),\n key = _ref10[0],\n _values = _ref10[1];\n return key;\n });\n }\n}\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const selector = this.selector;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n } else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const selector = this.selector;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter(match => this.matchElement(match));\n return match.concat(matches);\n } else {\n return [];\n }\n }\n elementMatched(element) {\n const selector = this.selector;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const selector = this.selector;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n } else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue) this.stringMapKeyRemoved(key, attributeName, oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(_ref11 => {\n let _ref12 = _slicedToArray(_ref11, 2),\n previousToken = _ref12[0],\n currentToken = _ref12[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length).map((content, index) => ({\n element,\n attributeName,\n content,\n index\n }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({\n length\n }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const element = token.element;\n const _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const element = token.element;\n const _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return {\n value\n };\n } catch (error) {\n return {\n error\n };\n }\n }\n}\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const _ref13 of this.valueDescriptors) {\n const key = _ref13.key;\n const name = _ref13.name;\n const defaultValue = _ref13.defaultValue;\n const writer = _ref13.writer;\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n } catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched(_ref14) {\n let element = _ref14.element,\n name = _ref14.content;\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched(_ref15) {\n let element = _ref15.element,\n name = _ref15.content;\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach(outletName => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach(context => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach(observer => observer.refresh());\n this.attributeObserverMap.forEach(observer => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach(observer => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach(observer => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, _ref16) {\n let outletName = _ref16.outletName;\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, _ref17) {\n let outletName = _ref17.outletName;\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, _ref18) {\n let outletName = _ref18.outletName;\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n } else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, {\n outletName\n });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find(outletName => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach(module => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach(outlet => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter(context => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find(outlet => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\nclass Context {\n constructor(module, scope) {\n var _this = this;\n this.logDebugActivity = function (functionName) {\n let detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const identifier = _this.identifier,\n controller = _this.controller,\n element = _this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n _this.application.logDebugActivity(_this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n controller[methodName](...args);\n }\n }\n}\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, {\n [key]: descriptor\n });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return object => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n } else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () {};\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return constructor => class extended extends constructor {};\n }\n})();\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find() {\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll() {\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n targetNames[_key4] = arguments[_key4];\n }\n return targetNames.reduce((targets, targetName) => [...targets, ...this.findAllTargets(targetName), ...this.findAllLegacyTargets(targetName)], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const identifier = this.identifier;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` + `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find() {\n for (var _len4 = arguments.length, outletNames = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {\n outletNames[_key5] = arguments[_key5];\n }\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll() {\n for (var _len5 = arguments.length, outletNames = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {\n outletNames[_key6] = arguments[_key6];\n }\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector) return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = element => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [...(this.element.matches(selector) ? [this.element] : []), ...this.queryElements(selector).filter(this.containsElement)];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope ? this : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const element = token.element,\n identifier = token.content;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n } else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({\n enter: \"Enter\",\n tab: \"Tab\",\n esc: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n left: \"ArrowLeft\",\n right: \"ArrowRight\",\n home: \"Home\",\n end: \"End\",\n page_up: \"PageUp\",\n page_down: \"PageDown\"\n }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(c => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map(n => [n, n])))\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, _ref19) => {\n let _ref20 = _slicedToArray(_ref19, 2),\n k = _ref20[0],\n v = _ref20[1];\n return Object.assign(Object.assign({}, memo), {\n [k]: v\n });\n }, {});\n}\nclass Application {\n constructor() {\n var _this2 = this;\n let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = function (identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (_this2.debug) {\n _this2.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({\n identifier,\n controllerConstructor\n });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head) {\n for (var _len6 = arguments.length, rest = new Array(_len6 > 1 ? _len6 - 1 : 0), _key7 = 1; _key7 < _len6; _key7++) {\n rest[_key7 - 1] = arguments[_key7];\n }\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head) {\n for (var _len7 = arguments.length, rest = new Array(_len7 > 1 ? _len7 - 1 : 0), _key8 = 1; _key8 < _len7; _key8++) {\n rest[_key8 - 1] = arguments[_key8];\n }\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n } else {\n resolve();\n }\n });\n}\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const classes = this.classes;\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets.map(outletElement => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n }).filter(controller => controller);\n }\n return [];\n }\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n } else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n }\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n }\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n }\n }\n };\n}\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n } else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, {\n [attributeName]: valueDescriptor\n });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair(_ref21, controller) {\n let _ref22 = _slicedToArray(_ref21, 2),\n token = _ref22[0],\n typeDefinition = _ref22[1];\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeObject = payload.typeObject;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType) return typeFromObject;\n if (onlyDefault) return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject) return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeDefinition = payload.typeDefinition;\n const typeObject = {\n controller,\n token,\n typeObject: typeDefinition\n };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault) return typeObject.default;\n if (hasType) {\n const type = typeObject.type;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType) return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const token = payload.token,\n typeDefinition = payload.typeDefinition;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {}\n connect() {}\n disconnect() {}\n dispatch(eventName) {\n let _ref23 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref23$target = _ref23.target,\n target = _ref23$target === void 0 ? this.element : _ref23$target,\n _ref23$detail = _ref23.detail,\n detail = _ref23$detail === void 0 ? {} : _ref23$detail,\n _ref23$prefix = _ref23.prefix,\n prefix = _ref23$prefix === void 0 ? this.identifier : _ref23$prefix,\n _ref23$bubbles = _ref23.bubbles,\n bubbles = _ref23$bubbles === void 0 ? true : _ref23$bubbles,\n _ref23$cancelable = _ref23.cancelable,\n cancelable = _ref23$cancelable === void 0 ? true : _ref23$cancelable;\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, {\n detail,\n bubbles,\n cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing, OutletPropertiesBlessing];\nController.targets = [];\nController.outlets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };","/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nvar ssrDocument = {\n body: {},\n addEventListener: function () {},\n removeEventListener: function () {},\n activeElement: {\n blur: function () {},\n nodeName: ''\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () {}\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () {},\n getElementsByTagName: function () {\n return [];\n }\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState: function () {},\n pushState: function () {},\n go: function () {},\n back: function () {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () {},\n removeEventListener: function () {},\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n }\n };\n },\n Image: function () {},\n Date: function () {},\n screen: {},\n setTimeout: function () {},\n clearTimeout: function () {},\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n function Dom7(items) {\n var _this;\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n return Dom7;\n}(/*#__PURE__*/_wrapNativeSuper(Array));\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n var a = [];\n var res = context.querySelectorAll(selector);\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n return a;\n}\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var arr = [];\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n if (!selector) {\n return new Dom7(arr);\n }\n if (typeof selector === 'string') {\n var html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(' 0;\n }).length > 0;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n return this;\n}\nfunction data(key, value) {\n var el;\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n var dataKey = el.getAttribute(\"data-\" + key);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n } // Set value\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n return values;\n }\n return el.value;\n } // set value\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n return this;\n}\nfunction value(value) {\n return this.val(value);\n}\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n return this;\n}\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n var events = eventType.split(' ');\n var j;\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n var events = eventType.split(' ');\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once() {\n var dom = this;\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger() {\n var window = getWindow();\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n var events = args[0].split(' ');\n var eventData = args[1];\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n var dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n return this;\n}\nfunction animationEnd(callback) {\n var dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n return this;\n}\nfunction width() {\n var window = getWindow();\n if (this[0] === window) {\n return window.innerWidth;\n }\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n var window = getWindow();\n if (this[0] === window) {\n return window.innerHeight;\n }\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n return null;\n}\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n var window = getWindow();\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n var window = getWindow();\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n if (selector === document) {\n return el === document;\n }\n if (selector === window) {\n return el === window;\n }\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n var child = this[0];\n var i;\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n if (index > length - 1) {\n return $([]);\n }\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n return $([this[index]]);\n}\nfunction append() {\n var newChild;\n var document = getDocument();\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n return this;\n}\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n var document = getDocument();\n var i;\n var j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n var before = $(selector);\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n var after = $(selector);\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n return $([]);\n }\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n el = _next;\n }\n return $(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n return $([]);\n }\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n el = _prev;\n }\n return $(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(parents);\n}\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n _parent = _parent.parentNode;\n }\n }\n return $(parents);\n}\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return $(foundElements);\n}\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return $(children);\n}\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add() {\n var dom = this;\n var i;\n var j;\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n return dom;\n}\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\nfunction scrollTo() {\n var window = getWindow();\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n if (startTime === null) {\n startTime = time;\n }\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n var dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n var dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n if (a.elements.length === 0) {\n return els;\n }\n var animateInstance;\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n return els;\n}\nfunction stop() {\n var els = this;\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\nvar noTrigger = 'resize scroll'.split(' ');\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on.apply(this, [name].concat(args));\n }\n return eventHandler;\n}\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nvar Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n styles: styles,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n filter: filter,\n remove: remove\n};\nObject.keys(Methods).forEach(function (methodName) {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow, getDocument } from 'ssr-window';\nvar support;\nfunction calcSupport() {\n var window = getWindow();\n var document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n observer: function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\nvar device;\nfunction calcDevice(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n userAgent = _ref.userAgent;\n var support = getSupport();\n var window = getWindow();\n var platform = window.navigator.platform;\n var ua = userAgent || window.navigator.userAgent;\n var device = {\n ios: false,\n android: false\n };\n var screenWidth = window.screen.width;\n var screenHeight = window.screen.height;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var windows = platform === 'Win32';\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + \"x\" + screenHeight) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!device) {\n device = calcDevice(overrides);\n }\n return device;\n}\nexport { getDevice };","import { getWindow } from 'ssr-window';\nvar browser;\nfunction calcBrowser() {\n var window = getWindow();\n function isSafari() {\n var ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nexport { getBrowser };","import { getDocument, getWindow } from 'ssr-window';\nfunction deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n var window = getWindow();\n var style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n var window = getWindow();\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n var noExtend = ['__proto__', 'constructor', 'prototype'];\n for (var i = 1; i < arguments.length; i += 1) {\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n var keysArray = Object.keys(Object(nextSource)).filter(function (key) {\n return noExtend.indexOf(key) < 0;\n });\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach(function (key) {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(function (subKey) {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\nfunction classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return \".\" + classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.');\n}\nfunction createElementIfNotDefined($container, params, createElements, checkProps) {\n var document = getDocument();\n if (createElements) {\n Object.keys(checkProps).forEach(function (key) {\n if (!params[key] && params.auto === true) {\n var element = document.createElement('div');\n element.className = checkProps[key];\n $container.append(element);\n params[key] = element;\n }\n });\n }\n return params;\n}\nexport { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods, getComputedStyle, classesToSelector, createElementIfNotDefined };","import { getWindow } from 'ssr-window';\nimport { extend } from '../../utils/utils';\nvar supportsResizeObserver = function supportsResizeObserver() {\n var window = getWindow();\n return typeof window.ResizeObserver !== 'undefined';\n};\nexport default {\n name: 'resize',\n create: function create() {\n var swiper = this;\n extend(swiper, {\n resize: {\n observer: null,\n createObserver: function createObserver() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.resize.observer = new ResizeObserver(function (entries) {\n var width = swiper.width,\n height = swiper.height;\n var newWidth = width;\n var newHeight = height;\n entries.forEach(function (_ref) {\n var contentBoxSize = _ref.contentBoxSize,\n contentRect = _ref.contentRect,\n target = _ref.target;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n swiper.resize.resizeHandler();\n }\n });\n swiper.resize.observer.observe(swiper.el);\n },\n removeObserver: function removeObserver() {\n if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {\n swiper.resize.observer.unobserve(swiper.el);\n swiper.resize.observer = null;\n }\n },\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init(swiper) {\n var window = getWindow();\n if (swiper.params.resizeObserver && supportsResizeObserver()) {\n swiper.resize.createObserver();\n return;\n } // Emit resize\n\n window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy(swiper) {\n var window = getWindow();\n swiper.resize.removeObserver();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Observer = {\n attach: function attach(target, options) {\n if (options === void 0) {\n options = {};\n }\n var window = getWindow();\n var swiper = this;\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!swiper.support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n }\n};\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n observer: _extends({}, Observer, {\n observers: []\n })\n });\n },\n on: {\n init: function init(swiper) {\n swiper.observer.init();\n },\n destroy: function destroy(swiper) {\n swiper.observer.destroy();\n }\n }\n};","import { extend } from '../../utils/utils';\nexport default {\n useParams: function useParams(instanceParams) {\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n },\n useModules: function useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Add event listeners\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on: function on(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once: function once(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny: function onAny(handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny: function offAny(handler) {\n var self = this;\n if (!self.eventsAnyListeners) return self;\n var index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off: function off(events, handler) {\n var self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit: function emit() {\n var self = this;\n if (!self.eventsListeners) return self;\n var events;\n var data;\n var context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(function (eventHandler) {\n eventHandler.apply(context, [event].concat(data));\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\nexport default {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n translateTo: translateTo\n};","import { getTranslate } from '../../../utils/utils';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n var swiper = this;\n var params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n $wrapperEl = swiper.$wrapperEl;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n var currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n var swiper = this;\n var params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n var minTranslate = swiper.minTranslate();\n var maxTranslate = swiper.maxTranslate();\n var newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\nexport default {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide\n};","export default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\"The 'index' argument cannot have type other than 'number' or 'string'. [\" + typeof index + \"] given.\");\n }\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n var indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n var isValidNumber = isFinite(indexAsNumber);\n if (!isValidNumber) {\n throw new Error(\"The passed-in 'index' (string) couldn't be converted to 'number'. [\" + index + \"] given.\");\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n index = indexAsNumber;\n }\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n var params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl,\n enabled = swiper.enabled;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n var normalizedTranslate = -Math.floor(translate * 100);\n var normalizedGird = Math.floor(slidesGrid[i] * 100);\n var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGird) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n var direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n var t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n var swiper = this;\n var newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n var prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n var swiper = this;\n var index = swiper.activeIndex;\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n var prevSnap = swiper.snapGrid[snapIndex - 1];\n var _currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\nexport default function slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n var found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nexport default function onTouchStart(event) {\n var swiper = this;\n var document = getDocument();\n var window = getWindow();\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n enabled = swiper.enabled;\n if (!enabled) return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n var $targetEl = $(e.target);\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n var noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass;\n var isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\nexport default function onTouchMove(event) {\n var document = getDocument();\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n } // Update progress\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../../utils/utils';\nexport default function onTouchEnd(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n $wrapperEl = swiper.$wrapperEl,\n slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n var touchEndTime = now();\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(function () {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n var currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n var nextSlide;\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(function () {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n swiper.emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n } // Find current slide\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + _increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + _increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n var swiper = this;\n var params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n var allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n var swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\nvar dummyEventAttached = false;\nfunction dummyEventListener() {}\nfunction attachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n if (params.updateOnWindowResize) {\n swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\nfunction detachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);\n}\nexport default {\n attachEvents: attachEvents,\n detachEvents: detachEvents\n};","function checkOverflow() {\n var swiper = this;\n var params = swiper.params;\n var wasLocked = swiper.isLocked;\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\nexport default {\n checkOverflow: checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: false,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\n/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\nimport defaults from './defaults';\nvar prototypes = {\n modular: modular,\n eventsEmitter: eventsEmitter,\n update: update,\n translate: translate,\n transition: transition,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow,\n classes: classes,\n images: images\n};\nvar extendedDefaults = {};\nvar Swiper = /*#__PURE__*/function () {\n function Swiper() {\n var el;\n var params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n if (params.el && $(params.el).length > 1) {\n var swipers = [];\n $(params.el).each(function (containerEl) {\n var newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n var swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n }\n }); // Extend defaults with modules params\n\n var swiperParams = extend({}, defaults);\n swiper.useParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(function (eventName) {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n swiper.$ = $; // Extend Swiper\n\n extend(swiper, {\n enabled: swiper.params.enabled,\n el: el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (swiper.support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n }); // Install Modules\n\n swiper.useModules();\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n return swiper;\n }\n var _proto = Swiper.prototype;\n _proto.enable = function enable() {\n var swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n };\n _proto.disable = function disable() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n };\n _proto.setProgress = function setProgress(progress, speed) {\n var swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n var min = swiper.minTranslate();\n var max = swiper.maxTranslate();\n var current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n };\n _proto.emitContainerClasses = function emitContainerClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var classes = swiper.el.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', classes.join(' '));\n };\n _proto.getSlideClasses = function getSlideClasses(slideEl) {\n var swiper = this;\n return slideEl.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n };\n _proto.emitSlidesClasses = function emitSlidesClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var updates = [];\n swiper.slides.each(function (slideEl) {\n var classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl: slideEl,\n classNames: classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n };\n _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {\n var swiper = this;\n var params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n var spv = 1;\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {\n if (slides[_i] && !breakLoop) {\n slideSize += slides[_i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {\n if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n };\n _proto.update = function update() {\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var snapGrid = swiper.snapGrid,\n params = swiper.params; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n var translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n };\n _proto.changeDirection = function changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n var swiper = this;\n var currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.$el.removeClass(\"\" + swiper.params.containerModifierClass + currentDirection).addClass(\"\" + swiper.params.containerModifierClass + newDirection);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(function (slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n };\n _proto.mount = function mount(el) {\n var swiper = this;\n if (swiper.mounted) return true; // Find el\n\n var $el = $(el || swiper.params.el);\n el = $el[0];\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n var getWrapperSelector = function getWrapperSelector() {\n return \".\" + (swiper.params.wrapperClass || '').trim().split(' ').join('.');\n };\n var getWrapper = function getWrapper() {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n var res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = function (options) {\n return $el.children(options);\n };\n return res;\n }\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n var $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n var document = getDocument();\n var wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(\".\" + swiper.params.slideClass).each(function (slideEl) {\n $wrapperEl.append(slideEl);\n });\n }\n extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n };\n _proto.init = function init(el) {\n var swiper = this;\n if (swiper.initialized) return swiper;\n var mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n };\n _proto.destroy = function destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n var swiper = this;\n var params = swiper.params,\n $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n };\n Swiper.extendDefaults = function extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n };\n Swiper.installModule = function installModule(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n var name = module.name || Object.keys(Swiper.prototype.modules).length + \"_\" + now();\n Swiper.prototype.modules[name] = module;\n };\n Swiper.use = function use(module) {\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Swiper.installModule(m);\n });\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n };\n _createClass(Swiper, null, [{\n key: \"extendedDefaults\",\n get: function get() {\n return extendedDefaults;\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return defaults;\n }\n }]);\n return Swiper;\n}();\nObject.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\nexport default {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide\n};","import { extend } from '../../../utils/utils';\nexport default function updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { extend } from '../../../utils/utils';\nexport default function updateSlides() {\n var swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n var offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n var offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.slidesGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n });\n var slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? params.spaceBetween && params.spaceBetween + \"px\" : '');\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = getComputedStyle(slide[0]);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n var width = getDirectionPropertyValue(slideStyles, 'width');\n var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n var _slide$ = slide[0],\n clientWidth = _slide$.clientWidth,\n offsetWidth = _slide$.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = slideSize + \"px\";\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\n if (params.setWrapperSize) {\n var _$wrapperEl$css;\n $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css));\n }\n if (params.slidesPerColumn > 1) {\n var _$wrapperEl$css2;\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css2));\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\n var slidesGridItem = snapGrid[_i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\n var _slidesGridItem = snapGrid[_i2];\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(_slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (params.spaceBetween !== 0) {\n var _slides$filter$css;\n var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter(function (_, slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + \"px\", _slides$filter$css));\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n var maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(function (snap) {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n var _allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n _allSlidesSize -= params.spaceBetween;\n if (_allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var newHeight = 0;\n var i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n var getSlideByIndex = function getSlideByIndex(index) {\n if (isVirtual) {\n return swiper.slides.filter(function (el) {\n return parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index;\n })[0];\n }\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(function (slide) {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n if (newHeight) swiper.$wrapperEl.css('height', newHeight + \"px\");\n}","export default function updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../../utils/dom';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import { extend } from '../../../utils/utils';\nexport default function updateProgress(translate) {\n var swiper = this;\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex,\n realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n activeSlide.addClass(params.slideActiveClass);\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}","import { extend } from '../../../utils/utils';\nexport default function updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n } // Get real index\n\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../../utils/dom';\nexport default function updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest(\".\" + params.slideClass)[0];\n var slideFound = false;\n var slideIndex;\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\nexport default {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd\n};","export default function setTransition(duration, byController) {\n var swiper = this;\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n params = swiper.params,\n previousIndex = swiper.previousIndex;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit('transitionStart');\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}","export default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex,\n params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit('transitionEnd');\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\nexport default {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loopCreate() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\n\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(document.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (el, index) {\n var slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (var _i = 0; _i < appendSlides.length; _i += 1) {\n $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {\n $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n var swiper = this;\n swiper.emit('beforeLoopFix');\n var activeIndex = swiper.activeIndex,\n slides = swiper.slides,\n loopedSlides = swiper.loopedSlides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n snapGrid = swiper.snapGrid,\n rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (_slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n slides = swiper.slides;\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\nexport default {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n var swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n var swiper = this;\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n swiper.el.style.cursor = '';\n}","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\nexport default {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides\n};","export default function appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n if (params.loop) {\n swiper.loopDestroy();\n }\n var newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n var baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (slides[_i]) $wrapperEl.append(slides[_i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {\n $wrapperEl.append(slidesBuffer[_i2]);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\nexport default {\n setBreakpoint: setBreakpoint,\n getBreakpoint: getBreakpoint\n};","import { extend } from '../../../utils/utils';\nexport default function setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n initialized = swiper.initialized,\n _swiper$loopedSlides = swiper.loopedSlides,\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\n params = swiper.params,\n $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\n var wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(params.containerModifierClass + \"multirow\");\n if (breakpointParams.slidesPerColumnFill && breakpointParams.slidesPerColumnFill === 'column' || !breakpointParams.slidesPerColumnFill && params.slidesPerColumnFill === 'column') {\n $el.addClass(params.containerModifierClass + \"multirow-column\");\n }\n swiper.emitContainerClasses();\n }\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n var isEnabled = swiper.params.enabled;\n extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n var breakpoint = false;\n var window = getWindow();\n var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n var points = Object.keys(breakpoints).map(function (point) {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n var minRatio = parseFloat(point.substr(1));\n var value = currentHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n return {\n value: point,\n point: point\n };\n });\n points.sort(function (a, b) {\n return parseInt(a.value, 10) - parseInt(b.value, 10);\n });\n for (var i = 0; i < points.length; i += 1) {\n var _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\n if (base === 'window') {\n if (window.matchMedia(\"(min-width: \" + value + \"px)\").matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\nexport default {\n addClasses: addClasses,\n removeClasses: removeClasses\n};","function prepareClasses(entries, prefix) {\n var resultClasses = [];\n entries.forEach(function (item) {\n if (typeof item === 'object') {\n Object.keys(item).forEach(function (classNames) {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nexport default function addClasses() {\n var swiper = this;\n var classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n $el = swiper.$el,\n device = swiper.device,\n support = swiper.support; // prettier-ignore\n\n var suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': support.pointerEvents && !support.touch\n }, {\n 'free-mode': params.freeMode\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'multirow': params.slidesPerColumn > 1\n }, {\n 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }], params.containerModifierClass);\n classNames.push.apply(classNames, suffixes);\n $el.addClass([].concat(classNames).join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n var swiper = this;\n var $el = swiper.$el,\n classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\nexport default {\n loadImage: loadImage,\n preloadImages: preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var window = getWindow();\n var image;\n function onReady() {\n if (callback) callback();\n }\n var isPicture = $(imageEl).parent('picture')[0];\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Virtual = {\n update: function update(force) {\n var swiper = this;\n var _swiper$params = swiper.params,\n slidesPerView = _swiper$params.slidesPerView,\n slidesPerGroup = _swiper$params.slidesPerGroup,\n centeredSlides = _swiper$params.centeredSlides;\n var _swiper$params$virtua = swiper.params.virtual,\n addSlidesBefore = _swiper$params$virtua.addSlidesBefore,\n addSlidesAfter = _swiper$params$virtua.addSlidesAfter;\n var _swiper$virtual = swiper.virtual,\n previousFrom = _swiper$virtual.from,\n previousTo = _swiper$virtual.to,\n slides = _swiper$virtual.slides,\n previousSlidesGrid = _swiper$virtual.slidesGrid,\n renderSlide = _swiper$virtual.renderSlide,\n previousOffset = _swiper$virtual.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n var offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n var slidesAfter;\n var slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n extend(swiper.virtual, {\n from: from,\n to: to,\n offset: offset,\n slidesGrid: swiper.slidesGrid\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, offset + \"px\");\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset,\n from: from,\n to: to,\n slides: function getSlides() {\n var slidesToRender = [];\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n var prependIndexes = [];\n var appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(\".\" + swiper.params.slideClass).remove();\n } else {\n for (var i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\").remove();\n }\n }\n }\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (_i >= from && _i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(_i);\n } else {\n if (_i > previousTo) appendIndexes.push(_i);\n if (_i < previousFrom) prependIndexes.push(_i);\n }\n }\n }\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) {\n return b - a;\n }).forEach(function (index) {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + \"px\");\n onRendered();\n },\n renderSlide: function renderSlide(slide, index) {\n var swiper = this;\n var params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(\"
\" + slide + \"
\");\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide: function appendSlide(slides) {\n var swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide: function prependSlide(slides) {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var newActiveIndex = activeIndex + 1;\n var numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n var $cachedEl = cache[cachedIndex];\n var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide: function removeSlide(slidesIndexes) {\n var swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n var activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides: function removeAllSlides() {\n var swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n }\n};\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n virtual: _extends({}, Virtual, {\n slides: swiper.params.virtual.slides,\n cache: {}\n })\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"virtual\");\n var overwriteParams = {\n watchSlidesProgress: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate: function setTranslate(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Keyboard = {\n handle: function handle(event) {\n var swiper = this;\n if (!swiper.enabled) return;\n var window = getWindow();\n var document = getDocument();\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n var kc = e.keyCode || e.charCode;\n var pageUpDown = swiper.params.keyboard.pageUpDown;\n var isPageUp = pageUpDown && kc === 33;\n var isPageDown = pageUpDown && kc === 34;\n var isArrowLeft = kc === 37;\n var isArrowRight = kc === 39;\n var isArrowUp = kc === 38;\n var isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n var inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(\".\" + swiper.params.slideClass).length > 0 && swiper.$el.parents(\".\" + swiper.params.slideActiveClass).length === 0) {\n return undefined;\n }\n var $el = swiper.$el;\n var swiperWidth = $el[0].clientWidth;\n var swiperHeight = $el[0].clientHeight;\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable: function enable() {\n var swiper = this;\n var document = getDocument();\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n var document = getDocument();\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n }\n};\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n keyboard: _extends({\n enabled: false\n }, Keyboard)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n }\n }\n};","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { now, nextTick, bindModuleMethods } from '../../utils/utils';\nfunction isEventSupported() {\n var document = getDocument();\n var eventName = 'onwheel';\n var isSupported = eventName in document;\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n if (!isSupported && document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n return isSupported;\n}\nvar Mousewheel = {\n lastScrollTime: now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event: function event() {\n var window = getWindow();\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize: function normalize(e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n var sX = 0;\n var sY = 0; // spinX, spinY\n\n var pX = 0;\n var pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n },\n handleMouseEnter: function handleMouseEnter() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n },\n handle: function handle(event) {\n var e = event;\n var disableParentSwiper = true;\n var swiper = this;\n if (!swiper.enabled) return;\n var params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n var data = Mousewheel.normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n var positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n var newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n var recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n var _newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;\n var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n var position = swiper.getTranslate() + delta * params.sensitivity;\n var wasBeginning = swiper.isBeginning;\n var wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (_recentWheelEvents.length >= 15) {\n _recentWheelEvents.shift(); // only store the last N events\n }\n var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;\n var firstEvent = _recentWheelEvents[0];\n _recentWheelEvents.push(_newEvent);\n if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n _recentWheelEvents.splice(0);\n } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n var snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = _newEvent;\n _recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = nextTick(function () {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = nextTick(function () {\n var snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = _newEvent;\n _recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n },\n animateSlider: function animateSlider(newEvent) {\n var swiper = this;\n var window = getWindow();\n if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n },\n releaseScroll: function releaseScroll(newEvent) {\n var swiper = this;\n var params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable: function enable() {\n var swiper = this;\n var event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable: function disable() {\n var swiper = this;\n var event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n }\n};\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n mousewheel: {\n enabled: false,\n lastScrollTime: now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n enable: Mousewheel.enable,\n disable: Mousewheel.disable,\n handle: Mousewheel.handle,\n handleMouseEnter: Mousewheel.handleMouseEnter,\n handleMouseLeave: Mousewheel.handleMouseLeave,\n animateSlider: Mousewheel.animateSlider,\n releaseScroll: Mousewheel.releaseScroll\n }\n });\n },\n on: {\n init: function init(swiper) {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy: function destroy(swiper) {\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $prevEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $nextEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper.$el, swiper.params.navigation, swiper.params.createElements, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n },\n click: function click(swiper, e) {\n var _swiper$navigation4 = swiper.navigation,\n $nextEl = _swiper$navigation4.$nextEl,\n $prevEl = _swiper$navigation4.$prevEl;\n var targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, classesToSelector, createElementIfNotDefined } from '../../utils/utils';\nvar Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el; // Current/Total\n\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n if ($el.length > 1) {\n bullets.each(function (bullet) {\n var $bullet = $(bullet);\n var bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(params.bulletActiveClass + \"-main\");\n }\n if (bulletIndex === firstIndex) {\n $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n }\n if (bulletIndex === lastIndex) {\n $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n var bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {\n bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + \"-main\");\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n }\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\n }\n }\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n var progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(classesToSelector(params.progressbarFillClass)).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', $el[0]);\n } else {\n swiper.emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\">\";\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"\" + ' / ' + (\"\");\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"\";\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n swiper.params.pagination = createElementIfNotDefined(swiper.$el, swiper.params.pagination, swiper.params.createElements, {\n el: 'swiper-pagination'\n });\n var params = swiper.params.pagination;\n if (!params.el) return;\n var $el = $(params.el);\n if ($el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n }\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n $el.addClass(params.modifierClass + params.type);\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n extend(swiper.pagination, {\n $el: $el,\n el: $el[0]\n });\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n};\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function formatFractionCurrent(number) {\n return number;\n },\n formatFractionTotal: function formatFractionTotal(number) {\n return number;\n },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable',\n // NEW\n lockClass: 'swiper-pagination-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n pagination: _extends({\n dynamicBulletIndex: 0\n }, Pagination)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy(swiper) {\n swiper.pagination.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var $el = swiper.pagination.$el;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n },\n click: function click(swiper, e) {\n var targetEl = e.target;\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow');\n } else {\n swiper.emit('paginationHide');\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, nextTick, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\nvar Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n var scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate,\n progress = swiper.progress;\n var dragSize = scrollbar.dragSize,\n trackSize = scrollbar.trackSize,\n $dragEl = scrollbar.$dragEl,\n $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(\"translate3d(\" + newPos + \"px, 0, 0)\");\n $dragEl[0].style.width = newSize + \"px\";\n } else {\n $dragEl.transform(\"translate3d(0px, \" + newPos + \"px, 0)\");\n $dragEl[0].style.height = newSize + \"px\";\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl,\n $el = scrollbar.$el;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = dragSize + \"px\";\n } else {\n $dragEl[0].style.height = dragSize + \"px\";\n }\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n extend(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize\n });\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n },\n getPointerPosition: function getPointerPosition(e) {\n var swiper = this;\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n },\n setDragPosition: function setDragPosition(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el,\n dragSize = scrollbar.dragSize,\n trackSize = scrollbar.trackSize,\n dragStartPos = scrollbar.dragStartPos;\n var positionRatio;\n positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el,\n $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n clearTimeout(swiper.scrollbar.dragTimeout);\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el,\n $dragEl = scrollbar.$dragEl;\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd: function onDragEnd(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = nextTick(function () {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var document = getDocument();\n var scrollbar = swiper.scrollbar,\n touchEventsTouch = swiper.touchEventsTouch,\n touchEventsDesktop = swiper.touchEventsDesktop,\n params = swiper.params,\n support = swiper.support;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n if (!support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var document = getDocument();\n var scrollbar = swiper.scrollbar,\n touchEventsTouch = swiper.touchEventsTouch,\n touchEventsDesktop = swiper.touchEventsDesktop,\n params = swiper.params,\n support = swiper.support;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n if (!support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init: function init() {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n $swiperEl = swiper.$el;\n swiper.params.scrollbar = createElementIfNotDefined($swiperEl, swiper.params.scrollbar, swiper.params.createElements, {\n el: 'swiper-scrollbar'\n });\n var params = swiper.params.scrollbar;\n if (!params.el) return;\n var $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n var $dragEl = $el.find(\".\" + swiper.params.scrollbar.dragClass);\n if ($dragEl.length === 0) {\n $dragEl = $(\"
\");\n $el.append($dragEl);\n }\n extend(scrollbar, {\n $el: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0]\n });\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n }\n};\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n scrollbar: _extends({\n isTouched: false,\n timeout: null,\n dragTimeout: null\n }, Scrollbar)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update(swiper) {\n swiper.scrollbar.updateSize();\n },\n resize: function resize(swiper) {\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate(swiper) {\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate(swiper) {\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n swiper.scrollbar.setTransition(duration);\n },\n 'enable disable': function enableDisable(swiper) {\n var $el = swiper.scrollbar.$el;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n },\n destroy: function destroy(swiper) {\n swiper.scrollbar.destroy();\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n var $el = $(el);\n var rtlFactor = rtl ? -1 : 1;\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var opacity = $el.attr('data-swiper-parallax-opacity');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = parseInt(x, 10) * progress * rtlFactor + \"%\";\n } else {\n x = x * progress * rtlFactor + \"px\";\n }\n if (y.indexOf('%') >= 0) {\n y = parseInt(y, 10) * progress + \"%\";\n } else {\n y = y * progress + \"px\";\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(\"translate3d(\" + x + \", \" + y + \", 0px)\");\n } else {\n var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\");\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el,\n slides = swiper.slides,\n progress = swiper.progress,\n snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideEl, slideIndex) {\n var slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition(duration) {\n if (duration === void 0) {\n duration = this.params.speed;\n }\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {\n var $parallaxEl = $(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n }\n};\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n parallax: _extends({}, Parallax)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { getWindow } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods, getTranslate } from '../../utils/utils';\nvar Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(\".\" + swiper.params.slideClass);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange: function onGestureChange(e) {\n var swiper = this;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') zoom.onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);\n }\n gesture.$imageEl.transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var device = swiper.device;\n var support = swiper.support;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart: function onTouchStart(e) {\n var swiper = this;\n var device = swiper.device;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image,\n velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!image.isMoved && !zoom.isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);\n } // Velocity\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\n },\n onTouchEnd: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image,\n velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\n },\n onTransitionEnd: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle: function toggle(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in: function _in(e) {\n var swiper = this;\n var window = getWindow();\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture,\n image = zoom.image;\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(\".\" + swiper.params.slideClass);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n gesture.$slideEl.addClass(\"\" + params.zoomedSlideClass);\n var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\");\n gesture.$imageEl.transition(300).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n },\n out: function out() {\n var swiper = this;\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(\"\" + params.zoomedSlideClass);\n gesture.$slideEl = undefined;\n },\n toggleGestures: function toggleGestures(method) {\n var swiper = this;\n var zoom = swiper.zoom;\n var selector = zoom.slideSelector,\n passive = zoom.passiveListener;\n swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);\n swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);\n swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);\n },\n enableGestures: function enableGestures() {\n if (this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = true;\n this.zoom.toggleGestures('on');\n },\n disableGestures: function disableGestures() {\n if (!this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = false;\n this.zoom.toggleGestures('off');\n },\n // Attach/Detach Events\n enable: function enable() {\n var swiper = this;\n var support = swiper.support;\n var zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n var activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n var slideSelector = \".\" + swiper.params.slideClass;\n swiper.zoom.passiveListener = passiveListener;\n swiper.zoom.slideSelector = slideSelector; // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n } // Move image\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled) return;\n var support = swiper.support;\n swiper.zoom.enabled = false;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n var activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n var slideSelector = \".\" + swiper.params.slideClass; // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n } // Move image\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\n }\n};\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n zoom: _extends({\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n }\n }, Zoom)\n });\n var scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get: function get() {\n return scale;\n },\n set: function set(value) {\n if (scale !== value) {\n var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy(swiper) {\n swiper.zoom.disable();\n },\n touchStart: function touchStart(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(swiper, e) {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { getWindow } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Lazy = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if (loadInDuplicate === void 0) {\n loadInDuplicate = true;\n }\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var $slideEl = isVirtual ? swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\") : swiper.slides.eq(index);\n var $images = $slideEl.find(\".\" + params.elementClass + \":not(.\" + params.loadedClass + \"):not(.\" + params.loadingClass + \")\");\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n $images.each(function (imageEl) {\n var $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n var $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', \"url(\\\"\" + background + \"\\\")\");\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each(function (sourceEl) {\n var $source = $(sourceEl);\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(\".\" + params.preloaderClass).remove();\n if (swiper.params.loop && loadInDuplicate) {\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + swiper.params.slideDuplicateClass + \")\");\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var duplicatedSlide = swiper.$wrapperEl.children(\".\" + swiper.params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\");\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n swiperParams = swiper.params,\n slides = swiper.slides,\n activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n var slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(\".\" + swiperParams.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\").length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(\".\" + swiperParams.slideVisibleClass).each(function (slideEl) {\n var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {\n if (slideExist(_i)) swiper.lazy.loadInSlide(_i);\n } // Prev Slides\n\n for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {\n if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);\n }\n } else {\n var nextSlide = $wrapperEl.children(\".\" + swiperParams.slideNextClass);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n var prevSlide = $wrapperEl.children(\".\" + swiperParams.slidePrevClass);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n checkInViewOnLoad: function checkInViewOnLoad() {\n var window = getWindow();\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n var isWindow = $scrollElement[0] === window;\n var scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n var scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n var swiperOffset = swiper.$el.offset();\n var rtl = swiper.rtlTranslate;\n var inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n var passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (inView) {\n swiper.lazy.load();\n $scrollElement.off('scroll', swiper.lazy.checkInViewOnLoad, passiveListener);\n } else if (!swiper.lazy.scrollHandlerAttached) {\n swiper.lazy.scrollHandlerAttached = true;\n $scrollElement.on('scroll', swiper.lazy.checkInViewOnLoad, passiveListener);\n }\n }\n};\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n lazy: _extends({\n initialImageLoaded: false\n }, Lazy)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n if (swiper.params.lazy.checkInView) {\n swiper.lazy.checkInViewOnLoad();\n } else {\n swiper.lazy.load();\n }\n }\n },\n scroll: function scroll(swiper) {\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n 'scrollbarDragMove resize _freeModeNoMomentumRelease': function lazyLoad(swiper) {\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart(swiper) {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd: function transitionEnd(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange: function slideChange(swiper) {\n var _swiper$params = swiper.params,\n lazy = _swiper$params.lazy,\n cssMode = _swiper$params.cssMode,\n watchSlidesVisibility = _swiper$params.watchSlidesVisibility,\n watchSlidesProgress = _swiper$params.watchSlidesProgress,\n touchReleaseOnEdges = _swiper$params.touchReleaseOnEdges,\n resistanceRatio = _swiper$params.resistanceRatio;\n if (lazy.enabled && (cssMode || (watchSlidesVisibility || watchSlidesProgress) && (touchReleaseOnEdges || resistanceRatio === 0))) {\n swiper.lazy.load();\n }\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n var i1;\n var i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction: function getInterpolateFunction(c) {\n var swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate: function setTranslate(_setTranslate, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var controlledTranslate;\n var Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n var Swiper = swiper.constructor;\n var controlled = swiper.controller.control;\n var i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(function () {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n controller: _extends({\n control: swiper.params.controller.control\n }, Controller)\n });\n },\n on: {\n update: function update(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize: function resize(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate: function setTranslate(swiper, translate, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(swiper, duration, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport $ from '../../utils/dom';\nimport { bindModuleMethods, classesToSelector } from '../../utils/utils';\nvar A11y = {\n getRandomNumber: function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n var randomChar = function randomChar() {\n return Math.round(16 * Math.random()).toString(16);\n };\n return 'x'.repeat(size).replace(/x/g, randomChar);\n },\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable: function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElRoleDescription: function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n return $el;\n },\n addElControls: function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n addElId: function addElId($el, id) {\n $el.attr('id', id);\n return $el;\n },\n addElLive: function addElLive($el, live) {\n $el.attr('aria-live', live);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterOrSpaceKey: function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n var swiper = this;\n var params = swiper.params.a11y;\n var $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n },\n notify: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n if (swiper.params.loop || !swiper.navigation) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletEl) {\n var $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n });\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.a11y;\n swiper.$el.append(swiper.a11y.liveRegion); // Container\n\n var $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n swiper.a11y.addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n var $wrapperEl = swiper.$wrapperEl;\n var wrapperId = $wrapperEl.attr('id') || \"swiper-wrapper-\" + swiper.a11y.getRandomNumber(16);\n var live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n swiper.a11y.addElId($wrapperEl, wrapperId);\n swiper.a11y.addElLive($wrapperEl, live); // Slide\n\n if (params.itemRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n swiper.a11y.addElRole($(swiper.slides), params.slideRole);\n var slidesLength = swiper.params.loop ? swiper.slides.filter(function (el) {\n return !el.classList.contains(swiper.params.slideDuplicateClass);\n }).length : swiper.slides.length;\n swiper.slides.each(function (slideEl, index) {\n var $slideEl = $(slideEl);\n var slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n var ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n swiper.a11y.addElLabel($slideEl, ariaLabelMessage);\n }); // Navigation\n\n var $nextEl;\n var $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl && $nextEl.length) {\n swiper.a11y.makeElFocusable($nextEl);\n if ($nextEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($nextEl, 'button');\n $nextEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n swiper.a11y.addElControls($nextEl, wrapperId);\n }\n if ($prevEl && $prevEl.length) {\n swiper.a11y.makeElFocusable($prevEl);\n if ($prevEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($prevEl, 'button');\n $prevEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n swiper.a11y.addElControls($prevEl, wrapperId);\n } // Pagination\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), swiper.a11y.onEnterOrSpaceKey);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n var $nextEl;\n var $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);\n } // Pagination\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), swiper.a11y.onEnterOrSpaceKey);\n }\n }\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n a11y: _extends({}, A11y, {\n liveRegion: $(\"\")\n })\n });\n },\n on: {\n afterInit: function afterInit(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy: function destroy(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\nvar History = {\n init: function init() {\n var swiper = this;\n var window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n var history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues(swiper.params.url);\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState: function setHistoryPopState() {\n var swiper = this;\n swiper.history.paths = History.getPathValues(swiper.params.url);\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues: function getPathValues(urlOverride) {\n var window = getWindow();\n var location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n var pathArray = location.pathname.slice(1).split('/').filter(function (part) {\n return part !== '';\n });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return {\n key: key,\n value: value\n };\n },\n setHistory: function setHistory(key, index) {\n var swiper = this;\n var window = getWindow();\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n var location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n var slide = swiper.slides.eq(index);\n var value = History.slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n var root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = root + \"/\" + key + \"/\" + value;\n } else if (!location.pathname.includes(key)) {\n value = key + \"/\" + value;\n }\n var currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value: value\n }, null, value);\n } else {\n window.history.pushState({\n value: value\n }, null, value);\n }\n },\n slugify: function slugify(text) {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n if (value) {\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n }\n};\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n history: _extends({}, History)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n 'transitionEnd _freeModeNoMomentumRelease': function transitionEnd_freeModeNoMomentumRelease(swiper) {\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar HashNavigation = {\n onHashChange: function onHashChange() {\n var swiper = this;\n var document = getDocument();\n swiper.emit('hashChange');\n var newHash = document.location.hash.replace('#', '');\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n var newIndex = swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-hash=\\\"\" + newHash + \"\\\"]\").index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash: function setHash() {\n var swiper = this;\n var window = getWindow();\n var document = getDocument();\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, \"#\" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');\n swiper.emit('hashSet');\n } else {\n var slide = swiper.slides.eq(swiper.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init: function init() {\n var swiper = this;\n var document = getDocument();\n var window = getWindow();\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n swiper.hashNavigation.initialized = true;\n var hash = document.location.hash.replace('#', '');\n if (hash) {\n var speed = 0;\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashChange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var window = getWindow();\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashChange);\n }\n }\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n hashNavigation: _extends({\n initialized: false\n }, HashNavigation)\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n 'transitionEnd _freeModeNoMomentumRelease': function transitionEnd_freeModeNoMomentumRelease(swiper) {\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange: function slideChange(swiper) {\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n/* eslint no-underscore-dangle: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = nextTick(function () {\n var autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].addEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n }\n },\n onVisibilityChange: function onVisibilityChange() {\n var swiper = this;\n var document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n var swiper = this;\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n onMouseEnter: function onMouseEnter() {\n var swiper = this;\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n },\n onMouseLeave: function onMouseLeave() {\n var swiper = this;\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n },\n attachMouseEvents: function attachMouseEvents() {\n var swiper = this;\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.on('mouseleave', swiper.autoplay.onMouseLeave);\n }\n },\n detachMouseEvents: function detachMouseEvents() {\n var swiper = this;\n swiper.$el.off('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.off('mouseleave', swiper.autoplay.onMouseLeave);\n }\n};\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n autoplay: _extends({}, Autoplay, {\n running: false,\n paused: false\n })\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n var document = getDocument();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n swiper.autoplay.attachMouseEvents();\n }\n },\n beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove(swiper) {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd: function touchEnd(swiper) {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy(swiper) {\n swiper.autoplay.detachMouseEvents();\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n var document = getDocument();\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl.css({\n opacity: slideOpacity\n }).transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n fadeEffect: _extends({}, Fade)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"fade\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides,\n swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n rtl = swiper.rtlTranslate,\n swiperSize = swiper.size,\n browser = swiper.browser;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({\n height: swiperWidth + \"px\"\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\"
\");\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\"
\");\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n '-moz-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n '-ms-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\n 'transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\"\n });\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\"translate3d(0px, \" + (swiperWidth / 2 + params.shadowOffset) + \"px, \" + -swiperWidth / 2 + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + params.shadowScale + \")\");\n } else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var offset = params.shadowOffset;\n $cubeShadowEl.transform(\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + (swiperHeight / 2 + offset) + \"px, \" + -swiperHeight / 2 / scale2 + \"px) rotateX(-90deg)\");\n }\n }\n var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\");\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el,\n slides = swiper.slides;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n }\n};\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n cubeEffect: _extends({}, Cube)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"cube\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n var offset = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset;\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\"
\");\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\"
\");\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl.transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n activeIndex = swiper.activeIndex,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false; // eslint-disable-next-line\n\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n flipEffect: _extends({}, Flip)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"flip\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n slides = swiper.slides,\n slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform = swiper.translate;\n var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth; // Each slide offset from center\n\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n var translateZ = -translate * Math.abs(offsetMultiplier);\n var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n var translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg) scale(\" + scale + \")\";\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(\"
\");\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(\"
\");\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n};\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n coverflowEffect: _extends({}, Coverflow)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"coverflow\");\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n }\n }\n};","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { extend, isObject, bindModuleMethods } from '../../utils/utils';\nimport $ from '../../utils/dom';\nvar Thumbs = {\n init: function init() {\n var swiper = this;\n var thumbsParams = swiper.params.thumbs;\n if (swiper.thumbs.initialized) return false;\n swiper.thumbs.initialized = true;\n var SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n return true;\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n var slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n var prevIndex = swiper.slides.eq(currentIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n var direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\").addClass(thumbActiveClass);\n }\n } else {\n for (var _i = 0; _i < thumbsToActivate; _i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);\n }\n }\n }\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n thumbs: _extends({\n swiper: null,\n initialized: false\n }, Thumbs)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n var thumbs = swiper.params.thumbs;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update: function update(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize: function resize(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition: function setTransition(swiper, duration) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy(swiper) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n }\n }\n};","/**\n * Swiper 6.8.4\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 23, 2021\n */\n\nimport Swiper from './esm/components/core/core-class';\nexport { default as Swiper, default } from './esm/components/core/core-class';\nimport Virtual from './esm/components/virtual/virtual';\nimport Keyboard from './esm/components/keyboard/keyboard';\nimport Mousewheel from './esm/components/mousewheel/mousewheel';\nimport Navigation from './esm/components/navigation/navigation';\nimport Pagination from './esm/components/pagination/pagination';\nimport Scrollbar from './esm/components/scrollbar/scrollbar';\nimport Parallax from './esm/components/parallax/parallax';\nimport Zoom from './esm/components/zoom/zoom';\nimport Lazy from './esm/components/lazy/lazy';\nimport Controller from './esm/components/controller/controller';\nimport A11y from './esm/components/a11y/a11y';\nimport History from './esm/components/history/history';\nimport HashNavigation from './esm/components/hash-navigation/hash-navigation';\nimport Autoplay from './esm/components/autoplay/autoplay';\nimport EffectFade from './esm/components/effect-fade/effect-fade';\nimport EffectCube from './esm/components/effect-cube/effect-cube';\nimport EffectFlip from './esm/components/effect-flip/effect-flip';\nimport EffectCoverflow from './esm/components/effect-coverflow/effect-coverflow';\nimport Thumbs from './esm/components/thumbs/thumbs';\n\n// Swiper Class\nvar components = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs];\nSwiper.use(components);","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport { Controller } from \"@hotwired/stimulus\";\nimport Swiper from \"swiper/bundle\";\nclass src_default extends Controller {\n connect() {\n this.swiper = new Swiper(this.element, __spreadValues(__spreadValues({}, this.defaultOptions), this.optionsValue));\n }\n disconnect() {\n this.swiper.destroy();\n this.swiper = void 0;\n }\n get defaultOptions() {\n return {};\n }\n}\nsrc_default.values = {\n options: Object\n};\nexport { src_default as default };","/**\n * Exposing intl-tel-input as a component\n */\nmodule.exports = require(\"./build/js/intlTelInput\");","document.addEventListener(\"turbolinks:load\", function () {\n const countdownComponents = document.getElementsByClassName('countdown-component');\n \n // const countdownComponent = document.getElementById('countdown-component');\n // const countdownOutput = document.getElementById(\"countdown-output\");\n\n if (countdownComponents.length > 0) {\n Array.from(countdownComponents).forEach(function(countdownComponent){\n var countdownEndAt = countdownComponent.dataset.countdownEndAt;\n var countdownOutput = document.getElementById(countdownComponent.dataset.countdownOutput);\n // Set the date we're counting down to\n var countDownDate = new Date(countdownEndAt).getTime();\n\n // Update the count down every 1 second\n var x = setInterval(function () {\n\n // Get today's date and time\n var now = new Date().getTime();\n\n // Find the distance between now and the count down date\n var distance = countDownDate - now;\n\n // Time calculations for days, hours, minutes and seconds\n var days = Math.floor(distance / (1000 * 60 * 60 * 24));\n var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\n var seconds = Math.floor((distance % (1000 * 60)) / 1000);\n\n var output = \"\";\n if (days > 0) { output += days + \"d \" };\n if (hours > 0) { output += hours + \"h \" };\n if (minutes > 0 || hours > 0) { output += minutes + \"m \" };\n if (seconds >= 0) { output += seconds + \"s \" };\n\n if (output == \"\") { output = \"0s\" };\n \n // Output the result in an element with id=\"countdown-timer\"\n countdownOutput.innerHTML = output;\n }, 1000);\n });\n }\n});","import intlTelInput from 'intl-tel-input';\n\ndocument.addEventListener(\"turbolinks:load\", function () {\n const input = document.querySelector(\"#phone\");\n const containerError = document.getElementById('error-container');\n const itemError = document.getElementById('error-list-item');\n\n // var validMsg = document.querySelector(\"#valid-msg\");\n\n // here, the index maps to the error code returned from getValidationError - see readme\n var errorMap = [\"Número inválido\", \"Código do país inválido\", \"Número curto demais\", \"Número longo demais\"];\n\n // const output = document.querySelector(\"#output\");\n if (input != undefined) {\n var iti = intlTelInput(input, {\n initialCountry: \"br\",\n preferredCountries: ['br', 'us'],\n allowDropdown: true,\n separeDialCode: true,\n nationalMode: true,\n search: true,\n hiddenInput: \"phone_number\",\n // utilsScript: \"../../build/js/utils.js?1613236686837\"\n utilsScript: \"https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.13/js/utils.min.js\",\n });\n\n var handleChange = function () {\n };\n\n // listen to \"keyup\", but also \"change\" to update when the user selects a country\n input.addEventListener('change', handleChange);\n input.addEventListener('keyup', handleChange);\n\n\n // Verify if phone is valid\n var reset = function () {\n input.classList.remove(\"error\");\n itemError.innerHTML = \"\";\n containerError.classList.add(\"hidden\");\n itemError.classList.add(\"hidden\");\n };\n\n var validate = function () {\n reset();\n if (input.value.trim()) {\n var submit = document.getElementById('submit');\n if (iti.isValidNumber()) {\n input.classList.remove(\"error\");\n submit.disabled = false;\n } else {\n input.classList.add(\"error\");\n var errorCode = iti.getValidationError();\n var message = errorMap[errorCode];\n if (message != undefined) {\n itemError.innerHTML = message;\n itemError.classList.remove(\"hidden\");\n containerError.classList.remove(\"hidden\");\n }\n submit.disabled = true;\n }\n }\n };\n\n // on blur/focus: validate\n input.addEventListener('focus', validate);\n input.addEventListener('blur', validate);\n\n // on keyup / change flag: reset\n input.addEventListener('change', reset);\n input.addEventListener('keyup', validate);\n };\n});","/*\n * International Telephone Input v17.0.21\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n\n// wrap in UMD\n(function (factory) {\n if (typeof module === \"object\" && module.exports) module.exports = factory();else window.intlTelInput = factory();\n})(function (undefined) {\n \"use strict\";\n\n return function () {\n // Array of country objects for the flag dropdown.\n // Here is the criteria for the plugin to support a given country/territory\n // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n // Each country array has the following information:\n // [\n // Country name,\n // iso2 code,\n // International dial code,\n // Order (if >1 country with same dial code),\n // Area codes\n // ]\n var allCountries = [[\"Afghanistan (‫افغانستان‬‎)\", \"af\", \"93\"], [\"Albania (Shqipëri)\", \"al\", \"355\"], [\"Algeria (‫الجزائر‬‎)\", \"dz\", \"213\"], [\"American Samoa\", \"as\", \"1\", 5, [\"684\"]], [\"Andorra\", \"ad\", \"376\"], [\"Angola\", \"ao\", \"244\"], [\"Anguilla\", \"ai\", \"1\", 6, [\"264\"]], [\"Antigua and Barbuda\", \"ag\", \"1\", 7, [\"268\"]], [\"Argentina\", \"ar\", \"54\"], [\"Armenia (Հայաստան)\", \"am\", \"374\"], [\"Aruba\", \"aw\", \"297\"], [\"Ascension Island\", \"ac\", \"247\"], [\"Australia\", \"au\", \"61\", 0], [\"Austria (Österreich)\", \"at\", \"43\"], [\"Azerbaijan (Azərbaycan)\", \"az\", \"994\"], [\"Bahamas\", \"bs\", \"1\", 8, [\"242\"]], [\"Bahrain (‫البحرين‬‎)\", \"bh\", \"973\"], [\"Bangladesh (বাংলাদেশ)\", \"bd\", \"880\"], [\"Barbados\", \"bb\", \"1\", 9, [\"246\"]], [\"Belarus (Беларусь)\", \"by\", \"375\"], [\"Belgium (België)\", \"be\", \"32\"], [\"Belize\", \"bz\", \"501\"], [\"Benin (Bénin)\", \"bj\", \"229\"], [\"Bermuda\", \"bm\", \"1\", 10, [\"441\"]], [\"Bhutan (འབྲུག)\", \"bt\", \"975\"], [\"Bolivia\", \"bo\", \"591\"], [\"Bosnia and Herzegovina (Босна и Херцеговина)\", \"ba\", \"387\"], [\"Botswana\", \"bw\", \"267\"], [\"Brazil (Brasil)\", \"br\", \"55\"], [\"British Indian Ocean Territory\", \"io\", \"246\"], [\"British Virgin Islands\", \"vg\", \"1\", 11, [\"284\"]], [\"Brunei\", \"bn\", \"673\"], [\"Bulgaria (България)\", \"bg\", \"359\"], [\"Burkina Faso\", \"bf\", \"226\"], [\"Burundi (Uburundi)\", \"bi\", \"257\"], [\"Cambodia (កម្ពុជា)\", \"kh\", \"855\"], [\"Cameroon (Cameroun)\", \"cm\", \"237\"], [\"Canada\", \"ca\", \"1\", 1, [\"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\"]], [\"Cape Verde (Kabu Verdi)\", \"cv\", \"238\"], [\"Caribbean Netherlands\", \"bq\", \"599\", 1, [\"3\", \"4\", \"7\"]], [\"Cayman Islands\", \"ky\", \"1\", 12, [\"345\"]], [\"Central African Republic (République centrafricaine)\", \"cf\", \"236\"], [\"Chad (Tchad)\", \"td\", \"235\"], [\"Chile\", \"cl\", \"56\"], [\"China (中国)\", \"cn\", \"86\"], [\"Christmas Island\", \"cx\", \"61\", 2, [\"89164\"]], [\"Cocos (Keeling) Islands\", \"cc\", \"61\", 1, [\"89162\"]], [\"Colombia\", \"co\", \"57\"], [\"Comoros (‫جزر القمر‬‎)\", \"km\", \"269\"], [\"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\", \"cd\", \"243\"], [\"Congo (Republic) (Congo-Brazzaville)\", \"cg\", \"242\"], [\"Cook Islands\", \"ck\", \"682\"], [\"Costa Rica\", \"cr\", \"506\"], [\"Côte d’Ivoire\", \"ci\", \"225\"], [\"Croatia (Hrvatska)\", \"hr\", \"385\"], [\"Cuba\", \"cu\", \"53\"], [\"Curaçao\", \"cw\", \"599\", 0], [\"Cyprus (Κύπρος)\", \"cy\", \"357\"], [\"Czech Republic (Česká republika)\", \"cz\", \"420\"], [\"Denmark (Danmark)\", \"dk\", \"45\"], [\"Djibouti\", \"dj\", \"253\"], [\"Dominica\", \"dm\", \"1\", 13, [\"767\"]], [\"Dominican Republic (República Dominicana)\", \"do\", \"1\", 2, [\"809\", \"829\", \"849\"]], [\"Ecuador\", \"ec\", \"593\"], [\"Egypt (‫مصر‬‎)\", \"eg\", \"20\"], [\"El Salvador\", \"sv\", \"503\"], [\"Equatorial Guinea (Guinea Ecuatorial)\", \"gq\", \"240\"], [\"Eritrea\", \"er\", \"291\"], [\"Estonia (Eesti)\", \"ee\", \"372\"], [\"Eswatini\", \"sz\", \"268\"], [\"Ethiopia\", \"et\", \"251\"], [\"Falkland Islands (Islas Malvinas)\", \"fk\", \"500\"], [\"Faroe Islands (Føroyar)\", \"fo\", \"298\"], [\"Fiji\", \"fj\", \"679\"], [\"Finland (Suomi)\", \"fi\", \"358\", 0], [\"France\", \"fr\", \"33\"], [\"French Guiana (Guyane française)\", \"gf\", \"594\"], [\"French Polynesia (Polynésie française)\", \"pf\", \"689\"], [\"Gabon\", \"ga\", \"241\"], [\"Gambia\", \"gm\", \"220\"], [\"Georgia (საქართველო)\", \"ge\", \"995\"], [\"Germany (Deutschland)\", \"de\", \"49\"], [\"Ghana (Gaana)\", \"gh\", \"233\"], [\"Gibraltar\", \"gi\", \"350\"], [\"Greece (Ελλάδα)\", \"gr\", \"30\"], [\"Greenland (Kalaallit Nunaat)\", \"gl\", \"299\"], [\"Grenada\", \"gd\", \"1\", 14, [\"473\"]], [\"Guadeloupe\", \"gp\", \"590\", 0], [\"Guam\", \"gu\", \"1\", 15, [\"671\"]], [\"Guatemala\", \"gt\", \"502\"], [\"Guernsey\", \"gg\", \"44\", 1, [\"1481\", \"7781\", \"7839\", \"7911\"]], [\"Guinea (Guinée)\", \"gn\", \"224\"], [\"Guinea-Bissau (Guiné Bissau)\", \"gw\", \"245\"], [\"Guyana\", \"gy\", \"592\"], [\"Haiti\", \"ht\", \"509\"], [\"Honduras\", \"hn\", \"504\"], [\"Hong Kong (香港)\", \"hk\", \"852\"], [\"Hungary (Magyarország)\", \"hu\", \"36\"], [\"Iceland (Ísland)\", \"is\", \"354\"], [\"India (भारत)\", \"in\", \"91\"], [\"Indonesia\", \"id\", \"62\"], [\"Iran (‫ایران‬‎)\", \"ir\", \"98\"], [\"Iraq (‫العراق‬‎)\", \"iq\", \"964\"], [\"Ireland\", \"ie\", \"353\"], [\"Isle of Man\", \"im\", \"44\", 2, [\"1624\", \"74576\", \"7524\", \"7924\", \"7624\"]], [\"Israel (‫ישראל‬‎)\", \"il\", \"972\"], [\"Italy (Italia)\", \"it\", \"39\", 0], [\"Jamaica\", \"jm\", \"1\", 4, [\"876\", \"658\"]], [\"Japan (日本)\", \"jp\", \"81\"], [\"Jersey\", \"je\", \"44\", 3, [\"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\"]], [\"Jordan (‫الأردن‬‎)\", \"jo\", \"962\"], [\"Kazakhstan (Казахстан)\", \"kz\", \"7\", 1, [\"33\", \"7\"]], [\"Kenya\", \"ke\", \"254\"], [\"Kiribati\", \"ki\", \"686\"], [\"Kosovo\", \"xk\", \"383\"], [\"Kuwait (‫الكويت‬‎)\", \"kw\", \"965\"], [\"Kyrgyzstan (Кыргызстан)\", \"kg\", \"996\"], [\"Laos (ລາວ)\", \"la\", \"856\"], [\"Latvia (Latvija)\", \"lv\", \"371\"], [\"Lebanon (‫لبنان‬‎)\", \"lb\", \"961\"], [\"Lesotho\", \"ls\", \"266\"], [\"Liberia\", \"lr\", \"231\"], [\"Libya (‫ليبيا‬‎)\", \"ly\", \"218\"], [\"Liechtenstein\", \"li\", \"423\"], [\"Lithuania (Lietuva)\", \"lt\", \"370\"], [\"Luxembourg\", \"lu\", \"352\"], [\"Macau (澳門)\", \"mo\", \"853\"], [\"Madagascar (Madagasikara)\", \"mg\", \"261\"], [\"Malawi\", \"mw\", \"265\"], [\"Malaysia\", \"my\", \"60\"], [\"Maldives\", \"mv\", \"960\"], [\"Mali\", \"ml\", \"223\"], [\"Malta\", \"mt\", \"356\"], [\"Marshall Islands\", \"mh\", \"692\"], [\"Martinique\", \"mq\", \"596\"], [\"Mauritania (‫موريتانيا‬‎)\", \"mr\", \"222\"], [\"Mauritius (Moris)\", \"mu\", \"230\"], [\"Mayotte\", \"yt\", \"262\", 1, [\"269\", \"639\"]], [\"Mexico (México)\", \"mx\", \"52\"], [\"Micronesia\", \"fm\", \"691\"], [\"Moldova (Republica Moldova)\", \"md\", \"373\"], [\"Monaco\", \"mc\", \"377\"], [\"Mongolia (Монгол)\", \"mn\", \"976\"], [\"Montenegro (Crna Gora)\", \"me\", \"382\"], [\"Montserrat\", \"ms\", \"1\", 16, [\"664\"]], [\"Morocco (‫المغرب‬‎)\", \"ma\", \"212\", 0], [\"Mozambique (Moçambique)\", \"mz\", \"258\"], [\"Myanmar (Burma) (မြန်မာ)\", \"mm\", \"95\"], [\"Namibia (Namibië)\", \"na\", \"264\"], [\"Nauru\", \"nr\", \"674\"], [\"Nepal (नेपाल)\", \"np\", \"977\"], [\"Netherlands (Nederland)\", \"nl\", \"31\"], [\"New Caledonia (Nouvelle-Calédonie)\", \"nc\", \"687\"], [\"New Zealand\", \"nz\", \"64\"], [\"Nicaragua\", \"ni\", \"505\"], [\"Niger (Nijar)\", \"ne\", \"227\"], [\"Nigeria\", \"ng\", \"234\"], [\"Niue\", \"nu\", \"683\"], [\"Norfolk Island\", \"nf\", \"672\"], [\"North Korea (조선 민주주의 인민 공화국)\", \"kp\", \"850\"], [\"North Macedonia (Северна Македонија)\", \"mk\", \"389\"], [\"Northern Mariana Islands\", \"mp\", \"1\", 17, [\"670\"]], [\"Norway (Norge)\", \"no\", \"47\", 0], [\"Oman (‫عُمان‬‎)\", \"om\", \"968\"], [\"Pakistan (‫پاکستان‬‎)\", \"pk\", \"92\"], [\"Palau\", \"pw\", \"680\"], [\"Palestine (‫فلسطين‬‎)\", \"ps\", \"970\"], [\"Panama (Panamá)\", \"pa\", \"507\"], [\"Papua New Guinea\", \"pg\", \"675\"], [\"Paraguay\", \"py\", \"595\"], [\"Peru (Perú)\", \"pe\", \"51\"], [\"Philippines\", \"ph\", \"63\"], [\"Poland (Polska)\", \"pl\", \"48\"], [\"Portugal\", \"pt\", \"351\"], [\"Puerto Rico\", \"pr\", \"1\", 3, [\"787\", \"939\"]], [\"Qatar (‫قطر‬‎)\", \"qa\", \"974\"], [\"Réunion (La Réunion)\", \"re\", \"262\", 0], [\"Romania (România)\", \"ro\", \"40\"], [\"Russia (Россия)\", \"ru\", \"7\", 0], [\"Rwanda\", \"rw\", \"250\"], [\"Saint Barthélemy\", \"bl\", \"590\", 1], [\"Saint Helena\", \"sh\", \"290\"], [\"Saint Kitts and Nevis\", \"kn\", \"1\", 18, [\"869\"]], [\"Saint Lucia\", \"lc\", \"1\", 19, [\"758\"]], [\"Saint Martin (Saint-Martin (partie française))\", \"mf\", \"590\", 2], [\"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\", \"pm\", \"508\"], [\"Saint Vincent and the Grenadines\", \"vc\", \"1\", 20, [\"784\"]], [\"Samoa\", \"ws\", \"685\"], [\"San Marino\", \"sm\", \"378\"], [\"São Tomé and Príncipe (São Tomé e Príncipe)\", \"st\", \"239\"], [\"Saudi Arabia (‫المملكة العربية السعودية‬‎)\", \"sa\", \"966\"], [\"Senegal (Sénégal)\", \"sn\", \"221\"], [\"Serbia (Србија)\", \"rs\", \"381\"], [\"Seychelles\", \"sc\", \"248\"], [\"Sierra Leone\", \"sl\", \"232\"], [\"Singapore\", \"sg\", \"65\"], [\"Sint Maarten\", \"sx\", \"1\", 21, [\"721\"]], [\"Slovakia (Slovensko)\", \"sk\", \"421\"], [\"Slovenia (Slovenija)\", \"si\", \"386\"], [\"Solomon Islands\", \"sb\", \"677\"], [\"Somalia (Soomaaliya)\", \"so\", \"252\"], [\"South Africa\", \"za\", \"27\"], [\"South Korea (대한민국)\", \"kr\", \"82\"], [\"South Sudan (‫جنوب السودان‬‎)\", \"ss\", \"211\"], [\"Spain (España)\", \"es\", \"34\"], [\"Sri Lanka (ශ්‍රී ලංකාව)\", \"lk\", \"94\"], [\"Sudan (‫السودان‬‎)\", \"sd\", \"249\"], [\"Suriname\", \"sr\", \"597\"], [\"Svalbard and Jan Mayen\", \"sj\", \"47\", 1, [\"79\"]], [\"Sweden (Sverige)\", \"se\", \"46\"], [\"Switzerland (Schweiz)\", \"ch\", \"41\"], [\"Syria (‫سوريا‬‎)\", \"sy\", \"963\"], [\"Taiwan (台灣)\", \"tw\", \"886\"], [\"Tajikistan\", \"tj\", \"992\"], [\"Tanzania\", \"tz\", \"255\"], [\"Thailand (ไทย)\", \"th\", \"66\"], [\"Timor-Leste\", \"tl\", \"670\"], [\"Togo\", \"tg\", \"228\"], [\"Tokelau\", \"tk\", \"690\"], [\"Tonga\", \"to\", \"676\"], [\"Trinidad and Tobago\", \"tt\", \"1\", 22, [\"868\"]], [\"Tunisia (‫تونس‬‎)\", \"tn\", \"216\"], [\"Turkey (Türkiye)\", \"tr\", \"90\"], [\"Turkmenistan\", \"tm\", \"993\"], [\"Turks and Caicos Islands\", \"tc\", \"1\", 23, [\"649\"]], [\"Tuvalu\", \"tv\", \"688\"], [\"U.S. Virgin Islands\", \"vi\", \"1\", 24, [\"340\"]], [\"Uganda\", \"ug\", \"256\"], [\"Ukraine (Україна)\", \"ua\", \"380\"], [\"United Arab Emirates (‫الإمارات العربية المتحدة‬‎)\", \"ae\", \"971\"], [\"United Kingdom\", \"gb\", \"44\", 0], [\"United States\", \"us\", \"1\", 0], [\"Uruguay\", \"uy\", \"598\"], [\"Uzbekistan (Oʻzbekiston)\", \"uz\", \"998\"], [\"Vanuatu\", \"vu\", \"678\"], [\"Vatican City (Città del Vaticano)\", \"va\", \"39\", 1, [\"06698\"]], [\"Venezuela\", \"ve\", \"58\"], [\"Vietnam (Việt Nam)\", \"vn\", \"84\"], [\"Wallis and Futuna (Wallis-et-Futuna)\", \"wf\", \"681\"], [\"Western Sahara (‫الصحراء الغربية‬‎)\", \"eh\", \"212\", 1, [\"5288\", \"5289\"]], [\"Yemen (‫اليمن‬‎)\", \"ye\", \"967\"], [\"Zambia\", \"zm\", \"260\"], [\"Zimbabwe\", \"zw\", \"263\"], [\"Åland Islands\", \"ax\", \"358\", 1, [\"18\"]]];\n // loop over all of the countries above, restructuring the data to be objects with named keys\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i];\n allCountries[i] = {\n name: c[0],\n iso2: c[1],\n dialCode: c[2],\n priority: c[3] || 0,\n areaCodes: c[4] || null\n };\n }\n \"use strict\";\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n var intlTelInputGlobals = {\n getInstance: function getInstance(input) {\n var id = input.getAttribute(\"data-intl-tel-input-id\");\n return window.intlTelInputGlobals.instances[id];\n },\n instances: {},\n // using a global like this allows us to mock it in the tests\n documentReady: function documentReady() {\n return document.readyState === \"complete\";\n }\n };\n if (typeof window === \"object\") window.intlTelInputGlobals = intlTelInputGlobals;\n // these vars persist through all instances of the plugin\n var id = 0;\n var defaults = {\n // whether or not to allow the dropdown\n allowDropdown: true,\n // if there is just a dial code in the input: remove it on blur\n autoHideDialCode: true,\n // add a placeholder in the input with an example number for the selected country\n autoPlaceholder: \"polite\",\n // modify the parentClass\n customContainer: \"\",\n // modify the auto placeholder\n customPlaceholder: null,\n // append menu to specified element\n dropdownContainer: null,\n // don't display these countries\n excludeCountries: [],\n // format the input value during initialisation and on setNumber\n formatOnDisplay: true,\n // geoIp lookup function\n geoIpLookup: null,\n // inject a hidden input with this name, and on submit, populate it with the result of getNumber\n hiddenInput: \"\",\n // initial country\n initialCountry: \"\",\n // localized country names e.g. { 'de': 'Deutschland' }\n localizedCountries: null,\n // don't insert international dial codes\n nationalMode: true,\n // display only these countries\n onlyCountries: [],\n // number type to use for placeholders\n placeholderNumberType: \"MOBILE\",\n // the countries at the top of the list. defaults to united states and united kingdom\n preferredCountries: [\"us\", \"gb\"],\n // display the country dial code next to the selected flag so it's not part of the typed number\n separateDialCode: false,\n // specify the path to the libphonenumber script to enable validation/formatting\n utilsScript: \"\"\n };\n // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes\n var regionlessNanpNumbers = [\"800\", \"822\", \"833\", \"844\", \"855\", \"866\", \"877\", \"880\", \"881\", \"882\", \"883\", \"884\", \"885\", \"886\", \"887\", \"888\", \"889\"];\n // utility function to iterate over an object. can't use Object.entries or native forEach because\n // of IE11\n var forEachProp = function forEachProp(obj, callback) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n callback(keys[i], obj[keys[i]]);\n }\n };\n // run a method on each instance of the plugin\n var forEachInstance = function forEachInstance(method) {\n forEachProp(window.intlTelInputGlobals.instances, function (key) {\n window.intlTelInputGlobals.instances[key][method]();\n });\n };\n // this is our plugin class that we will create an instance of\n // eslint-disable-next-line no-unused-vars\n var Iti = /*#__PURE__*/\n function () {\n function Iti(input, options) {\n var _this = this;\n _classCallCheck(this, Iti);\n this.id = id++;\n this.telInput = input;\n this.activeItem = null;\n this.highlightedItem = null;\n // process specified options / defaults\n // alternative to Object.assign, which isn't supported by IE11\n var customOptions = options || {};\n this.options = {};\n forEachProp(defaults, function (key, value) {\n _this.options[key] = customOptions.hasOwnProperty(key) ? customOptions[key] : value;\n });\n this.hadInitialPlaceholder = Boolean(input.getAttribute(\"placeholder\"));\n }\n _createClass(Iti, [{\n key: \"_init\",\n value: function _init() {\n var _this2 = this;\n // if in nationalMode, disable options relating to dial codes\n if (this.options.nationalMode) this.options.autoHideDialCode = false;\n // if separateDialCode then doesn't make sense to A) insert dial code into input\n // (autoHideDialCode), and B) display national numbers (because we're displaying the country\n // dial code next to them)\n if (this.options.separateDialCode) {\n this.options.autoHideDialCode = this.options.nationalMode = false;\n }\n // we cannot just test screen size as some smartphones/website meta tags will report desktop\n // resolutions\n // Note: for some reason jasmine breaks if you put this in the main Plugin function with the\n // rest of these declarations\n // Note: to target Android Mobiles (and not Tablets), we must find 'Android' and 'Mobile'\n this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n if (this.isMobile) {\n // trigger the mobile dropdown css\n document.body.classList.add(\"iti-mobile\");\n // on mobile, we want a full screen dropdown, so we must append it to the body\n if (!this.options.dropdownContainer) this.options.dropdownContainer = document.body;\n }\n // these promises get resolved when their individual requests complete\n // this way the dev can do something like iti.promise.then(...) to know when all requests are\n // complete\n if (typeof Promise !== \"undefined\") {\n var autoCountryPromise = new Promise(function (resolve, reject) {\n _this2.resolveAutoCountryPromise = resolve;\n _this2.rejectAutoCountryPromise = reject;\n });\n var utilsScriptPromise = new Promise(function (resolve, reject) {\n _this2.resolveUtilsScriptPromise = resolve;\n _this2.rejectUtilsScriptPromise = reject;\n });\n this.promise = Promise.all([autoCountryPromise, utilsScriptPromise]);\n } else {\n // prevent errors when Promise doesn't exist\n this.resolveAutoCountryPromise = this.rejectAutoCountryPromise = function () {};\n this.resolveUtilsScriptPromise = this.rejectUtilsScriptPromise = function () {};\n }\n // in various situations there could be no country selected initially, but we need to be able\n // to assume this variable exists\n this.selectedCountryData = {};\n // process all the data: onlyCountries, excludeCountries, preferredCountries etc\n this._processCountryData();\n // generate the markup\n this._generateMarkup();\n // set the initial state of the input value and the selected flag\n this._setInitialState();\n // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click\n this._initListeners();\n // utils script, and auto country\n this._initRequests();\n }\n }, {\n key: \"_processCountryData\",\n value: function _processCountryData() {\n // process onlyCountries or excludeCountries array if present\n this._processAllCountries();\n // process the countryCodes map\n this._processCountryCodes();\n // process the preferredCountries\n this._processPreferredCountries();\n // translate countries according to localizedCountries option\n if (this.options.localizedCountries) this._translateCountriesByLocale();\n // sort countries by name\n if (this.options.onlyCountries.length || this.options.localizedCountries) {\n this.countries.sort(this._countryNameSort);\n }\n }\n }, {\n key: \"_addCountryCode\",\n value: function _addCountryCode(iso2, countryCode, priority) {\n if (countryCode.length > this.countryCodeMaxLen) {\n this.countryCodeMaxLen = countryCode.length;\n }\n if (!this.countryCodes.hasOwnProperty(countryCode)) {\n this.countryCodes[countryCode] = [];\n }\n // bail if we already have this country for this countryCode\n for (var i = 0; i < this.countryCodes[countryCode].length; i++) {\n if (this.countryCodes[countryCode][i] === iso2) return;\n }\n // check for undefined as 0 is falsy\n var index = priority !== undefined ? priority : this.countryCodes[countryCode].length;\n this.countryCodes[countryCode][index] = iso2;\n }\n }, {\n key: \"_processAllCountries\",\n value: function _processAllCountries() {\n if (this.options.onlyCountries.length) {\n var lowerCaseOnlyCountries = this.options.onlyCountries.map(function (country) {\n return country.toLowerCase();\n });\n this.countries = allCountries.filter(function (country) {\n return lowerCaseOnlyCountries.indexOf(country.iso2) > -1;\n });\n } else if (this.options.excludeCountries.length) {\n var lowerCaseExcludeCountries = this.options.excludeCountries.map(function (country) {\n return country.toLowerCase();\n });\n this.countries = allCountries.filter(function (country) {\n return lowerCaseExcludeCountries.indexOf(country.iso2) === -1;\n });\n } else {\n this.countries = allCountries;\n }\n }\n }, {\n key: \"_translateCountriesByLocale\",\n value: function _translateCountriesByLocale() {\n for (var i = 0; i < this.countries.length; i++) {\n var iso = this.countries[i].iso2.toLowerCase();\n if (this.options.localizedCountries.hasOwnProperty(iso)) {\n this.countries[i].name = this.options.localizedCountries[iso];\n }\n }\n }\n }, {\n key: \"_countryNameSort\",\n value: function _countryNameSort(a, b) {\n return a.name.localeCompare(b.name);\n }\n }, {\n key: \"_processCountryCodes\",\n value: function _processCountryCodes() {\n this.countryCodeMaxLen = 0;\n // here we store just dial codes\n this.dialCodes = {};\n // here we store \"country codes\" (both dial codes and their area codes)\n this.countryCodes = {};\n // first: add dial codes\n for (var i = 0; i < this.countries.length; i++) {\n var c = this.countries[i];\n if (!this.dialCodes[c.dialCode]) this.dialCodes[c.dialCode] = true;\n this._addCountryCode(c.iso2, c.dialCode, c.priority);\n }\n // next: add area codes\n // this is a second loop over countries, to make sure we have all of the \"root\" countries\n // already in the map, so that we can access them, as each time we add an area code substring\n // to the map, we also need to include the \"root\" country's code, as that also matches\n for (var _i = 0; _i < this.countries.length; _i++) {\n var _c = this.countries[_i];\n // area codes\n if (_c.areaCodes) {\n var rootCountryCode = this.countryCodes[_c.dialCode][0];\n // for each area code\n for (var j = 0; j < _c.areaCodes.length; j++) {\n var areaCode = _c.areaCodes[j];\n // for each digit in the area code to add all partial matches as well\n for (var k = 1; k < areaCode.length; k++) {\n var partialDialCode = _c.dialCode + areaCode.substr(0, k);\n // start with the root country, as that also matches this dial code\n this._addCountryCode(rootCountryCode, partialDialCode);\n this._addCountryCode(_c.iso2, partialDialCode);\n }\n // add the full area code\n this._addCountryCode(_c.iso2, _c.dialCode + areaCode);\n }\n }\n }\n }\n }, {\n key: \"_processPreferredCountries\",\n value: function _processPreferredCountries() {\n this.preferredCountries = [];\n for (var i = 0; i < this.options.preferredCountries.length; i++) {\n var countryCode = this.options.preferredCountries[i].toLowerCase();\n var countryData = this._getCountryData(countryCode, false, true);\n if (countryData) this.preferredCountries.push(countryData);\n }\n }\n }, {\n key: \"_createEl\",\n value: function _createEl(name, attrs, container) {\n var el = document.createElement(name);\n if (attrs) forEachProp(attrs, function (key, value) {\n return el.setAttribute(key, value);\n });\n if (container) container.appendChild(el);\n return el;\n }\n }, {\n key: \"_generateMarkup\",\n value: function _generateMarkup() {\n // if autocomplete does not exist on the element and its form, then\n // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can\n // easily put the plugin in an inconsistent state e.g. the wrong flag selected for the\n // autocompleted number, which on submit could mean wrong number is saved (esp in nationalMode)\n if (!this.telInput.hasAttribute(\"autocomplete\") && !(this.telInput.form && this.telInput.form.hasAttribute(\"autocomplete\"))) {\n this.telInput.setAttribute(\"autocomplete\", \"off\");\n }\n // containers (mostly for positioning)\n var parentClass = \"iti\";\n if (this.options.allowDropdown) parentClass += \" iti--allow-dropdown\";\n if (this.options.separateDialCode) parentClass += \" iti--separate-dial-code\";\n if (this.options.customContainer) {\n parentClass += \" \";\n parentClass += this.options.customContainer;\n }\n var wrapper = this._createEl(\"div\", {\n \"class\": parentClass\n });\n this.telInput.parentNode.insertBefore(wrapper, this.telInput);\n this.flagsContainer = this._createEl(\"div\", {\n \"class\": \"iti__flag-container\"\n }, wrapper);\n wrapper.appendChild(this.telInput);\n // selected flag (displayed to left of input)\n this.selectedFlag = this._createEl(\"div\", {\n \"class\": \"iti__selected-flag\",\n role: \"combobox\",\n \"aria-controls\": \"iti-\".concat(this.id, \"__country-listbox\"),\n \"aria-owns\": \"iti-\".concat(this.id, \"__country-listbox\"),\n \"aria-expanded\": \"false\"\n }, this.flagsContainer);\n this.selectedFlagInner = this._createEl(\"div\", {\n \"class\": \"iti__flag\"\n }, this.selectedFlag);\n if (this.options.separateDialCode) {\n this.selectedDialCode = this._createEl(\"div\", {\n \"class\": \"iti__selected-dial-code\"\n }, this.selectedFlag);\n }\n if (this.options.allowDropdown) {\n // make element focusable and tab navigable\n this.selectedFlag.setAttribute(\"tabindex\", \"0\");\n this.dropdownArrow = this._createEl(\"div\", {\n \"class\": \"iti__arrow\"\n }, this.selectedFlag);\n // country dropdown: preferred countries, then divider, then all countries\n this.countryList = this._createEl(\"ul\", {\n \"class\": \"iti__country-list iti__hide\",\n id: \"iti-\".concat(this.id, \"__country-listbox\"),\n role: \"listbox\",\n \"aria-label\": \"List of countries\"\n });\n if (this.preferredCountries.length) {\n this._appendListItems(this.preferredCountries, \"iti__preferred\", true);\n this._createEl(\"li\", {\n \"class\": \"iti__divider\",\n role: \"separator\",\n \"aria-disabled\": \"true\"\n }, this.countryList);\n }\n this._appendListItems(this.countries, \"iti__standard\");\n // create dropdownContainer markup\n if (this.options.dropdownContainer) {\n this.dropdown = this._createEl(\"div\", {\n \"class\": \"iti iti--container\"\n });\n this.dropdown.appendChild(this.countryList);\n } else {\n this.flagsContainer.appendChild(this.countryList);\n }\n }\n if (this.options.hiddenInput) {\n var hiddenInputName = this.options.hiddenInput;\n var name = this.telInput.getAttribute(\"name\");\n if (name) {\n var i = name.lastIndexOf(\"[\");\n // if input name contains square brackets, then give the hidden input the same name,\n // replacing the contents of the last set of brackets with the given hiddenInput name\n if (i !== -1) hiddenInputName = \"\".concat(name.substr(0, i), \"[\").concat(hiddenInputName, \"]\");\n }\n this.hiddenInput = this._createEl(\"input\", {\n type: \"hidden\",\n name: hiddenInputName\n });\n wrapper.appendChild(this.hiddenInput);\n }\n }\n }, {\n key: \"_appendListItems\",\n value: function _appendListItems(countries, className, preferred) {\n // we create so many DOM elements, it is faster to build a temp string\n // and then add everything to the DOM in one go at the end\n var tmp = \"\";\n // for each country\n for (var i = 0; i < countries.length; i++) {\n var c = countries[i];\n var idSuffix = preferred ? \"-preferred\" : \"\";\n // open the list item\n tmp += \"
  • \");\n // add the flag\n tmp += \"
    \");\n // and the country name and dial code\n tmp += \"\".concat(c.name, \"\");\n tmp += \"+\".concat(c.dialCode, \"\");\n // close the list item\n tmp += \"
  • \";\n }\n this.countryList.insertAdjacentHTML(\"beforeend\", tmp);\n }\n }, {\n key: \"_setInitialState\",\n value: function _setInitialState() {\n // fix firefox bug: when first load page (with input with value set to number with intl dial\n // code) and initialising plugin removes the dial code from the input, then refresh page,\n // and we try to init plugin again but this time on number without dial code so get grey flag\n var attributeValue = this.telInput.getAttribute(\"value\");\n var inputValue = this.telInput.value;\n var useAttribute = attributeValue && attributeValue.charAt(0) === \"+\" && (!inputValue || inputValue.charAt(0) !== \"+\");\n var val = useAttribute ? attributeValue : inputValue;\n var dialCode = this._getDialCode(val);\n var isRegionlessNanp = this._isRegionlessNanp(val);\n var _this$options = this.options,\n initialCountry = _this$options.initialCountry,\n nationalMode = _this$options.nationalMode,\n autoHideDialCode = _this$options.autoHideDialCode,\n separateDialCode = _this$options.separateDialCode;\n // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the\n // flag, else fall back to the default country\n if (dialCode && !isRegionlessNanp) {\n this._updateFlagFromNumber(val);\n } else if (initialCountry !== \"auto\") {\n // see if we should select a flag\n if (initialCountry) {\n this._setFlag(initialCountry.toLowerCase());\n } else {\n if (dialCode && isRegionlessNanp) {\n // has intl dial code, is regionless nanp, and no initialCountry, so default to US\n this._setFlag(\"us\");\n } else {\n // no dial code and no initialCountry, so default to first in list\n this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2;\n if (!val) {\n this._setFlag(this.defaultCountry);\n }\n }\n }\n // if empty and no nationalMode and no autoHideDialCode then insert the default dial code\n if (!val && !nationalMode && !autoHideDialCode && !separateDialCode) {\n this.telInput.value = \"+\".concat(this.selectedCountryData.dialCode);\n }\n }\n // NOTE: if initialCountry is set to auto, that will be handled separately\n // format - note this wont be run after _updateDialCode as that's only called if no val\n if (val) this._updateValFromNumber(val);\n }\n }, {\n key: \"_initListeners\",\n value: function _initListeners() {\n this._initKeyListeners();\n if (this.options.autoHideDialCode) this._initBlurListeners();\n if (this.options.allowDropdown) this._initDropdownListeners();\n if (this.hiddenInput) this._initHiddenInputListener();\n }\n }, {\n key: \"_initHiddenInputListener\",\n value: function _initHiddenInputListener() {\n var _this3 = this;\n this._handleHiddenInputSubmit = function () {\n _this3.hiddenInput.value = _this3.getNumber();\n };\n if (this.telInput.form) this.telInput.form.addEventListener(\"submit\", this._handleHiddenInputSubmit);\n }\n }, {\n key: \"_getClosestLabel\",\n value: function _getClosestLabel() {\n var el = this.telInput;\n while (el && el.tagName !== \"LABEL\") {\n el = el.parentNode;\n }\n return el;\n }\n }, {\n key: \"_initDropdownListeners\",\n value: function _initDropdownListeners() {\n var _this4 = this;\n // hack for input nested inside label (which is valid markup): clicking the selected-flag to\n // open the dropdown would then automatically trigger a 2nd click on the input which would\n // close it again\n this._handleLabelClick = function (e) {\n // if the dropdown is closed, then focus the input, else ignore the click\n if (_this4.countryList.classList.contains(\"iti__hide\")) _this4.telInput.focus();else e.preventDefault();\n };\n var label = this._getClosestLabel();\n if (label) label.addEventListener(\"click\", this._handleLabelClick);\n // toggle country dropdown on click\n this._handleClickSelectedFlag = function () {\n // only intercept this event if we're opening the dropdown\n // else let it bubble up to the top (\"click-off-to-close\" listener)\n // we cannot just stopPropagation as it may be needed to close another instance\n if (_this4.countryList.classList.contains(\"iti__hide\") && !_this4.telInput.disabled && !_this4.telInput.readOnly) {\n _this4._showDropdown();\n }\n };\n this.selectedFlag.addEventListener(\"click\", this._handleClickSelectedFlag);\n // open dropdown list if currently focused\n this._handleFlagsContainerKeydown = function (e) {\n var isDropdownHidden = _this4.countryList.classList.contains(\"iti__hide\");\n if (isDropdownHidden && [\"ArrowUp\", \"Up\", \"ArrowDown\", \"Down\", \" \", \"Enter\"].indexOf(e.key) !== -1) {\n // prevent form from being submitted if \"ENTER\" was pressed\n e.preventDefault();\n // prevent event from being handled again by document\n e.stopPropagation();\n _this4._showDropdown();\n }\n // allow navigation from dropdown to input on TAB\n if (e.key === \"Tab\") _this4._closeDropdown();\n };\n this.flagsContainer.addEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n }\n }, {\n key: \"_initRequests\",\n value: function _initRequests() {\n var _this5 = this;\n // if the user has specified the path to the utils script, fetch it on window.load, else resolve\n if (this.options.utilsScript && !window.intlTelInputUtils) {\n // if the plugin is being initialised after the window.load event has already been fired\n if (window.intlTelInputGlobals.documentReady()) {\n window.intlTelInputGlobals.loadUtils(this.options.utilsScript);\n } else {\n // wait until the load event so we don't block any other requests e.g. the flags image\n window.addEventListener(\"load\", function () {\n window.intlTelInputGlobals.loadUtils(_this5.options.utilsScript);\n });\n }\n } else this.resolveUtilsScriptPromise();\n if (this.options.initialCountry === \"auto\") this._loadAutoCountry();else this.resolveAutoCountryPromise();\n }\n }, {\n key: \"_loadAutoCountry\",\n value: function _loadAutoCountry() {\n // 3 options:\n // 1) already loaded (we're done)\n // 2) not already started loading (start)\n // 3) already started loading (do nothing - just wait for loading callback to fire)\n if (window.intlTelInputGlobals.autoCountry) {\n this.handleAutoCountry();\n } else if (!window.intlTelInputGlobals.startedLoadingAutoCountry) {\n // don't do this twice!\n window.intlTelInputGlobals.startedLoadingAutoCountry = true;\n if (typeof this.options.geoIpLookup === \"function\") {\n this.options.geoIpLookup(function (countryCode) {\n window.intlTelInputGlobals.autoCountry = countryCode.toLowerCase();\n // tell all instances the auto country is ready\n // TODO: this should just be the current instances\n // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight\n // away (e.g. if they have already done the geo ip lookup somewhere else). Using\n // setTimeout means that the current thread of execution will finish before executing\n // this, which allows the plugin to finish initialising.\n setTimeout(function () {\n return forEachInstance(\"handleAutoCountry\");\n });\n }, function () {\n return forEachInstance(\"rejectAutoCountryPromise\");\n });\n }\n }\n }\n }, {\n key: \"_initKeyListeners\",\n value: function _initKeyListeners() {\n var _this6 = this;\n // update flag on keyup\n this._handleKeyupEvent = function () {\n if (_this6._updateFlagFromNumber(_this6.telInput.value)) {\n _this6._triggerCountryChange();\n }\n };\n this.telInput.addEventListener(\"keyup\", this._handleKeyupEvent);\n // update flag on cut/paste events (now supported in all major browsers)\n this._handleClipboardEvent = function () {\n // hack because \"paste\" event is fired before input is updated\n setTimeout(_this6._handleKeyupEvent);\n };\n this.telInput.addEventListener(\"cut\", this._handleClipboardEvent);\n this.telInput.addEventListener(\"paste\", this._handleClipboardEvent);\n }\n }, {\n key: \"_cap\",\n value: function _cap(number) {\n var max = this.telInput.getAttribute(\"maxlength\");\n return max && number.length > max ? number.substr(0, max) : number;\n }\n }, {\n key: \"_initBlurListeners\",\n value: function _initBlurListeners() {\n var _this7 = this;\n // on blur or form submit: if just a dial code then remove it\n this._handleSubmitOrBlurEvent = function () {\n _this7._removeEmptyDialCode();\n };\n if (this.telInput.form) this.telInput.form.addEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n this.telInput.addEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n }\n }, {\n key: \"_removeEmptyDialCode\",\n value: function _removeEmptyDialCode() {\n if (this.telInput.value.charAt(0) === \"+\") {\n var numeric = this._getNumeric(this.telInput.value);\n // if just a plus, or if just a dial code\n if (!numeric || this.selectedCountryData.dialCode === numeric) {\n this.telInput.value = \"\";\n }\n }\n }\n }, {\n key: \"_getNumeric\",\n value: function _getNumeric(s) {\n return s.replace(/\\D/g, \"\");\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(name) {\n // have to use old school document.createEvent as IE11 doesn't support `new Event()` syntax\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n // can bubble, and is cancellable\n this.telInput.dispatchEvent(e);\n }\n }, {\n key: \"_showDropdown\",\n value: function _showDropdown() {\n this.countryList.classList.remove(\"iti__hide\");\n this.selectedFlag.setAttribute(\"aria-expanded\", \"true\");\n this._setDropdownPosition();\n // update highlighting and scroll to active list item\n if (this.activeItem) {\n this._highlightListItem(this.activeItem, false);\n this._scrollTo(this.activeItem, true);\n }\n // bind all the dropdown-related listeners: mouseover, click, click-off, keydown\n this._bindDropdownListeners();\n // update the arrow\n this.dropdownArrow.classList.add(\"iti__arrow--up\");\n this._trigger(\"open:countrydropdown\");\n }\n }, {\n key: \"_toggleClass\",\n value: function _toggleClass(el, className, shouldHaveClass) {\n if (shouldHaveClass && !el.classList.contains(className)) el.classList.add(className);else if (!shouldHaveClass && el.classList.contains(className)) el.classList.remove(className);\n }\n }, {\n key: \"_setDropdownPosition\",\n value: function _setDropdownPosition() {\n var _this8 = this;\n if (this.options.dropdownContainer) {\n this.options.dropdownContainer.appendChild(this.dropdown);\n }\n if (!this.isMobile) {\n var pos = this.telInput.getBoundingClientRect();\n // windowTop from https://stackoverflow.com/a/14384091/217866\n var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n var inputTop = pos.top + windowTop;\n var dropdownHeight = this.countryList.offsetHeight;\n // dropdownFitsBelow = (dropdownBottom < windowBottom)\n var dropdownFitsBelow = inputTop + this.telInput.offsetHeight + dropdownHeight < windowTop + window.innerHeight;\n var dropdownFitsAbove = inputTop - dropdownHeight > windowTop;\n // by default, the dropdown will be below the input. If we want to position it above the\n // input, we add the dropup class.\n this._toggleClass(this.countryList, \"iti__country-list--dropup\", !dropdownFitsBelow && dropdownFitsAbove);\n // if dropdownContainer is enabled, calculate postion\n if (this.options.dropdownContainer) {\n // by default the dropdown will be directly over the input because it's not in the flow.\n // If we want to position it below, we need to add some extra top value.\n var extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.offsetHeight;\n // calculate placement\n this.dropdown.style.top = \"\".concat(inputTop + extraTop, \"px\");\n this.dropdown.style.left = \"\".concat(pos.left + document.body.scrollLeft, \"px\");\n // close menu on window scroll\n this._handleWindowScroll = function () {\n return _this8._closeDropdown();\n };\n window.addEventListener(\"scroll\", this._handleWindowScroll);\n }\n }\n }\n }, {\n key: \"_getClosestListItem\",\n value: function _getClosestListItem(target) {\n var el = target;\n while (el && el !== this.countryList && !el.classList.contains(\"iti__country\")) {\n el = el.parentNode;\n }\n // if we reached the countryList element, then return null\n return el === this.countryList ? null : el;\n }\n }, {\n key: \"_bindDropdownListeners\",\n value: function _bindDropdownListeners() {\n var _this9 = this;\n // when mouse over a list item, just highlight that one\n // we add the class \"highlight\", so if they hit \"enter\" we know which one to select\n this._handleMouseoverCountryList = function (e) {\n // handle event delegation, as we're listening for this event on the countryList\n var listItem = _this9._getClosestListItem(e.target);\n if (listItem) _this9._highlightListItem(listItem, false);\n };\n this.countryList.addEventListener(\"mouseover\", this._handleMouseoverCountryList);\n // listen for country selection\n this._handleClickCountryList = function (e) {\n var listItem = _this9._getClosestListItem(e.target);\n if (listItem) _this9._selectListItem(listItem);\n };\n this.countryList.addEventListener(\"click\", this._handleClickCountryList);\n // click off to close\n // (except when this initial opening click is bubbling up)\n // we cannot just stopPropagation as it may be needed to close another instance\n var isOpening = true;\n this._handleClickOffToClose = function () {\n if (!isOpening) _this9._closeDropdown();\n isOpening = false;\n };\n document.documentElement.addEventListener(\"click\", this._handleClickOffToClose);\n // listen for up/down scrolling, enter to select, or letters to jump to country name.\n // use keydown as keypress doesn't fire for non-char keys and we want to catch if they\n // just hit down and hold it to scroll down (no keyup event).\n // listen on the document because that's where key events are triggered if no input has focus\n var query = \"\";\n var queryTimer = null;\n this._handleKeydownOnDropdown = function (e) {\n // prevent down key from scrolling the whole page,\n // and enter key from submitting a form etc\n e.preventDefault();\n // up and down to navigate\n if (e.key === \"ArrowUp\" || e.key === \"Up\" || e.key === \"ArrowDown\" || e.key === \"Down\") _this9._handleUpDownKey(e.key);else if (e.key === \"Enter\") _this9._handleEnterKey();else if (e.key === \"Escape\") _this9._closeDropdown();else if (/^[a-zA-ZÀ-ÿа-яА-Я ]$/.test(e.key)) {\n // jump to countries that start with the query string\n if (queryTimer) clearTimeout(queryTimer);\n query += e.key.toLowerCase();\n _this9._searchForCountry(query);\n // if the timer hits 1 second, reset the query\n queryTimer = setTimeout(function () {\n query = \"\";\n }, 1e3);\n }\n };\n document.addEventListener(\"keydown\", this._handleKeydownOnDropdown);\n }\n }, {\n key: \"_handleUpDownKey\",\n value: function _handleUpDownKey(key) {\n var next = key === \"ArrowUp\" || key === \"Up\" ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling;\n if (next) {\n // skip the divider\n if (next.classList.contains(\"iti__divider\")) {\n next = key === \"ArrowUp\" || key === \"Up\" ? next.previousElementSibling : next.nextElementSibling;\n }\n this._highlightListItem(next, true);\n }\n }\n }, {\n key: \"_handleEnterKey\",\n value: function _handleEnterKey() {\n if (this.highlightedItem) this._selectListItem(this.highlightedItem);\n }\n }, {\n key: \"_searchForCountry\",\n value: function _searchForCountry(query) {\n for (var i = 0; i < this.countries.length; i++) {\n if (this._startsWith(this.countries[i].name, query)) {\n var listItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(this.countries[i].iso2));\n // update highlighting and scroll\n this._highlightListItem(listItem, false);\n this._scrollTo(listItem, true);\n break;\n }\n }\n }\n }, {\n key: \"_startsWith\",\n value: function _startsWith(a, b) {\n return a.substr(0, b.length).toLowerCase() === b;\n }\n }, {\n key: \"_updateValFromNumber\",\n value: function _updateValFromNumber(originalNumber) {\n var number = originalNumber;\n if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {\n var useNational = !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) !== \"+\");\n var _intlTelInputUtils$nu = intlTelInputUtils.numberFormat,\n NATIONAL = _intlTelInputUtils$nu.NATIONAL,\n INTERNATIONAL = _intlTelInputUtils$nu.INTERNATIONAL;\n var format = useNational ? NATIONAL : INTERNATIONAL;\n number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format);\n }\n number = this._beforeSetNumber(number);\n this.telInput.value = number;\n }\n }, {\n key: \"_updateFlagFromNumber\",\n value: function _updateFlagFromNumber(originalNumber) {\n // if we're in nationalMode and we already have US/Canada selected, make sure the number starts\n // with a +1 so _getDialCode will be able to extract the area code\n // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag\n // from the number), that means we're initialising the plugin with a number that already has a\n // dial code, so fine to ignore this bit\n var number = originalNumber;\n var selectedDialCode = this.selectedCountryData.dialCode;\n var isNanp = selectedDialCode === \"1\";\n if (number && this.options.nationalMode && isNanp && number.charAt(0) !== \"+\") {\n if (number.charAt(0) !== \"1\") number = \"1\".concat(number);\n number = \"+\".concat(number);\n }\n // update flag if user types area code for another country\n if (this.options.separateDialCode && selectedDialCode && number.charAt(0) !== \"+\") {\n number = \"+\".concat(selectedDialCode).concat(number);\n }\n // try and extract valid dial code from input\n var dialCode = this._getDialCode(number, true);\n var numeric = this._getNumeric(number);\n var countryCode = null;\n if (dialCode) {\n var countryCodes = this.countryCodes[this._getNumeric(dialCode)];\n // check if the right country is already selected. this should be false if the number is\n // longer than the matched dial code because in this case we need to make sure that if\n // there are multiple country matches, that the first one is selected (note: we could\n // just check that here, but it requires the same loop that we already have later)\n var alreadySelected = countryCodes.indexOf(this.selectedCountryData.iso2) !== -1 && numeric.length <= dialCode.length - 1;\n var isRegionlessNanpNumber = selectedDialCode === \"1\" && this._isRegionlessNanp(numeric);\n // only update the flag if:\n // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp)\n // AND\n // B) the right country is not already selected\n if (!isRegionlessNanpNumber && !alreadySelected) {\n // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first\n // non-empty index\n for (var j = 0; j < countryCodes.length; j++) {\n if (countryCodes[j]) {\n countryCode = countryCodes[j];\n break;\n }\n }\n }\n } else if (number.charAt(0) === \"+\" && numeric.length) {\n // invalid dial code, so empty\n // Note: use getNumeric here because the number has not been formatted yet, so could contain\n // bad chars\n countryCode = \"\";\n } else if (!number || number === \"+\") {\n // empty, or just a plus, so default\n countryCode = this.defaultCountry;\n }\n if (countryCode !== null) {\n return this._setFlag(countryCode);\n }\n return false;\n }\n }, {\n key: \"_isRegionlessNanp\",\n value: function _isRegionlessNanp(number) {\n var numeric = this._getNumeric(number);\n if (numeric.charAt(0) === \"1\") {\n var areaCode = numeric.substr(1, 3);\n return regionlessNanpNumbers.indexOf(areaCode) !== -1;\n }\n return false;\n }\n }, {\n key: \"_highlightListItem\",\n value: function _highlightListItem(listItem, shouldFocus) {\n var prevItem = this.highlightedItem;\n if (prevItem) prevItem.classList.remove(\"iti__highlight\");\n this.highlightedItem = listItem;\n this.highlightedItem.classList.add(\"iti__highlight\");\n if (shouldFocus) this.highlightedItem.focus();\n }\n }, {\n key: \"_getCountryData\",\n value: function _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) {\n var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries;\n for (var i = 0; i < countryList.length; i++) {\n if (countryList[i].iso2 === countryCode) {\n return countryList[i];\n }\n }\n if (allowFail) {\n return null;\n }\n throw new Error(\"No country data for '\".concat(countryCode, \"'\"));\n }\n }, {\n key: \"_setFlag\",\n value: function _setFlag(countryCode) {\n var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {};\n // do this first as it will throw an error and stop if countryCode is invalid\n this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {};\n // update the defaultCountry - we only need the iso2 from now on, so just store that\n if (this.selectedCountryData.iso2) {\n this.defaultCountry = this.selectedCountryData.iso2;\n }\n this.selectedFlagInner.setAttribute(\"class\", \"iti__flag iti__\".concat(countryCode));\n // update the selected country's title attribute\n var title = countryCode ? \"\".concat(this.selectedCountryData.name, \": +\").concat(this.selectedCountryData.dialCode) : \"Unknown\";\n this.selectedFlag.setAttribute(\"title\", title);\n if (this.options.separateDialCode) {\n var dialCode = this.selectedCountryData.dialCode ? \"+\".concat(this.selectedCountryData.dialCode) : \"\";\n this.selectedDialCode.innerHTML = dialCode;\n // offsetWidth is zero if input is in a hidden container during initialisation\n var selectedFlagWidth = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth();\n // add 6px of padding after the grey selected-dial-code box, as this is what we use in the css\n this.telInput.style.paddingLeft = \"\".concat(selectedFlagWidth + 6, \"px\");\n }\n // and the input's placeholder\n this._updatePlaceholder();\n // update the active list item\n if (this.options.allowDropdown) {\n var prevItem = this.activeItem;\n if (prevItem) {\n prevItem.classList.remove(\"iti__active\");\n prevItem.setAttribute(\"aria-selected\", \"false\");\n }\n if (countryCode) {\n // check if there is a preferred item first, else fall back to standard\n var nextItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode, \"-preferred\")) || this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode));\n nextItem.setAttribute(\"aria-selected\", \"true\");\n nextItem.classList.add(\"iti__active\");\n this.activeItem = nextItem;\n this.selectedFlag.setAttribute(\"aria-activedescendant\", nextItem.getAttribute(\"id\"));\n }\n }\n // return if the flag has changed or not\n return prevCountry.iso2 !== countryCode;\n }\n }, {\n key: \"_getHiddenSelectedFlagWidth\",\n value: function _getHiddenSelectedFlagWidth() {\n // to get the right styling to apply, all we need is a shallow clone of the container,\n // and then to inject a deep clone of the selectedFlag element\n var containerClone = this.telInput.parentNode.cloneNode();\n containerClone.style.visibility = \"hidden\";\n document.body.appendChild(containerClone);\n var flagsContainerClone = this.flagsContainer.cloneNode();\n containerClone.appendChild(flagsContainerClone);\n var selectedFlagClone = this.selectedFlag.cloneNode(true);\n flagsContainerClone.appendChild(selectedFlagClone);\n var width = selectedFlagClone.offsetWidth;\n containerClone.parentNode.removeChild(containerClone);\n return width;\n }\n }, {\n key: \"_updatePlaceholder\",\n value: function _updatePlaceholder() {\n var shouldSetPlaceholder = this.options.autoPlaceholder === \"aggressive\" || !this.hadInitialPlaceholder && this.options.autoPlaceholder === \"polite\";\n if (window.intlTelInputUtils && shouldSetPlaceholder) {\n var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType];\n var placeholder = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : \"\";\n placeholder = this._beforeSetNumber(placeholder);\n if (typeof this.options.customPlaceholder === \"function\") {\n placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData);\n }\n this.telInput.setAttribute(\"placeholder\", placeholder);\n }\n }\n }, {\n key: \"_selectListItem\",\n value: function _selectListItem(listItem) {\n // update selected flag and active list item\n var flagChanged = this._setFlag(listItem.getAttribute(\"data-country-code\"));\n this._closeDropdown();\n this._updateDialCode(listItem.getAttribute(\"data-dial-code\"), true);\n // focus the input\n this.telInput.focus();\n // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto\n // inserting dial code), who try to put the cursor at the beginning the first time\n var len = this.telInput.value.length;\n this.telInput.setSelectionRange(len, len);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"_closeDropdown\",\n value: function _closeDropdown() {\n this.countryList.classList.add(\"iti__hide\");\n this.selectedFlag.setAttribute(\"aria-expanded\", \"false\");\n // update the arrow\n this.dropdownArrow.classList.remove(\"iti__arrow--up\");\n // unbind key events\n document.removeEventListener(\"keydown\", this._handleKeydownOnDropdown);\n document.documentElement.removeEventListener(\"click\", this._handleClickOffToClose);\n this.countryList.removeEventListener(\"mouseover\", this._handleMouseoverCountryList);\n this.countryList.removeEventListener(\"click\", this._handleClickCountryList);\n // remove menu from container\n if (this.options.dropdownContainer) {\n if (!this.isMobile) window.removeEventListener(\"scroll\", this._handleWindowScroll);\n if (this.dropdown.parentNode) this.dropdown.parentNode.removeChild(this.dropdown);\n }\n this._trigger(\"close:countrydropdown\");\n }\n }, {\n key: \"_scrollTo\",\n value: function _scrollTo(element, middle) {\n var container = this.countryList;\n // windowTop from https://stackoverflow.com/a/14384091/217866\n var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n var containerHeight = container.offsetHeight;\n var containerTop = container.getBoundingClientRect().top + windowTop;\n var containerBottom = containerTop + containerHeight;\n var elementHeight = element.offsetHeight;\n var elementTop = element.getBoundingClientRect().top + windowTop;\n var elementBottom = elementTop + elementHeight;\n var newScrollTop = elementTop - containerTop + container.scrollTop;\n var middleOffset = containerHeight / 2 - elementHeight / 2;\n if (elementTop < containerTop) {\n // scroll up\n if (middle) newScrollTop -= middleOffset;\n container.scrollTop = newScrollTop;\n } else if (elementBottom > containerBottom) {\n // scroll down\n if (middle) newScrollTop += middleOffset;\n var heightDifference = containerHeight - elementHeight;\n container.scrollTop = newScrollTop - heightDifference;\n }\n }\n }, {\n key: \"_updateDialCode\",\n value: function _updateDialCode(newDialCodeBare, hasSelectedListItem) {\n var inputVal = this.telInput.value;\n // save having to pass this every time\n var newDialCode = \"+\".concat(newDialCodeBare);\n var newNumber;\n if (inputVal.charAt(0) === \"+\") {\n // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not)\n var prevDialCode = this._getDialCode(inputVal);\n if (prevDialCode) {\n // current number contains a valid dial code, so replace it\n newNumber = inputVal.replace(prevDialCode, newDialCode);\n } else {\n // current number contains an invalid dial code, so ditch it\n // (no way to determine where the invalid dial code ends and the rest of the number begins)\n newNumber = newDialCode;\n }\n } else if (this.options.nationalMode || this.options.separateDialCode) {\n // don't do anything\n return;\n } else {\n // nationalMode is disabled\n if (inputVal) {\n // there is an existing value with no dial code: prefix the new dial code\n newNumber = newDialCode + inputVal;\n } else if (hasSelectedListItem || !this.options.autoHideDialCode) {\n // no existing value and either they've just selected a list item, or autoHideDialCode is\n // disabled: insert new dial code\n newNumber = newDialCode;\n } else {\n return;\n }\n }\n this.telInput.value = newNumber;\n }\n }, {\n key: \"_getDialCode\",\n value: function _getDialCode(number, includeAreaCode) {\n var dialCode = \"\";\n // only interested in international numbers (starting with a plus)\n if (number.charAt(0) === \"+\") {\n var numericChars = \"\";\n // iterate over chars\n for (var i = 0; i < number.length; i++) {\n var c = number.charAt(i);\n // if char is number (https://stackoverflow.com/a/8935649/217866)\n if (!isNaN(parseInt(c, 10))) {\n numericChars += c;\n // if current numericChars make a valid dial code\n if (includeAreaCode) {\n if (this.countryCodes[numericChars]) {\n // store the actual raw string (useful for matching later)\n dialCode = number.substr(0, i + 1);\n }\n } else {\n if (this.dialCodes[numericChars]) {\n dialCode = number.substr(0, i + 1);\n // if we're just looking for a dial code, we can break as soon as we find one\n break;\n }\n }\n // stop searching as soon as we can - in this case when we hit max len\n if (numericChars.length === this.countryCodeMaxLen) {\n break;\n }\n }\n }\n }\n return dialCode;\n }\n }, {\n key: \"_getFullNumber\",\n value: function _getFullNumber() {\n var val = this.telInput.value.trim();\n var dialCode = this.selectedCountryData.dialCode;\n var prefix;\n var numericVal = this._getNumeric(val);\n if (this.options.separateDialCode && val.charAt(0) !== \"+\" && dialCode && numericVal) {\n // when using separateDialCode, it is visible so is effectively part of the typed number\n prefix = \"+\".concat(dialCode);\n } else {\n prefix = \"\";\n }\n return prefix + val;\n }\n }, {\n key: \"_beforeSetNumber\",\n value: function _beforeSetNumber(originalNumber) {\n var number = originalNumber;\n if (this.options.separateDialCode) {\n var dialCode = this._getDialCode(number);\n // if there is a valid dial code\n if (dialCode) {\n // in case _getDialCode returned an area code as well\n dialCode = \"+\".concat(this.selectedCountryData.dialCode);\n // a lot of numbers will have a space separating the dial code and the main number, and\n // some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get\n // rid of it\n // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc\n var start = number[dialCode.length] === \" \" || number[dialCode.length] === \"-\" ? dialCode.length + 1 : dialCode.length;\n number = number.substr(start);\n }\n }\n return this._cap(number);\n }\n }, {\n key: \"_triggerCountryChange\",\n value: function _triggerCountryChange() {\n this._trigger(\"countrychange\");\n }\n }, {\n key: \"handleAutoCountry\",\n value: function handleAutoCountry() {\n if (this.options.initialCountry === \"auto\") {\n // we must set this even if there is an initial val in the input: in case the initial val is\n // invalid and they delete it - they should see their auto country\n this.defaultCountry = window.intlTelInputGlobals.autoCountry;\n // if there's no initial value in the input, then update the flag\n if (!this.telInput.value) {\n this.setCountry(this.defaultCountry);\n }\n this.resolveAutoCountryPromise();\n }\n }\n }, {\n key: \"handleUtils\",\n value: function handleUtils() {\n // if the request was successful\n if (window.intlTelInputUtils) {\n // if there's an initial value in the input, then format it\n if (this.telInput.value) {\n this._updateValFromNumber(this.telInput.value);\n }\n this._updatePlaceholder();\n }\n this.resolveUtilsScriptPromise();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var form = this.telInput.form;\n if (this.options.allowDropdown) {\n // make sure the dropdown is closed (and unbind listeners)\n this._closeDropdown();\n this.selectedFlag.removeEventListener(\"click\", this._handleClickSelectedFlag);\n this.flagsContainer.removeEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n // label click hack\n var label = this._getClosestLabel();\n if (label) label.removeEventListener(\"click\", this._handleLabelClick);\n }\n // unbind hiddenInput listeners\n if (this.hiddenInput && form) form.removeEventListener(\"submit\", this._handleHiddenInputSubmit);\n // unbind autoHideDialCode listeners\n if (this.options.autoHideDialCode) {\n if (form) form.removeEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n this.telInput.removeEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n }\n // unbind key events, and cut/paste events\n this.telInput.removeEventListener(\"keyup\", this._handleKeyupEvent);\n this.telInput.removeEventListener(\"cut\", this._handleClipboardEvent);\n this.telInput.removeEventListener(\"paste\", this._handleClipboardEvent);\n // remove attribute of id instance: data-intl-tel-input-id\n this.telInput.removeAttribute(\"data-intl-tel-input-id\");\n // remove markup (but leave the original input)\n var wrapper = this.telInput.parentNode;\n wrapper.parentNode.insertBefore(this.telInput, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n delete window.intlTelInputGlobals.instances[this.id];\n }\n }, {\n key: \"getExtension\",\n value: function getExtension() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return \"\";\n }\n }, {\n key: \"getNumber\",\n value: function getNumber(format) {\n if (window.intlTelInputUtils) {\n var iso2 = this.selectedCountryData.iso2;\n return intlTelInputUtils.formatNumber(this._getFullNumber(), iso2, format);\n }\n return \"\";\n }\n }, {\n key: \"getNumberType\",\n value: function getNumberType() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return -99;\n }\n }, {\n key: \"getSelectedCountryData\",\n value: function getSelectedCountryData() {\n return this.selectedCountryData;\n }\n }, {\n key: \"getValidationError\",\n value: function getValidationError() {\n if (window.intlTelInputUtils) {\n var iso2 = this.selectedCountryData.iso2;\n return intlTelInputUtils.getValidationError(this._getFullNumber(), iso2);\n }\n return -99;\n }\n }, {\n key: \"isValidNumber\",\n value: function isValidNumber() {\n var val = this._getFullNumber().trim();\n var countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : \"\";\n return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null;\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(originalCountryCode) {\n var countryCode = originalCountryCode.toLowerCase();\n // check if already selected\n if (!this.selectedFlagInner.classList.contains(\"iti__\".concat(countryCode))) {\n this._setFlag(countryCode);\n this._updateDialCode(this.selectedCountryData.dialCode, false);\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"setNumber\",\n value: function setNumber(number) {\n // we must update the flag first, which updates this.selectedCountryData, which is used for\n // formatting the number before displaying it\n var flagChanged = this._updateFlagFromNumber(number);\n this._updateValFromNumber(number);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"setPlaceholderNumberType\",\n value: function setPlaceholderNumberType(type) {\n this.options.placeholderNumberType = type;\n this._updatePlaceholder();\n }\n }]);\n return Iti;\n }();\n /********************\n * STATIC METHODS\n ********************/\n // get the country data object\n intlTelInputGlobals.getCountryData = function () {\n return allCountries;\n };\n // inject a