{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/double-dollar/index.js","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./Cornmarket/UI/src/scripts/modules/BlockClick.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///../src/utils/dom.js","webpack:///../src/utils/utils.js","webpack:///../src/utils/support.js","webpack:///../src/utils/class.js","webpack:///../src/components/core/update/index.js","webpack:///../src/components/core/update/updateSize.js","webpack:///../src/components/core/update/updateSlides.js","webpack:///../src/components/core/update/updateAutoHeight.js","webpack:///../src/components/core/update/updateSlidesOffset.js","webpack:///../src/components/core/update/updateSlidesProgress.js","webpack:///../src/components/core/update/updateProgress.js","webpack:///../src/components/core/update/updateSlidesClasses.js","webpack:///../src/components/core/update/updateActiveIndex.js","webpack:///../src/components/core/update/updateClickedSlide.js","webpack:///../src/components/core/translate/index.js","webpack:///../src/components/core/translate/getTranslate.js","webpack:///../src/components/core/translate/setTranslate.js","webpack:///../src/components/core/translate/minTranslate.js","webpack:///../src/components/core/translate/maxTranslate.js","webpack:///../src/components/core/translate/translateTo.js","webpack:///../src/components/core/transition/index.js","webpack:///../src/components/core/transition/setTransition.js","webpack:///../src/components/core/transition/transitionStart.js","webpack:///../src/components/core/transition/transitionEnd.js","webpack:///../src/components/core/slide/index.js","webpack:///../src/components/core/slide/slideTo.js","webpack:///../src/components/core/slide/slideToLoop.js","webpack:///../src/components/core/slide/slideNext.js","webpack:///../src/components/core/slide/slidePrev.js","webpack:///../src/components/core/slide/slideReset.js","webpack:///../src/components/core/slide/slideToClosest.js","webpack:///../src/components/core/slide/slideToClickedSlide.js","webpack:///../src/components/core/loop/index.js","webpack:///../src/components/core/loop/loopCreate.js","webpack:///../src/components/core/loop/loopFix.js","webpack:///../src/components/core/loop/loopDestroy.js","webpack:///../src/components/core/grab-cursor/index.js","webpack:///../src/components/core/grab-cursor/setGrabCursor.js","webpack:///../src/components/core/grab-cursor/unsetGrabCursor.js","webpack:///../src/components/core/manipulation/index.js","webpack:///../src/utils/device.js","webpack:///../src/components/core/manipulation/appendSlide.js","webpack:///../src/components/core/manipulation/prependSlide.js","webpack:///../src/components/core/manipulation/addSlide.js","webpack:///../src/components/core/manipulation/removeSlide.js","webpack:///../src/components/core/manipulation/removeAllSlides.js","webpack:///../src/components/core/events/onTouchStart.js","webpack:///../src/components/core/events/onTouchMove.js","webpack:///../src/components/core/events/onTouchEnd.js","webpack:///../src/components/core/events/onResize.js","webpack:///../src/components/core/events/onClick.js","webpack:///../src/components/core/events/onScroll.js","webpack:///../src/components/core/events/index.js","webpack:///../src/components/core/check-overflow/index.js","webpack:///../src/components/core/defaults.js","webpack:///../src/components/core/core-class.js","webpack:///../src/components/core/breakpoints/index.js","webpack:///../src/components/core/breakpoints/setBreakpoint.js","webpack:///../src/components/core/breakpoints/getBreakpoint.js","webpack:///../src/components/core/classes/index.js","webpack:///../src/components/core/classes/addClasses.js","webpack:///../src/components/core/classes/removeClasses.js","webpack:///../src/components/core/images/index.js","webpack:///../src/components/core/images/loadImage.js","webpack:///../src/components/core/images/preloadImages.js","webpack:///../src/modules/device/device.js","webpack:///../src/modules/support/support.js","webpack:///../src/utils/browser.js","webpack:///../src/modules/browser/browser.js","webpack:///../src/modules/resize/resize.js","webpack:///../src/modules/observer/observer.js","webpack:///../src/components/mousewheel/mousewheel.js","webpack:///../src/components/navigation/navigation.js","webpack:///../src/components/pagination/pagination.js","webpack:///../src/components/a11y/a11y.js","webpack:///../src/swiper.js","webpack:///./Cornmarket/UI/src/scripts/modules/Carousel.js","webpack:///./node_modules/micromodal/dist/micromodal.es.js","webpack:///./Cornmarket/UI/src/scripts/modules/Modal.js","webpack:///./Cornmarket/UI/src/scripts/config/breakpoints.js","webpack:///./Cornmarket/UI/src/scripts/modules/NarrowNav.js","webpack:///./Cornmarket/UI/src/scripts/modules/Scroll.js","webpack:///./node_modules/prismic-javascript/esm/prismic-javascript.mjs","webpack:///./Cornmarket/UI/src/scripts/utils/prismic.js","webpack:///./Cornmarket/UI/src/scripts/api/getOrganisations.js","webpack:///./Cornmarket/UI/src/scripts/api/getOrgansationsSP.js","webpack:///./Cornmarket/UI/src/scripts/api/getZendeskData.js","webpack:///./Cornmarket/UI/src/scripts/api/addressSearch.js","webpack:///./Cornmarket/UI/src/scripts/modules/Selector.js","webpack:///./Cornmarket/UI/src/scripts/modules/ShowMore.js","webpack:///./Cornmarket/UI/src/scripts/modules/Video.js","webpack:///./Cornmarket/UI/src/scripts/utils/pointerEvents.js","webpack:///./Cornmarket/UI/src/scripts/modules/WideNav.js","webpack:///./Cornmarket/UI/src/scripts/modules/Accordion.js","webpack:///./Cornmarket/UI/src/scripts/modules/FAQList.js","webpack:///./Cornmarket/UI/src/scripts/modules/FeaturedContentCard.js","webpack:///./Cornmarket/UI/src/scripts/modules/Tab.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./Cornmarket/UI/src/scripts/modules/Cookie.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./Cornmarket/UI/src/scripts/modules/PolicyCard.js","webpack:///./Cornmarket/UI/src/scripts/modules/ContactUsCard.js","webpack:///./Cornmarket/UI/src/scripts/modules/CallbackForm.js","webpack:///./Cornmarket/UI/src/scripts/modules/CTAContainer.js","webpack:///./Cornmarket/UI/src/scripts/modules/Claim.js","webpack:///./Cornmarket/UI/src/scripts/modules/handRaising.js","webpack:///./Cornmarket/UI/src/scripts/modules/jobCount.js","webpack:///./node_modules/date-fns/esm/isLeapYear/index.js","webpack:///./Cornmarket/UI/src/scripts/modules/Calculator.js","webpack:///./Cornmarket/UI/src/scripts/modules/DateValid.js","webpack:///./Cornmarket/UI/src/scripts/modules/SubmitForm.js","webpack:///./Cornmarket/UI/src/scripts/modules/ModalForm.js","webpack:///./Cornmarket/UI/src/scripts/modules/GeneralEnquiryForm.js","webpack:///./Cornmarket/UI/src/scripts/modules/GetQuote.js","webpack:///./Cornmarket/UI/src/scripts/modules/autoHeight.js","webpack:///./Cornmarket/UI/src/scripts/genesys/genesysApi.js","webpack:///./Cornmarket/UI/src/scripts/genesys/index.js","webpack:///./Cornmarket/UI/src/scripts/utils/cookiebotListeners.js","webpack:///./Cornmarket/UI/src/scripts/utils/istype.js","webpack:///./Cornmarket/UI/src/scripts/genesys/getRoute.js","webpack:///./Cornmarket/UI/src/scripts/index.js","webpack:///./node_modules/responsive-watch/lib/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/fuzzy/lib/fuzzy.js","webpack:///./node_modules/action-outside/docs/action-outside.min.js","webpack:///./node_modules/lite-ready/liteready.js","webpack:///./node_modules/svg4everybody/dist/svg4everybody.js","webpack:///./node_modules/scroll-watcher/dist/scroll-watcher.min.js","webpack:///./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/process/browser.js","webpack:///(webpack)/buildin/module.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","selector","context","elements","document","querySelectorAll","Array","slice","EventListener","eventTarget","eventName","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_i","_a","bindings","length","from","sort","left","right","leftIndex","index","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","handleError","error","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","set","descriptorPattern","Action","element","descriptor","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","matches","trim","match","eventTargetName","window","toString","eventNameSuffix","e","getAttribute","Error","Binding","action","willBeInvokedByEvent","invokeWithEvent","method","controller","target","Element","contains","scope","containsElement","ElementObserver","delegate","_this","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","del","size","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","filter","__extends","setPrototypeOf","__proto__","b","__","constructor","_super","IndexedMultimap","keysByValue","keys","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","_","findIndex","tokensAreEqual","tokenString","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","controllerConstructor","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","extend","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","arguments","a","apply","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","setAttribute","removeAttribute","replace","char","attributeValueContainsToken","TargetSet","targetName","find","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","join","targetDescriptor","targetAttribute","Scope","targets","data","head","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","__generator","body","f","y","g","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","push","Application","documentElement","router","readyState","register","load","rest","definitions","isArray","unload","identifiers","getControllerForElementAndIdentifier","console","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","properties","charAt","toUpperCase","capitalize","classList","location","querySelector","isObject","obj","src","doc","ssrDocument","activeElement","blur","nodeName","getElementById","createEvent","initEvent","createElement","children","childNodes","style","getElementsByTagName","createElementNS","importNode","hash","host","hostname","href","origin","pathname","protocol","search","win","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","arr","$","els","tempParent","html","indexOf","toCreate","innerHTML","unique","uniqueArray","fn","Class","Methods","addClass","className","classes","j","removeClass","remove","hasClass","toggleClass","toggle","attr","attrs","attrName","removeAttr","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","duration","webkitTransitionDuration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","k","undefined","events","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","bubbles","cancelable","dataIndex","dispatchEvent","callback","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","css","props","prop","each","text","textContent","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","foundElements","found","matchedItems","removeChild","toAdd","Utils","deleteProps","nextTick","delay","now","getTranslate","matrix","curTransform","transformMatrix","axis","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","paramsPart","decodeURIComponent","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","gestures","SwiperClass","self","eventsListeners","priority","onceHandler","f7proxy","eventHandler","eventsArray","instanceParams","instance","moduleName","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","components","use","proto","static","install","installModule","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","floor","ceil","slidesPerView","slidesPerColumnFill","newSlidesGrid","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","emit","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","slide","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","swiper","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","isVisible","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","onTranslateToWrapperTransitionEnd","destroyed","transition","transitionStart","direction","dir","transitionEnd","slideTo","initialSlide","allowSlideNext","allowSlidePrev","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","ie","edge","firefox","windows","electron","macos","appendSlide","update","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","ios","androidChrome","desktop","cordova","phonegap","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","once","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","breakpoints","setBreakpoint","autoplay","running","paused","run","preventClicks","preventClicksPropagation","dummyEventAttached","dummyEventListener","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","manipulation","attachEvents","touchEvents","onTouchStart","onTouchMove","onTouchEnd","onScroll","onClick","move","end","passive","cancel","onResize","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","innerWidth","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","prototypeGroup","protoMethod","Swiper","moduleParamName","swiperParams","defaults","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","newDefaults","support","isEdge","isSafari","isWebView","test","browser","resize","resizeHandler","orientationChangeHandler","destroy","Observer","func","WebkitMutationObserver","attach","ObserverFunc","observerUpdate","requestAnimationFrame","characterData","observers","observeParents","containerParents","observeSlideChildren","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","handle","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","sign","ignoreWheelEvents","sensitivity","timeout","shift","firstEvent","snapToThreshold","autoplayDisableOnInteraction","newEvent","raw","prevEvent","animateSlider","releaseScroll","returnValue","getTime","enable","disable","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","hideOnClick","hiddenClass","toEdge","fromEdge","click","isHidden","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","a11y","makeElFocusable","makeElNotFocusable","addElRole","role","addElLabel","disableEl","enableEl","onEnterKey","keyCode","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","notificationClass","paginationUpdate","Device","Support","Browser","Resize","A11y","paginationClass","1220","PrevButtonTarget","slideChange","NextButtonTarget","FOCUSABLE_ELEMENTS","Modal","activeModal","validateModalPresence","validateArgs","MicroModal","targetModal","triggers","onShow","onClose","openTrigger","closeTrigger","disableScroll","disableFocus","awaitCloseAnimation","awaitOpenAnimation","debugMode","modal","config","registerTriggers","onKeydown","Boolean","showModal","scrollBehaviour","addEventListeners","setFocusToFirstNode","removeEventListeners","focus","closeModal","overflow","maintainFocus","focusableNodes","getFocusableNodes","focusedItemIndex","id","warn","triggerMap","validateTriggerPresence","triggerAttr","generateTriggerMap","show","close","closeModalById","targetID","targetElement","handleRender","Event","handleShow","unit","responsiveWatch","status","gte","hideSubSection","NarrowNavRootTarget","BurgerBtnTarget","subSection","subSectionHeight","scrollHeight","ContainerTarget","SubSectionTargets","item","scroll","ScrollWatcher","header","sticky","pageYOffset","watch","__assign","Variation","ref","Experiment","variations","googleId","Experiments","drafts","exp","refFromCookie","cookie","splitted","expId","varIndex","LazySearchForm","api","fields","pageSize","fetch","fetchLinks","graphQuery","lang","langCode","page","after","documentId","orderings","toSearchForm","submit","cb","lazyForm","form","fieldKey","fieldValue","SearchForm","httpClient","field","fieldDesc","checkedValue","multiple","strFields","sep","encodeURIComponent","cachedRequest","response","catch","OPERATOR","encode","geopoint","near","fragment","latitude","longitude","radius","before","between","dayOfMonth","day","dayOfMonthAfter","dayOfMonthBefore","dayOfWeek","dayOfWeekAfter","dayOfWeekBefore","month","monthBefore","monthAfter","year","hour","hourBefore","hourAfter","gt","lt","inRange","Predicates","at","not","missing","any","in","fulltext","similar","maxResults","date","dateBefore","dateAfter","dateBetween","decode","Cookies","parse","str","opt","pairs","dec","pair","eq_idx","tryDecode","createPreviewResolver","getDocByID","linkResolver","defaultUrl","ResolvedApi","masterRef","refs","isMasterRef","experiments","bookmarks","tags","types","languages","formId","forms","everything","master","currentExperiment","q","optionsOrCallback","cookieString","req","headers","cookies","previewRef","experimentRef","queryFirst","results","getByID","maybeOptions","getByIDs","ids","getByUID","uid","getSingle","getBookmark","bookmark","getPreviewResolver","previewSession","request","mainDocument","LRUCache","limit","_keymap","put","entry","newer","older","log","returnEntry","oldvalue","removeAll","fun","String","DefaultApiCache","lru","MakeLRUCache","isExpired","expiredIn","ttl","DefaultRequestHandler","timeoutId","fetchOptions","Accept","proxyAgent","agent","fetchPromise","timeoutInMs","race","resp","json","cacheControl","parsedCacheControl","exec","err","fetchRequest","HttpClient","requestHandler","cache","xhr","cacheKey","cacheGetError","cacheGetValue","fetchError","fetchValue","ttlReq","separator","Api","accessToken","accessTokenParam","routes","JSON","stringify","apiDataTTL","apiCache","resolvedApi","DefaultClient","getApi","experimentCookie","previewCookie","client","initApi","Prismic","CM_CONFIG","apis","prismic","endpoint","getOrganisations","getOrganisationsSP","API_PATH","zendesk","authToken","getZendeskData","Authorization","res","autoaddress","API_KEY","subfolderPath","clearInput","items","ok","initFaq","list","pre","post","extract","filtered","fuzzy","original","string","resultsListTarget","handleKeydownNavigation","selectItem","handleCancel","$$","actionOutsideMenu","ActionOutside","handleHide","listen","currentTarget","newLocation","baseURLTarget","searchZendesk","searchAddress","renderListHeader","renderList","cancelTarget","input","html_url","addressSearch","displayName","datawrapperTarget","resultsTarget","SelectorOpen","unregisterKeyNavigation","keyDownHandler","choiceBtnTarget","display","inputTarget","hasChoiceTarget","choiceTarget","updateInputValue","sendAddressData","flyoutElement","group","renderShowMoreButton","hideMore","showMore","renderUI","onPlay","tag","onYouTubeIframeAPIReadyCallbacks","onYouTubeIframeAPIReady","mediaBtn","uiPath","playerEl","imgElSrc","backgroundImage","player","YT","Player","videoId","playerVars","autohide","color","controls","cc_load_policy","disablekb","enablejsapi","fs","iv_load_policy","modestbranding","domain","playsinline","rel","showinfo","theme","wmode","hl","onStateChange","playVideo","pauseVideo","stopVideo","state","PlayerState","PLAYING","PAUSED","ENDED","waitingForApi","loadAPI","createPlayer","enter","leave","over","ButtonWideTargets","PointerEvents","pointerType","showDropdown","hideDropdown","DrpdwnContainerTarget","selectorHideDropdownTimeout","DrpdwnRootTarget","drpdwnRootHandler","activeItemId","activeNavButtonElement","DrpdwnSectionTargets","activeDropdownRect","centrePosition","round","targetContainer","targetContainerRect","disableTransitionTimeout","enableTransitionTimeout","xPos","xPosCorrected","DrpdwnBgTarget","BodyTargets","accordionBody","section","getData","renderMarkup","accordionMarkup","articles","title","markup","lte","mySwiper","cardBtn","featuredContentCard","card","RootCardNumberTarget","innerText","RootCardDateTarget","RootCardTitleTarget","RootCardCopyTarget","RootCardBtnTarget","select","tabsList","calculateDimensions","hideTabContent","debounce","handleWindowResize","defaultOpen","defaultTargetTab","tabID","tabName","tabItem","tab","createOptions","nav","viewportWidth","option","tabTarget","currentTab","setMaxHeight","dataset","tabtarget","currentItem","targetArray","maxHeight","minHeight","toInteger","dirtyNumber","NaN","Number","isNaN","requiredArgs","required","toDate","argument","argStr","stack","checkCookie","dirtyDate","dirtyAmount","amount","setDate","getDate","addDays","toUTCString","getCookie","accepted","unescape","benefits_list","SeeMoreContentTarget","setHeight","hideSelectContent","hideContentOnOutsideClick","swagger","FormContainer","ProblemPhaseTarget","reset","SuccessFormTarget","generalEnquiryFormContainerClassList","callbackFormClassList","scrollIntoView","behavior","block","inline","FormContentContainerTarget","FormElements","errorMessageClasses","oninput","onchange","SchedulePhaseTarget","DetailsPhaseTarget","ButtonTarget","callbackFormContainer","CallbackFormData","toJSONString","MessageTarget","VerificationToken","contactRequest","Result","SuccessHeader1","SuccessHeader2","SuccessHeader3","SuccessCTA","dataLayer","virtualPageURL","VirtualPageURL","virtualPageTitle","VirtualPageTitle","callbackFormDivision","checked","productValue","callbackForm","ModalID","claimNumberTarget","isLeapYear","getFullYear","pageId","showCurrentPage","SickPayDataList","calcNumber","loadingText","calcPages","hideIcon","submitCalcForm","Forms","TaxRefundCalculator","TaxRefundRequestData","EstimatedRefundTarget","taxRefundRequest","TotalRefundResult","borderBottom","SickPayCalculator","SickPayRequestData","sickPayRequest","DaysSickLeaveRemainingTarget","DaysSickLeaveRemaining","DaysSickLeaveRemainingFullPayTarget","DaysSickLeaveRemainingFullPay","DaysSickLeaveRemainingHalfPayTarget","DaysSickLeaveRemainingHalfPay","calcDivision","dateofbirth","toFixed","checkValidity","valid","nextSubPage","nextPage","dateElement","submitButton","combinedDate","select_all","checkboxes","formData","FirstName","LastName","RequestType","includes","formsNode","getElementsByName","ValidationClasses","formtohide","callbackFormContainerClassList","MOTW_PATH","motwUrl","HOTW_PATH","hotwUrl","RegisterNumber","HomeAddress","iconCardCopyTargets","iconCardTitleTargets","contentCardTitleTargets","contentCardCopyTargets","ChipTargets","genesysApi","route","encodedRoute","queueID","idle","interacting","chatAvailable","isOpen","listenersAdded","initGenesys","getLocalStorage","Genesys","isfunction","launchGenesys","subscribeGenesysOpen","OnDecline","recallInit","OnAccept","listenerFlag","CookieConsent","changed","localStorage","getItem","messaging","customAttributes","ready","svg4everybody","WideNav","NarrowNav","Selector","Video","BlockClick","Carousel","ShowMore","Scroll","Accordion","FAQList","FeaturedContentCard","Tab","Cookie","PolicyCard","ContactUsCard","CallbackForm","CTAContainer","Claim","handRaising","jobCount","Calculator","DateValid","SubmitForm","ModalForm","GeneralEnquiryForm","GetQuote","_ref","_ref$sizes","_ref$orientations","orientations","_ref$medias","medias","_ref$queries","queries","_ref$check","check","units","previous","currentStatus","level1","level2","watchers","comp","sizeName","sizeUtils","sizesHash","minUnit","maxUnit","addListener","landscape","portrait","media","matchSizes","acc","Function","simpleFilter","pattern","array","ch","patternIdx","totalScore","currScore","compareString","caseSensitive","idx","Infinity","rendered","score","compare","_typeof","_createClass","defineProperties","writable","Constructor","protoProps","staticProps","_classCallCheck","evaluateAction","boolean","clickedElement","currentElement","attachEvent","root","embed","svg","createDocumentFragment","viewBox","clone","loadreadystatechange","onreadystatechange","cachedDocument","_cachedDocument","createHTMLDocument","responseText","_cachedTarget","_embeds","getSVGAncestor","rawopts","polyfill","inIframe","requests","uses","numberOfSvgUseElementsToBypass","oninterval","validate","srcSplit","XMLHttpRequest","open","send","factory","ctx","u","getElementsByClassName","HTMLElement","pageXOffset","w","h","TinyEmitter","globalThis","global","performance","process","hrtime","uptime","I","cancelled","V","O","Base","lastXY","watching","viewport","loopBound","runLoop","setListeners","rafId","cancelAnimationFrame","T","bottom","X","isInViewport","isFullyInViewport","isAboveViewport","isBelowViewport","isPartialOut","isFullyOut","handleItems","getScrollData","recalculate","fireEvents","wasInViewport","wasFullyOut","emitter","wasPartialOut","wasFullyInViewport","scrollingDown","scrollingUp","stopLoop","dimensions","counter","Internal","wasAboveViewport","wasBelowViewport","windowAtBottom","windowAtTop","__self__","F","DOMException","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","Headers","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","arrayBuffer","readAsText","chars","fromCharCode","readArrayBufferAsText","oldValue","entries","methods","Request","upcased","credentials","signal","referrer","bytes","Response","bodyInit","statusText","redirectStatuses","redirect","RangeError","aborted","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","ontimeout","onabort","withCredentials","responseType","setRequestHeader","default","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","toNumber","isObjectLike","isSymbol","other","valueOf","isBinary","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","flush","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","noop","env","argv","version","versions","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","webpackPolyfill","deprecate","paths"],"mappings":"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","file":"cornmarket.bundle.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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 126);\n","/**\n * $$\n * @description Loop over DOM elements more easily\n *\n * @usage $$('.foo').forEach(function(item) { // do something });\n */\n\nmodule.exports = function $$(selector, context) {\n\tcontext = context || document;\n\tvar elements = context.querySelectorAll(selector); return Array.prototype.slice.call(elements);\n}\n","var EventListener = /** @class */ (function () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set;\n }\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n };\n // Binding observer delegate\n /** @hidden */\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}());\nexport { EventListener };\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function () {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfbGlzdGVuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRfbGlzdGVuZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFLRSx1QkFBWSxXQUF3QixFQUFFLFNBQWlCO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsK0JBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUVELGtDQUFVLEdBQVY7UUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsY0FBYztJQUNkLHdDQUFnQixHQUFoQixVQUFpQixPQUFnQjtRQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsMkNBQW1CLEdBQW5CLFVBQW9CLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELG1DQUFXLEdBQVgsVUFBWSxLQUFZO1FBQ3RCLElBQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QyxLQUFzQixVQUFhLEVBQWIsS0FBQSxJQUFJLENBQUMsUUFBUSxFQUFiLGNBQWEsRUFBYixJQUFhLEVBQUU7WUFBaEMsSUFBTSxPQUFPLFNBQUE7WUFDaEIsSUFBSSxhQUFhLENBQUMsMkJBQTJCLEVBQUU7Z0JBQzdDLE1BQUs7YUFDTjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsc0JBQUksbUNBQVE7YUFBWjtZQUNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztnQkFDekQsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtnQkFDdEQsT0FBTyxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDckUsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDOzs7T0FBQTtJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQWhERCxJQWdEQzs7QUFFRCxxQkFBcUIsS0FBWTtJQUMvQixJQUFJLDZCQUE2QixJQUFJLEtBQUssRUFBRTtRQUMxQyxPQUFPLEtBQUssQ0FBQTtLQUNiO1NBQU07UUFDRyxJQUFBLDJEQUF3QixDQUFVO1FBQzFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDMUIsMkJBQTJCLEVBQUUsS0FBSztZQUNsQyx3QkFBd0I7Z0JBQ3RCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUE7Z0JBQ3ZDLDBCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNyQyxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0tBQ0g7QUFDSCxDQUFDIn0=","import { EventListener } from \"./event_listener\";\nvar Dispatcher = /** @class */ (function () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map;\n this.started = false;\n }\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) { return eventListener.connect(); });\n }\n };\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) { return eventListener.disconnect(); });\n }\n };\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function () {\n return Array.from(this.eventListenerMaps.values())\n .reduce(function (listeners, map) { return listeners.concat(Array.from(map.values())); }, []);\n },\n enumerable: true,\n configurable: true\n });\n // Binding observer delegate\n /** @hidden */\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n };\n // Error handling\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n this.application.handleError(error, \"Error \" + message, detail);\n };\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget, eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n return eventListener;\n };\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n };\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map;\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n };\n return Dispatcher;\n}());\nexport { Dispatcher };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVoRDtJQUtFLG9CQUFZLFdBQXdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0lBRUQsMEJBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQUEsYUFBYSxJQUFJLE9BQUEsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUF2QixDQUF1QixDQUFDLENBQUE7U0FDdEU7SUFDSCxDQUFDO0lBRUQseUJBQUksR0FBSjtRQUNFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFBLGFBQWEsSUFBSSxPQUFBLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBMUIsQ0FBMEIsQ0FBQyxDQUFBO1NBQ3pFO0lBQ0gsQ0FBQztJQUVELHNCQUFJLHNDQUFjO2FBQWxCO1lBQ0UsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDL0MsTUFBTSxDQUFDLFVBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSyxPQUFBLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUExQyxDQUEwQyxFQUFFLEVBQXFCLENBQUMsQ0FBQTtRQUNsRyxDQUFDOzs7T0FBQTtJQUVELDRCQUE0QjtJQUU1QixjQUFjO0lBQ2QscUNBQWdCLEdBQWhCLFVBQWlCLE9BQWdCO1FBQy9CLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0lBRUQsY0FBYztJQUNkLHdDQUFtQixHQUFuQixVQUFvQixPQUFnQjtRQUNsQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDekUsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixnQ0FBVyxHQUFYLFVBQVksS0FBWSxFQUFFLE9BQWUsRUFBRSxNQUFtQjtRQUFuQix1QkFBQSxFQUFBLFdBQW1CO1FBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFTLE9BQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRU8saURBQTRCLEdBQXBDLFVBQXFDLE9BQWdCO1FBQzNDLElBQUEsaUNBQVcsRUFBRSw2QkFBUyxDQUFZO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRU8sdUNBQWtCLEdBQTFCLFVBQTJCLFdBQXdCLEVBQUUsU0FBaUI7UUFDcEUsSUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDOUUsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ25ELElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDaEUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUMvQztRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyx3Q0FBbUIsR0FBM0IsVUFBNEIsV0FBd0IsRUFBRSxTQUFpQjtRQUNyRSxJQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDL0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUN4QjtRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyx3REFBbUMsR0FBM0MsVUFBNEMsV0FBd0I7UUFDbEUsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQixnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO1NBQzFEO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQTtJQUN6QixDQUFDO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBL0VELElBK0VDIn0=","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uX2Rlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9uX2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsdUVBQXVFO0FBQ3ZFLElBQU0saUJBQWlCLEdBQUcsZ0RBQWdELENBQUE7QUFFMUUsTUFBTSxnQ0FBZ0MsZ0JBQXdCO0lBQzVELElBQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3RDLElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDckQsT0FBTztRQUNMLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsU0FBUyxFQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkIsVUFBVSxFQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkIsVUFBVSxFQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDeEIsQ0FBQTtBQUNILENBQUM7QUFFRCwwQkFBMEIsZUFBdUI7SUFDL0MsSUFBSSxlQUFlLElBQUksUUFBUSxFQUFFO1FBQy9CLE9BQU8sTUFBTSxDQUFBO0tBQ2Q7U0FBTSxJQUFJLGVBQWUsSUFBSSxVQUFVLEVBQUU7UUFDeEMsT0FBTyxRQUFRLENBQUE7S0FDaEI7QUFDSCxDQUFDO0FBRUQsTUFBTSwrQkFBK0IsV0FBd0I7SUFDM0QsSUFBSSxXQUFXLElBQUksTUFBTSxFQUFFO1FBQ3pCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO1NBQU0sSUFBSSxXQUFXLElBQUksUUFBUSxFQUFFO1FBQ2xDLE9BQU8sVUFBVSxDQUFBO0tBQ2xCO0FBQ0gsQ0FBQyJ9","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\nvar Action = /** @class */ (function () {\n function Action(element, index, descriptor) {\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.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function () {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}());\nexport { Action };\nvar defaultEventNames = {\n \"a\": function (e) { return \"click\"; },\n \"button\": function (e) { return \"click\"; },\n \"form\": function (e) { return \"submit\"; },\n \"input\": function (e) { return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\"; },\n \"select\": function (e) { return \"change\"; },\n \"textarea\": function (e) { return \"change\"; }\n};\nexport function getDefaultEventNameForElement(element) {\n var 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}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHbkc7SUFZRSxnQkFBWSxPQUFnQixFQUFFLEtBQWEsRUFBRSxVQUFxQztRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFPLE9BQU8sQ0FBQTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFTLEtBQUssQ0FBQTtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFBO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUssVUFBVSxDQUFDLFNBQVMsSUFBSSw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUNoSCxJQUFJLENBQUMsVUFBVSxHQUFJLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLFVBQVUsR0FBSSxVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFYTSxlQUFRLEdBQWYsVUFBZ0IsS0FBWTtRQUMxQixPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBV0QseUJBQVEsR0FBUjtRQUNFLElBQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQUksSUFBSSxDQUFDLGVBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM5RSxPQUFPLEtBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLFVBQUssSUFBSSxDQUFDLFVBQVUsU0FBSSxJQUFJLENBQUMsVUFBWSxDQUFBO0lBQ3JGLENBQUM7SUFFRCxzQkFBWSxtQ0FBZTthQUEzQjtZQUNFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQy9DLENBQUM7OztPQUFBO0lBQ0gsYUFBQztBQUFELENBQUMsQUE3QkQsSUE2QkM7O0FBRUQsSUFBTSxpQkFBaUIsR0FBd0Q7SUFDN0UsR0FBRyxFQUFTLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxFQUFQLENBQU87SUFDeEIsUUFBUSxFQUFJLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxFQUFQLENBQU87SUFDeEIsTUFBTSxFQUFNLFVBQUEsQ0FBQyxJQUFJLE9BQUEsUUFBUSxFQUFSLENBQVE7SUFDekIsT0FBTyxFQUFLLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUF2RCxDQUF1RDtJQUN4RSxRQUFRLEVBQUksVUFBQSxDQUFDLElBQUksT0FBQSxRQUFRLEVBQVIsQ0FBUTtJQUN6QixVQUFVLEVBQUUsVUFBQSxDQUFDLElBQUksT0FBQSxRQUFRLEVBQVIsQ0FBUTtDQUMxQixDQUFBO0FBRUQsTUFBTSx3Q0FBd0MsT0FBZ0I7SUFDNUQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QyxJQUFJLE9BQU8sSUFBSSxpQkFBaUIsRUFBRTtRQUNoQyxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQzNDO0FBQ0gsQ0FBQztBQUVELGVBQWUsT0FBZTtJQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzFCLENBQUMifQ==","var Binding = /** @class */ (function () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function () {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function () {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function () {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function () {\n var 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 enumerable: true,\n configurable: true\n });\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n }\n catch (error) {\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element, index = _a.index;\n var detail = { identifier: identifier, controller: controller, element: element, index: index, event: event };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return true;\n }\n };\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function () {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}());\nexport { Binding };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBO0lBSUUsaUJBQVksT0FBZ0IsRUFBRSxNQUFjO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxzQkFBSSwwQkFBSzthQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQTtRQUMxQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGdDQUFXO2FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0JBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7UUFDaEMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBVyxHQUFYLFVBQVksS0FBWTtRQUN0QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELHNCQUFJLDhCQUFTO2FBQWI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksMkJBQU07YUFBVjtZQUNFLElBQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxVQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN4RCxJQUFJLE9BQU8sTUFBTSxJQUFJLFVBQVUsRUFBRTtnQkFDL0IsT0FBTyxNQUFNLENBQUE7YUFDZDtZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBVyxJQUFJLENBQUMsTUFBTSx5Q0FBa0MsSUFBSSxDQUFDLFVBQVUsT0FBRyxDQUFDLENBQUE7UUFDN0YsQ0FBQzs7O09BQUE7SUFFTyxpQ0FBZSxHQUF2QixVQUF3QixLQUFZO1FBQ2xDLElBQUk7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3pDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDUixJQUFBLFNBQWlELEVBQS9DLDBCQUFVLEVBQUUsMEJBQVUsRUFBRSxvQkFBTyxFQUFFLGdCQUFLLENBQVM7WUFDdkQsSUFBTSxNQUFNLEdBQUcsRUFBRSxVQUFVLFlBQUEsRUFBRSxVQUFVLFlBQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFBO1lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx1QkFBb0IsSUFBSSxDQUFDLE1BQU0sT0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQzVFO0lBQ0gsQ0FBQztJQUVPLHNDQUFvQixHQUE1QixVQUE2QixLQUFZO1FBQ3ZDLElBQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7UUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQTtTQUNaO2FBQU0sSUFBSSxXQUFXLFlBQVksT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDL0M7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFBO1NBQ1o7SUFDSCxDQUFDO0lBRUQsc0JBQVksK0JBQVU7YUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQVksK0JBQVU7YUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFBO1FBQy9CLENBQUM7OztPQUFBO0lBRUQsc0JBQVksNEJBQU87YUFBbkI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQVksMEJBQUs7YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBQ0gsY0FBQztBQUFELENBQUMsQUEzRUQsSUEyRUMifQ==","var ElementObserver = /** @class */ (function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set;\n this.mutationObserver = new MutationObserver(function (mutations) { return _this.processMutations(mutations); });\n }\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, childList: true, subtree: true });\n this.refresh();\n }\n };\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n };\n // Mutation record processing\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n };\n // Element matching\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) { tree = this.element; }\n return this.delegate.matchElementsInTree(tree);\n };\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n };\n // Element tracking\n ElementObserver.prototype.addElement = function (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 ElementObserver.prototype.removeElement = function (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 return ElementObserver;\n}());\nexport { ElementObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBO0lBUUUseUJBQVksT0FBZ0IsRUFBRSxRQUFpQztRQUEvRCxpQkFPQztRQU5DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUE7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUMsVUFBQyxTQUFTLElBQUssT0FBQSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQWhDLENBQWdDLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQsK0JBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUNqRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDZjtJQUNILENBQUM7SUFFRCw4QkFBSSxHQUFKO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7U0FDckI7SUFDSCxDQUFDO0lB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","import { ElementObserver } from \"./element_observer\";\nvar AttributeObserver = /** @class */ (function () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function () {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function () {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function () {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n // Element observer delegate\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n return AttributeObserver;\n}());\nexport { AttributeObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlX29ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dHJpYnV0ZV9vYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLG9CQUFvQixDQUFBO0FBUTdFO0lBTUUsMkJBQVksT0FBZ0IsRUFBRSxhQUFxQixFQUFFLFFBQW1DO1FBQ3RGLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQTtRQUNyQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFRO2FBQVo7WUFDRSxPQUFPLE1BQUksSUFBSSxDQUFDLGFBQWEsTUFBRyxDQUFBO1FBQ2xDLENBQUM7OztPQUFBO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVELGdDQUFJLEdBQUo7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFFRCxtQ0FBTyxHQUFQO1FBQ0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsc0JBQUksc0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUE7UUFDckMsQ0FBQzs7O09BQUE7SUFFRCw0QkFBNEI7SUFFNUIsd0NBQVksR0FBWixVQUFhLE9BQWdCO1FBQzNCLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELCtDQUFtQixHQUFuQixVQUFvQixJQUFhO1FBQy9CLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUNuRCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNoRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVELDBDQUFjLEdBQWQsVUFBZSxPQUFnQjtRQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ25FO0lBQ0gsQ0FBQztJQUVELDRDQUFnQixHQUFoQixVQUFpQixPQUFnQjtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ3JFO0lBQ0gsQ0FBQztJQUVELG1EQUF1QixHQUF2QixVQUF3QixPQUFnQixFQUFFLGFBQXFCO1FBQzdELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsRUFBRTtZQUNyRixJQUFJLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUNuRTtJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFsRUQsSUFrRUMifQ==","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0X29wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2V0X29wZXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxjQUFvQixHQUFtQixFQUFFLEdBQU0sRUFBRSxLQUFRO0lBQzdELEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzVCLENBQUM7QUFFRCxNQUFNLGNBQW9CLEdBQW1CLEVBQUUsR0FBTSxFQUFFLEtBQVE7SUFDN0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNqQixDQUFDO0FBRUQsTUFBTSxnQkFBc0IsR0FBbUIsRUFBRSxHQUFNO0lBQ3JELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0tBQ3JCO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxnQkFBc0IsR0FBbUIsRUFBRSxHQUFNO0lBQ3JELElBQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1FBQ3RDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDaEI7QUFDSCxDQUFDIn0=","import { add, del } from \"./set_operations\";\nvar Multimap = /** @class */ (function () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) { return values.concat(Array.from(set)); }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) { return size + set.size; }, 0);\n },\n enumerable: true,\n configurable: true\n });\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) { return set.has(value); });\n };\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey)\n .filter(function (_a) {\n var key = _a[0], values = _a[1];\n return values.has(value);\n })\n .map(function (_a) {\n var key = _a[0], values = _a[1];\n return key;\n });\n };\n return Multimap;\n}());\nexport { Multimap };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGltYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXVsdGltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUUzQztJQUdFO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFBO0lBQ3pDLENBQUM7SUFFRCxzQkFBSSw0QkFBTTthQUFWO1lBQ0UsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7WUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSyxPQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUE5QixDQUE4QixFQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9FLENBQUM7OztPQUFBO0lBRUQsc0JBQUksMEJBQUk7YUFBUjtZQUNFLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFDLElBQUksRUFBRSxHQUFHLElBQUssT0FBQSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBZixDQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdkQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQU8sR0FBTSxFQUFFLEtBQVE7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELHlCQUFNLEdBQU4sVUFBTyxHQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsMkJBQVEsR0FBUixVQUFTLEtBQVE7UUFDZixJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFkLENBQWMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxrQ0FBZSxHQUFmLFVBQWdCLEdBQU07UUFDcEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsa0NBQWUsR0FBZixVQUFnQixLQUFRO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ2hDLE1BQU0sQ0FBQyxVQUFDLEVBQWE7Z0JBQVosV0FBRyxFQUFFLGNBQU07WUFBTSxPQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQWpCLENBQWlCLENBQUM7YUFDNUMsR0FBRyxDQUFDLFVBQUMsRUFBYTtnQkFBWixXQUFHLEVBQUUsY0FBTTtZQUFNLE9BQUEsR0FBRztRQUFILENBQUcsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDSCxlQUFDO0FBQUQsQ0FBQyxBQWpERCxJQWlEQyJ9","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\nvar IndexedMultimap = /** @class */ (function (_super) {\n __extends(IndexedMultimap, _super);\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n _this.keysByValue = new Map;\n return _this;\n }\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function () {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n add(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n del(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n return IndexedMultimap;\n}(Multimap));\nexport { IndexedMultimap };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF9tdWx0aW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleGVkX211bHRpbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFM0M7SUFBMkMsbUNBQWM7SUFHdkQ7UUFBQSxZQUNFLGlCQUFPLFNBRVI7UUFEQyxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxDQUFBOztJQUM1QixDQUFDO0lBRUQsc0JBQUksbUNBQU07YUFBVjtZQUNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsaUJBQU0sR0FBRyxZQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVELGdDQUFNLEdBQU4sVUFBTyxHQUFNLEVBQUUsS0FBUTtRQUNyQixpQkFBTSxNQUFNLFlBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsa0NBQVEsR0FBUixVQUFTLEtBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCx5Q0FBZSxHQUFmLFVBQWdCLEtBQVE7UUFDdEIsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdkMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBOUJELENBQTJDLFFBQVEsR0E4QmxEIn0=","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\nvar TokenListObserver = /** @class */ (function () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap;\n }\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function () {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function () {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n // Attribute observer delegate\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element), unmatchedTokens = _a[0], matchedTokens = _a[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenMatched(token); });\n };\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenUnmatched(token); });\n };\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens)\n .findIndex(function (_a) {\n var previousToken = _a[0], currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n return TokenListObserver;\n}());\nexport { TokenListObserver };\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) { return content.length; })\n .map(function (content, index) { return ({ element: element, attributeName: attributeName, content: content, index: index }); });\n}\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({ length: length }, function (_, index) { return [left[index], right[index]]; });\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fbGlzdF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbl9saXN0X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQTtBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFjN0M7SUFLRSwyQkFBWSxPQUFnQixFQUFFLGFBQXFCLEVBQUUsUUFBbUM7UUFDdEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksUUFBUSxDQUFBO0lBQ3JDLENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsZ0NBQUksR0FBSjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsbUNBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsc0JBQUksc0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQTtRQUN2QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRDQUFhO2FBQWpCO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFBO1FBQzdDLENBQUM7OztPQUFBO0lBRUQsOEJBQThCO0lB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","import { TokenListObserver } from \"./token_list_observer\";\nvar ValueListObserver = /** @class */ (function () {\n function ValueListObserver(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 Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function () {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function () {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var 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 ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map;\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n };\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return { value: value };\n }\n catch (error) {\n return { error: error };\n }\n };\n return ValueListObserver;\n}());\nexport { ValueListObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVfbGlzdF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWx1ZV9saXN0X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxpQkFBaUIsRUFBNkIsTUFBTSx1QkFBdUIsQ0FBQTtBQWEzRjtJQU1FLDJCQUFZLE9BQWdCLEVBQUUsYUFBcUIsRUFBRSxRQUFzQztRQUN6RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQTtRQUN0QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLENBQUE7SUFDM0MsQ0FBQztJQUVELHNCQUFJLHNDQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUE7UUFDdkMsQ0FBQzs7O09BQUE7SUFFRCxpQ0FBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxnQ0FBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxtQ0FBTyxHQUFQO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNENBQWE7YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUE7UUFDN0MsQ0FBQzs7O09BQUE7SUFFRCx3Q0FBWSxHQUFaLFVBQWEsS0FBWTtRQUNmLElBQUEsdUJBQU8sQ0FBVTtRQUNqQixJQUFBLGtEQUFLLENBQXlDO1FBQ3RELElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsMENBQWMsR0FBZCxVQUFlLEtBQVk7UUFDakIsSUFBQSx1QkFBTyxDQUFVO1FBQ2pCLElBQUEsa0RBQUssQ0FBeUM7UUFDdEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3BEO0lBQ0gsQ0FBQztJQUVPLG9EQUF3QixHQUFoQyxVQUFpQyxLQUFZO1FBQzNDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQTtTQUNqRDtRQUNELE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFTyx3REFBNEIsR0FBcEMsVUFBcUMsT0FBZ0I7UUFDbkQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQTtZQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUN4RDtRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyxzQ0FBVSxHQUFsQixVQUFtQixLQUFZO1FBQzdCLElBQUk7WUFDRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JELE9BQU8sRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFBO1NBQ2pCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQTtTQUNqQjtJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFqRkQsSUFpRkMifQ==","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar BindingObserver = /** @class */ (function () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map;\n }\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function () {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function () {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n this.bindings.forEach(function (binding) { return _this.delegate.bindingDisconnected(binding); });\n this.bindingsByAction.clear();\n };\n // Value observer delegate\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n return BindingObserver;\n}());\nexport { BindingObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZ19vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kaW5nX29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUluQyxPQUFPLEVBQVMsaUJBQWlCLEVBQTZCLE1BQU0sOEJBQThCLENBQUE7QUFPbEc7SUFNRSx5QkFBWSxPQUFnQixFQUFFLFFBQWlDO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsK0JBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtTQUMvQjtJQUNILENBQUM7SUFFRCw4QkFBSSxHQUFKO1FBQ0UsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFBO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELHNCQUFJLG9DQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQzdCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksdUNBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7UUFDaEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0Q0FBZTthQUFuQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUE7UUFDcEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxtQ0FBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUM1QixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHFDQUFRO2FBQVo7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbkQsQ0FBQzs7O09BQUE7SUFFTyx1Q0FBYSxHQUFyQixVQUFzQixNQUFjO1FBQ2xDLElBQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRU8sMENBQWdCLEdBQXhCLFVBQXlCLE1BQWM7UUFDckMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtTQUMzQztJQUNILENBQUM7SUFFTyw4Q0FBb0IsR0FBNUI7UUFBQSxpQkFHQztRQUZDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsS0FBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBMUMsQ0FBMEMsQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsMEJBQTBCO0lBRTFCLDRDQUFrQixHQUFsQixVQUFtQixLQUFZO1FBQzdCLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckMsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEMsT0FBTyxNQUFNLENBQUE7U0FDZDtJQUNILENBQUM7SUFFRCw2Q0FBbUIsR0FBbkIsVUFBb0IsT0FBZ0IsRUFBRSxNQUFjO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELCtDQUFxQixHQUFyQixVQUFzQixPQUFnQixFQUFFLE1BQWM7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFsRkQsSUFrRkMifQ==","import { BindingObserver } from \"./binding_observer\";\nvar Context = /** @class */ (function () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n try {\n this.controller.initialize();\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n try {\n this.controller.connect();\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.bindingObserver.stop();\n };\n Object.defineProperty(Context.prototype, \"application\", {\n get: function () {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function () {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function () {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function () {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n });\n // Error handling\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element;\n detail = Object.assign({ identifier: identifier, controller: controller, element: element }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n return Context;\n}());\nexport { Context };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQVFwRDtJQU1FLGlCQUFZLE1BQWMsRUFBRSxLQUFZO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRWpFLElBQUk7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFBO1NBQzdCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx5QkFBeUIsQ0FBQyxDQUFBO1NBQ25EO0lBQ0gsQ0FBQztJQUVELHlCQUFPLEdBQVA7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBRTVCLElBQUk7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFBO1NBQzFCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO1NBQ2pEO0lBQ0gsQ0FBQztJQUVELDRCQUFVLEdBQVY7UUFDRSxJQUFJO1lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtTQUM3QjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQTtTQUNwRDtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELHNCQUFJLGdDQUFXO2FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0JBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUE7UUFDL0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwyQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFBO1FBQ3BDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNEJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFDM0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxrQ0FBYTthQUFqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFDbkMsQ0FBQzs7O09BQUE7SUFFRCxpQkFBaUI7SUFFakIsNkJBQVcsR0FBWCxVQUFZLEtBQVksRUFBRSxPQUFlLEVBQUUsTUFBbUI7UUFBbkIsdUJBQUEsRUFBQSxXQUFtQjtRQUN0RCxJQUFBLFNBQTBDLEVBQXhDLDBCQUFVLEVBQUUsMEJBQVUsRUFBRSxvQkFBTyxDQUFTO1FBQ2hELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVSxZQUFBLEVBQUUsVUFBVSxZQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNuRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBUyxPQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUNILGNBQUM7QUFBRCxDQUFDLEFBdEVELElBc0VDIn0=","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/** @hidden */\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\nvar extend = (function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: { value: Controller }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n function testReflectExtension() {\n var a = function () { this.a.call(this); };\n var b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b;\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return function (constructor) { return /** @class */ (function (_super) {\n __extends(Controller, _super);\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Controller;\n }(constructor)); };\n }\n})();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFPQSxjQUFjO0FBQ2QsTUFBTSwwQkFBMEIsVUFBc0I7SUFDcEQsT0FBTztRQUNMLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtRQUNqQyxxQkFBcUIsRUFBRSwwQkFBMEIsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7S0FDcEYsQ0FBQTtBQUNILENBQUM7QUFFRCxvQ0FBb0MscUJBQTRDO0lBQzlFLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ2pELFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNuQixPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDO0FBRUQsSUFBTSxNQUFNLEdBQUcsQ0FBQztJQUdkLDJCQUFzRCxXQUFjO1FBQ2xFOztZQUNFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxhQUFhLENBQUE7UUFDOUQsQ0FBQztRQUVELFVBQVUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO1lBQzFELFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7U0FDbkMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDL0MsT0FBTyxVQUFpQixDQUFBO0lBQzFCLENBQUM7SUFFRDtRQUNFLElBQU0sQ0FBQyxHQUFHLGNBQXNCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBUSxDQUFBO1FBQzFELElBQU0sQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLGNBQVksQ0FBQyxDQUFBO1FBQzdCLE9BQU8sSUFBSSxDQUFDLENBQUE7SUFDZCxDQUFDO0lBRUQsSUFBSTtRQUNGLG9CQUFvQixFQUFFLENBQUE7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQTtLQUN6QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxVQUE0QixXQUFjLElBQUs7WUFBeUIsOEJBQVc7WUFBcEM7O1lBQXNDLENBQUM7WUFBRCxpQkFBQztRQUFELENBQUMsQUFBdkMsQ0FBeUIsV0FBVyxJQUFwQyxDQUF1QyxDQUFBO0tBQzlGO0FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQSJ9","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\nvar Module = /** @class */ (function () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap;\n this.connectedContexts = new Set;\n }\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function () {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function () {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function () {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n Module.prototype.fetchContextForScope = function (scope) {\n var 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 return Module;\n}());\nexport { Module };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRW5DLE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHMUQ7SUFNRSxnQkFBWSxXQUF3QixFQUFFLFVBQXNCO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUE7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSw4QkFBVTthQUFkO1lBQ0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQTtRQUNuQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHlDQUFxQjthQUF6QjtZQUNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQTtRQUM5QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFRO2FBQVo7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDM0MsQ0FBQzs7O09BQUE7SUFFRCx1Q0FBc0IsR0FBdEIsVUFBdUIsS0FBWTtRQUNqQyxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNuQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELDBDQUF5QixHQUF6QixVQUEwQixLQUFZO1FBQ3BDLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9DLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN0QyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUE7U0FDckI7SUFDSCxDQUFDO0lBRU8scUNBQW9CLEdBQTVCLFVBQTZCLEtBQVk7UUFDdkMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQ3pDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUNILGFBQUM7QUFBRCxDQUFDLEFBL0NELElBK0NDIn0=","var DataMap = /** @class */ (function () {\n function DataMap(scope) {\n this.scope = scope;\n }\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n }\n else {\n return false;\n }\n };\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n return DataMap;\n}());\nexport { DataMap };\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) { return \"-\" + char.toLowerCase(); });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YV9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFHRSxpQkFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxzQkFBSSw0QkFBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQzlCLENBQUM7OztPQUFBO0lBRUQscUJBQUcsR0FBSCxVQUFJLEdBQVc7UUFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxxQkFBRyxHQUFILFVBQUksR0FBVyxFQUFFLEtBQWE7UUFDNUIsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQscUJBQUcsR0FBSCxVQUFJLEdBQVc7UUFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCx3QkFBTSxHQUFOLFVBQU8sR0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDakMsT0FBTyxJQUFJLENBQUE7U0FDWjthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUE7U0FDYjtJQUNILENBQUM7SUFFTyxpQ0FBZSxHQUF2QixVQUF3QixHQUFXO1FBQ2pDLE9BQU8sVUFBUSxJQUFJLENBQUMsVUFBVSxTQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUcsQ0FBQTtJQUNwRCxDQUFDO0lBQ0gsY0FBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0M7O0FBRUQsbUJBQW1CLEtBQWE7SUFDOUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFDLENBQUMsRUFBRSxJQUFJLElBQUssT0FBQSxNQUFJLElBQUksQ0FBQyxXQUFXLEVBQUksRUFBeEIsQ0FBd0IsQ0FBQyxDQUFBO0FBQ3pFLENBQUMifQ==","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBQ2QsTUFBTSxzQ0FBc0MsYUFBcUIsRUFBRSxLQUFhO0lBQzlFLE9BQU8sTUFBSSxhQUFhLFlBQU0sS0FBSyxRQUFJLENBQUE7QUFDekMsQ0FBQyJ9","import { attributeValueContainsToken } from \"./selectors\";\nvar TargetSet = /** @class */ (function () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function () {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n TargetSet.prototype.find = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n return targetNames.map(function (targetName) { return _this.getSelectorForTargetName(targetName); }).join(\", \");\n };\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n return TargetSet;\n}());\nexport { TargetSet };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0X3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXJnZXRfc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RDtJQUdFLG1CQUFZLEtBQVk7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQUVELHNCQUFJLDhCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksaUNBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUMxQixDQUFDOzs7T0FBQTtJQUVELHVCQUFHLEdBQUgsVUFBSSxVQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFBO0lBQ3RDLENBQUM7SUFFRCx3QkFBSSxHQUFKO1FBQUsscUJBQXdCO2FBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtZQUF4QixnQ0FBd0I7O1FBQzNCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCwyQkFBTyxHQUFQO1FBQVEscUJBQXdCO2FBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtZQUF4QixnQ0FBd0I7O1FBQzlCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFTyw2Q0FBeUIsR0FBakMsVUFBa0MsV0FBcUI7UUFBdkQsaUJBRUM7UUFEQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBQSxVQUFVLElBQUksT0FBQSxLQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLEVBQXpDLENBQXlDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVPLDRDQUF3QixHQUFoQyxVQUFpQyxVQUFrQjtRQUNqRCxJQUFNLGdCQUFnQixHQUFNLElBQUksQ0FBQyxVQUFVLFNBQUksVUFBWSxDQUFBO1FBQzNELE9BQU8sMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBQ0gsZ0JBQUM7QUFBRCxDQUFDLEFBekNELElBeUNDIn0=","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\nvar Scope = /** @class */ (function () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n return elements.filter(function (element) { return _this.containsElement(element); });\n };\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function () {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}());\nexport { Scope };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RDtJQU9FLGVBQVksTUFBYyxFQUFFLFVBQWtCLEVBQUUsT0FBZ0I7UUFDOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCwyQkFBVyxHQUFYLFVBQVksUUFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCwrQkFBZSxHQUFmLFVBQWdCLFFBQWdCO1FBQzlCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ2pFLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUVELDhCQUFjLEdBQWQsVUFBZSxRQUFtQjtRQUFsQyxpQkFFQztRQURDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQTdCLENBQTZCLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsK0JBQWUsR0FBZixVQUFnQixPQUFnQjtRQUM5QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNsRSxDQUFDO0lBRUQsc0JBQVkscUNBQWtCO2FBQTlCO1lBQ0UsT0FBTywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0RixDQUFDOzs7T0FBQTtJQUNILFlBQUM7QUFBRCxDQUFDLEFBcENELElBb0NDIn0=","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar ScopeObserver = /** @class */ (function () {\n function ScopeObserver(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 ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n // Value observer delegate\n /** @hidden */\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element, identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n };\n /** @hidden */\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var 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 /** @hidden */\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var 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 ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map;\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n };\n return ScopeObserver;\n}());\nexport { ScopeObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVfb2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NvcGVfb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMvQixPQUFPLEVBQVMsaUJBQWlCLEVBQTZCLE1BQU0sOEJBQThCLENBQUE7QUFPbEc7SUFRRSx1QkFBWSxPQUFnQixFQUFFLE1BQWMsRUFBRSxRQUErQjtRQUMzRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RixJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxPQUFPLENBQUE7UUFDOUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUFBO0lBQ3pDLENBQUM7SUFFRCw2QkFBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCw0QkFBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxzQkFBSSw4Q0FBbUI7YUFBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUE7UUFDeEMsQ0FBQzs7O09BQUE7SUFFRCwwQkFBMEI7SUFFMUIsY0FBYztJQUNkLDBDQUFrQixHQUFsQixVQUFtQixLQUFZO1FBQ3JCLElBQUEsdUJBQU8sRUFBRSwwQkFBbUIsQ0FBVTtRQUM5QyxJQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUUxRSxJQUFJLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNuRCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQzFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsY0FBYztJQUNkLDJDQUFtQixHQUFuQixVQUFvQixPQUFnQixFQUFFLEtBQVk7UUFDaEQsSUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUNwRCxJQUFJLGNBQWMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDcEM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNkLDZDQUFxQixHQUFyQixVQUFzQixPQUFnQixFQUFFLEtBQVk7UUFDbEQsSUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDeEQsSUFBSSxjQUFjLElBQUksQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8seURBQWlDLEdBQXpDLFVBQTBDLE9BQWdCO1FBQ3hELElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUE7WUFDNUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtTQUNsRTtRQUNELE9BQU8sa0JBQWtCLENBQUE7SUFDM0IsQ0FBQztJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQXpFRCxJQXlFQyJ9","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\nvar Router = /** @class */ (function () {\n function Router(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 Object.defineProperty(Router.prototype, \"element\", {\n get: function () {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function () {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function () {\n return this.modules.reduce(function (contexts, module) { return contexts.concat(module.contexts); }, []);\n },\n enumerable: true,\n configurable: true\n });\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n };\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(function (context) { return context.element == element; });\n }\n };\n // Error handler delegate\n /** @hidden */\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n };\n // Scope observer delegate\n /** @hidden */\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n };\n // Modules\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.connectContextForScope(scope); });\n };\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.disconnectContextForScope(scope); });\n };\n return Router;\n}());\nexport { Router };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUF5QixNQUFNLGtCQUFrQixDQUFBO0FBRXZFO0lBTUUsZ0JBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksUUFBUSxDQUFBO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsc0JBQUksMkJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwwQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFtQjthQUF2QjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQTtRQUN4QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDJCQUFPO2FBQVg7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0QkFBUTthQUFaO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FB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","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsSUFBTSxhQUFhLEdBQVc7SUFDbkMsbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLGVBQWUsRUFBRSxhQUFhO0lBQzlCLGVBQWUsRUFBRSxhQUFhO0NBQy9CLENBQUEifQ==","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\nvar Application = /** @class */ (function () {\n function Application(element, schema) {\n if (element === void 0) { element = document.documentElement; }\n if (schema === void 0) { schema = defaultSchema; }\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, domReady()];\n case 1:\n _a.sent();\n this.router.start();\n this.dispatcher.start();\n return [2 /*return*/];\n }\n });\n });\n };\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({ identifier: identifier, controllerConstructor: controllerConstructor });\n };\n Application.prototype.load = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) { return _this.router.loadDefinition(definition); });\n };\n Application.prototype.unload = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) { return _this.router.unloadIdentifier(identifier); });\n };\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function () {\n return this.router.contexts.map(function (context) { return context.controller; });\n },\n enumerable: true,\n configurable: true\n });\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n };\n // Error handling\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n return Application;\n}());\nexport { Application };\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n }\n else {\n resolve();\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVoRDtJQVlFLHFCQUFZLE9BQTJDLEVBQUUsTUFBOEI7UUFBM0Usd0JBQUEsRUFBQSxVQUFtQixRQUFRLENBQUMsZUFBZTtRQUFFLHVCQUFBLEVBQUEsc0JBQThCO1FBQ3JGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBWE0saUJBQUssR0FBWixVQUFhLE9BQWlCLEVBQUUsTUFBZTtRQUM3QyxJQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEQsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ25CLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFTSywyQkFBSyxHQUFYOzs7OzRCQUNFLHFCQUFNLFFBQVEsRUFBRSxFQUFBOzt3QkFBaEIsU0FBZ0IsQ0FBQTt3QkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTt3QkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTs7Ozs7S0FDeEI7SUFFRCwwQkFBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRCw4QkFBUSxHQUFSLFVBQVMsVUFBa0IsRUFBRSxxQkFBNEM7UUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsWUFBQSxFQUFFLHFCQUFxQix1QkFBQSxFQUFFLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBSUQsMEJBQUksR0FBSixVQUFLLElBQStCO1FBQXBDLGlCQUdDO1FBSHFDLGNBQXFCO2FBQXJCLFVBQXFCLEVBQXJCLHFCQUFxQixFQUFyQixJQUFxQjtZQUFyQiw2QkFBcUI7O1FBQ3pELElBQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxTQUFLLElBQUksQ0FBQyxDQUFBO1FBQ2hFLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBQSxVQUFVLElBQUksT0FBQSxLQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBdEMsQ0FBc0MsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFJRCw0QkFBTSxHQUFOLFVBQU8sSUFBdUI7UUFBOUIsaUJBR0M7UUFIK0IsY0FBaUI7YUFBakIsVUFBaUIsRUFBakIscUJBQWlCLEVBQWpCLElBQWlCO1lBQWpCLDZCQUFpQjs7UUFDL0MsSUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQUssSUFBSSxDQUFDLENBQUE7UUFDaEUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFBLFVBQVUsSUFBSSxPQUFBLEtBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQXhDLENBQXdDLENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBSUQsc0JBQUksb0NBQVc7UUFGZixjQUFjO2FBRWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLE9BQU8sQ0FBQyxVQUFVLEVBQWxCLENBQWtCLENBQUMsQ0FBQTtRQUNoRSxDQUFDOzs7T0FBQTtJQUVELDBEQUFvQyxHQUFwQyxVQUFxQyxPQUFnQixFQUFFLFVBQWtCO1FBQ3ZFLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsaUNBQWlDLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ2xGLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDNUMsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixpQ0FBVyxHQUFYLFVBQVksS0FBWSxFQUFFLE9BQWUsRUFBRSxNQUFjO1FBQ3ZELE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBQ0gsa0JBQUM7QUFBRCxDQUFDLEFBaEVELElBZ0VDOztBQUVEO0lBQ0UsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFBLE9BQU87UUFDeEIsSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLFNBQVMsRUFBRTtZQUNwQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FDdkQ7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMifQ==","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n return defineLinkedProperties(prototype, (_a = {},\n _a[name + \"Target\"] = {\n get: function () {\n var target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n },\n _a[name + \"Targets\"] = {\n get: function () {\n return this.targets.findAll(name);\n }\n },\n _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function () {\n return this.targets.has(name);\n }\n },\n _a));\n });\n}\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) { return targetNames.add(name); });\n return targetNames;\n }, new Set));\n}\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors;\n}\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0X3Byb3BlcnRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFyZ2V0X3Byb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYztBQUNkLE1BQU0saUNBQWlDLFdBQXFCO0lBQzFELElBQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUE7SUFDdkMsSUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7O1FBQUksT0FBQSxzQkFBc0IsQ0FBQyxTQUFTO1lBQzFELEdBQUksSUFBSSxXQUFRLElBQUc7Z0JBQ2pCLEdBQUc7b0JBQ0QsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3RDLElBQUksTUFBTSxFQUFFO3dCQUNWLE9BQU8sTUFBTSxDQUFBO3FCQUNkO3lCQUFNO3dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQTJCLElBQUksQ0FBQyxVQUFVLFNBQUksSUFBSSxPQUFHLENBQUMsQ0FBQTtxQkFDdkU7Z0JBQ0gsQ0FBQzthQUNGO1lBQ0QsR0FBSSxJQUFJLFlBQVMsSUFBRztnQkFDbEIsR0FBRztvQkFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNuQyxDQUFDO2FBQ0Y7WUFDRCxHQUFDLFFBQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFRLElBQUc7Z0JBQ2hDLEdBQUc7b0JBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQzthQUNGO2dCQUNEO0lBckIwQixDQXFCMUIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELHNDQUFzQyxXQUFxQjtJQUN6RCxJQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFDLFdBQVcsRUFBRSxXQUFXO1FBQzFELCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQXJCLENBQXFCLENBQUMsQ0FBQTtRQUNuRixPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDLEVBQUUsSUFBSSxHQUFrQixDQUFDLENBQUMsQ0FBQTtBQUM3QixDQUFDO0FBRUQsb0NBQW9DLFdBQXFCO0lBQ3ZELElBQU0sU0FBUyxHQUFlLEVBQUUsQ0FBQTtJQUNoQyxPQUFPLFdBQVcsRUFBRTtRQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzNCLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0tBQ2pEO0lBQ0QsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELHlDQUF5QyxXQUFxQjtJQUM1RCxJQUFNLFVBQVUsR0FBSSxXQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2xELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDcEQsQ0FBQztBQUVELGdDQUFnQyxNQUFXLEVBQUUsVUFBaUM7SUFDNUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJO1FBQ25DLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRTtZQUNyQixJQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1NBQ2hEO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsb0JBQW9CLElBQVk7SUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQyJ9","import { defineTargetProperties } from \"./target_properties\";\nvar Controller = /** @class */ (function () {\n function Controller(context) {\n this.context = context;\n }\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function () {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function () {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n Controller.prototype.initialize = function () {\n // Override in your subclass to set up initial controller state\n };\n Controller.prototype.connect = function () {\n // Override in your subclass to respond when the controller is connected to the DOM\n };\n Controller.prototype.disconnect = function () {\n // Override in your subclass to respond when the controller is disconnected from the DOM\n };\n Controller.targets = [];\n return Controller;\n}());\nexport { Controller };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBTzVEO0lBU0Usb0JBQVksT0FBZ0I7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDeEIsQ0FBQztJQU5NLGdCQUFLLEdBQVo7UUFDRSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBTUQsc0JBQUksbUNBQVc7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBSzthQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksa0NBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQkFBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBQ3hCLENBQUM7OztPQUFBO0lBRUQsK0JBQVUsR0FBVjtRQUNFLCtEQUErRDtJQUNqRSxDQUFDO0lBRUQsNEJBQU8sR0FBUDtRQUNFLG1GQUFtRjtJQUNyRixDQUFDO0lBRUQsK0JBQVUsR0FBVjtRQUNFLHdGQUF3RjtJQUMxRixDQUFDO0lBOUNNLGtCQUFPLEdBQWEsRUFBRSxDQUFBO0lBK0MvQixpQkFBQztDQUFBLEFBaERELElBZ0RDO1NBaERZLFVBQVUifQ==","import { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.element.classList.add('blockClick')\r\n this.element.addEventListener('click', () => {\r\n window.location = this.element.querySelector('a').getAttribute('href')\r\n })\r\n }\r\n}\r\n","/**\n * SSR Window 2.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: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\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};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\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};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let 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, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\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 }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const 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 const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const 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 // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const 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 const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\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 (let k = handlers.length - 1; k >= 0; k -= 1) {\n const 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(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\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(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const 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 if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const 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 if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let 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 for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) 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 indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n 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}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\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 $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let 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 let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n 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\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const 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(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const 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}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\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\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (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;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n return {\n touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\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 const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default SwiperClass;\n","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';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\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 }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let 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 }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : 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\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .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(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const 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()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\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\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\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\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (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}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\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\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let 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 }\n // Prev Slide\n let 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\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\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 const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n 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}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\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 = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const 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 wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\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\n return true;\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\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}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\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}\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';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\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\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let 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 wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\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\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let 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}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let 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 (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\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\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const 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 const 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\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const 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}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nexport default Device;\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let 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 && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let 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 && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let 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\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && 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}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) 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\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && 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}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\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;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.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 let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let 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 const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n 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 Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\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\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n 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\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;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let 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) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\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: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let 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 }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\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\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (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\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let 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 let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\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', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.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 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\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(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\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(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(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}\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\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\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function (e) {\n const swiper = this;\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}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\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 }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\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\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\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 const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : 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 }\n // Prevent Links Clicks\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 }\n\n // Resize handler\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}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\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 const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : 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 }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default { 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 //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\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\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\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, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\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\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // 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\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\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';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (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 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 formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let 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\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const 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\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","import { window } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n 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}\n","export default function () {\n const 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 (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n 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}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\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\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && 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 ) {\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\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\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 momuntum 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 const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\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 = Utils.nextTick(() => {\n const 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 }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n 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 }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } 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() {\n const swiper = this;\n const 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 let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\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() {\n const swiper = this;\n const 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 let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\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 eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\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() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\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\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\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};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let 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', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\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};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const 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 }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n 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((index, bullet) => {\n const $bullet = $(bullet);\n const 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\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let 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 (let 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\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${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', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let 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(`.${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 + ``;\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() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\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\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\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', `.${params.bulletClass}`);\n }\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', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // 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', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $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(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\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() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $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 swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $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.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\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 },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n Device,\n Support,\n Browser,\n Resize,\n Observer,\n //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n","import { Controller } from 'stimulus'\r\nimport {\r\n Swiper,\r\n Navigation,\r\n Pagination,\r\n A11y,\r\n} from 'swiper/js/swiper.esm.js'\r\n \r\nSwiper.use([Navigation, Pagination, A11y])\r\n\r\nexport default class extends Controller {\r\n static get targets() {\r\n return ['PrevButton', 'NextButton']\r\n }\r\n connect() {\r\n const element = this.element.querySelector('.swiper-container')\r\n this.paginationClass = this.data.get('pagination')\r\n this.swiper = new Swiper(element, {\r\n speed: 400,\r\n watchOverflow: true,\r\n slidesPerView: 'auto',\r\n spaceBetween: 30,\r\n grabCursor: true,\r\n slidesOffsetBefore: 30,\r\n slidesOffsetAfter: 30,\r\n simulateTouch: true,\r\n preventClicks: true,\r\n autoHeight: true,\r\n breakpoints: {\r\n // when window width is <= 480px\r\n 1220: {\r\n slidesOffsetBefore: 30,\r\n slidesOffsetAfter: 30,\r\n spaceBetween: 30,\r\n freeMode: true,\r\n },\r\n },\r\n pagination: {\r\n el: this.paginationClass,\r\n clickable: true,\r\n dynamicBullets: true,\r\n },\r\n a11y: {\r\n prevSlideMessage: 'Previous slide',\r\n nextSlideMessage: 'Next slide',\r\n },\r\n init: false,\r\n })\r\n\r\n this.swiper.on('init', () => {\r\n this.PrevButtonTarget.classList.add('is-disabled')\r\n })\r\n this.swiper.on('slideChange', this.slideChange.bind(this))\r\n this.swiper.on('reachBeginning', () => {\r\n this.PrevButtonTarget.classList.add('is-disabled')\r\n })\r\n this.swiper.on('reachEnd', () => {\r\n this.NextButtonTarget.classList.add('is-disabled')\r\n })\r\n\r\n const self = this;\r\n setTimeout(function () {\r\n self.swiper.init()\r\n\r\n self.PrevButtonTarget.addEventListener('click', () => {\r\n self.swiper.slidePrev()\r\n })\r\n\r\n self.NextButtonTarget.addEventListener('click', () => {\r\n self.swiper.slideNext()\r\n })\r\n\r\n if (self.swiper.slides.length < 3) {\r\n self.NextButtonTarget.classList.add('is-hidden')\r\n self.PrevButtonTarget.classList.add('is-hidden')\r\n self.element\r\n .querySelector('.carousel-pagination')\r\n .classList.add('is-hidden')\r\n }\r\n }, 1000) \r\n }\r\n\r\n slideChange() {\r\n if (!this.swiper.isBeginning) {\r\n this.PrevButtonTarget.classList.remove('is-disabled')\r\n }\r\n\r\n if (!this.swiper.isEnd) {\r\n this.NextButtonTarget.classList.remove('is-disabled')\r\n }\r\n }\r\n}\r\n","const MicroModal = (() => {\n\n const FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=\"-\"])'];\n\n class Modal {\n constructor({\n targetModal,\n triggers = [],\n onShow = () => {},\n onClose = () => {},\n openTrigger = 'data-micromodal-trigger',\n closeTrigger = 'data-micromodal-close',\n disableScroll = false,\n disableFocus = false,\n awaitCloseAnimation = false,\n awaitOpenAnimation = false,\n debugMode = false\n }) {\n // Save a reference of the modal\n this.modal = document.getElementById(targetModal); // Save a reference to the passed config\n\n this.config = {\n debugMode,\n disableScroll,\n openTrigger,\n closeTrigger,\n onShow,\n onClose,\n awaitCloseAnimation,\n awaitOpenAnimation,\n disableFocus // Register click events only if pre binding eventListeners\n\n };\n if (triggers.length > 0) this.registerTriggers(...triggers); // pre bind functions for event listeners\n\n this.onClick = this.onClick.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n }\n /**\n * Loops through all openTriggers and binds click event\n * @param {array} triggers [Array of node elements]\n * @return {void}\n */\n\n\n registerTriggers(...triggers) {\n triggers.filter(Boolean).forEach(trigger => {\n trigger.addEventListener('click', event => this.showModal(event));\n });\n }\n\n showModal() {\n this.activeElement = document.activeElement;\n this.modal.setAttribute('aria-hidden', 'false');\n this.modal.classList.add('is-open');\n this.scrollBehaviour('disable');\n this.addEventListeners();\n\n if (this.config.awaitOpenAnimation) {\n const handler = () => {\n this.modal.removeEventListener('animationend', handler, false);\n this.setFocusToFirstNode();\n };\n\n this.modal.addEventListener('animationend', handler, false);\n } else {\n this.setFocusToFirstNode();\n }\n\n this.config.onShow(this.modal, this.activeElement);\n }\n\n closeModal() {\n const modal = this.modal;\n this.modal.setAttribute('aria-hidden', 'true');\n this.removeEventListeners();\n this.scrollBehaviour('enable');\n\n if (this.activeElement) {\n this.activeElement.focus();\n }\n\n this.config.onClose(this.modal);\n\n if (this.config.awaitCloseAnimation) {\n this.modal.addEventListener('animationend', function handler() {\n modal.classList.remove('is-open');\n modal.removeEventListener('animationend', handler, false);\n }, false);\n } else {\n modal.classList.remove('is-open');\n }\n }\n\n closeModalById(targetModal) {\n this.modal = document.getElementById(targetModal);\n if (this.modal) this.closeModal();\n }\n\n scrollBehaviour(toggle) {\n if (!this.config.disableScroll) return;\n const body = document.querySelector('body');\n\n switch (toggle) {\n case 'enable':\n Object.assign(body.style, {\n overflow: '',\n height: ''\n });\n break;\n\n case 'disable':\n Object.assign(body.style, {\n overflow: 'hidden',\n height: '100vh'\n });\n break;\n\n default:\n }\n }\n\n addEventListeners() {\n this.modal.addEventListener('touchstart', this.onClick);\n this.modal.addEventListener('click', this.onClick);\n document.addEventListener('keydown', this.onKeydown);\n }\n\n removeEventListeners() {\n this.modal.removeEventListener('touchstart', this.onClick);\n this.modal.removeEventListener('click', this.onClick);\n document.removeEventListener('keydown', this.onKeydown);\n }\n\n onClick(event) {\n if (event.target.hasAttribute(this.config.closeTrigger)) {\n this.closeModal();\n event.preventDefault();\n }\n }\n\n onKeydown(event) {\n if (event.keyCode === 27) this.closeModal(event);\n if (event.keyCode === 9) this.maintainFocus(event);\n }\n\n getFocusableNodes() {\n const nodes = this.modal.querySelectorAll(FOCUSABLE_ELEMENTS);\n return Array(...nodes);\n }\n\n setFocusToFirstNode() {\n if (this.config.disableFocus) return;\n const focusableNodes = this.getFocusableNodes();\n if (focusableNodes.length) focusableNodes[0].focus();\n }\n\n maintainFocus(event) {\n const focusableNodes = this.getFocusableNodes(); // if disableFocus is true\n\n if (!this.modal.contains(document.activeElement)) {\n focusableNodes[0].focus();\n } else {\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n\n if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n }\n }\n\n }\n /**\n * Modal prototype ends.\n * Here on code is responsible for detecting and\n * auto binding event handlers on modal triggers\n */\n // Keep a reference to the opened modal\n\n\n let activeModal = null;\n /**\n * Generates an associative array of modals and it's\n * respective triggers\n * @param {array} triggers An array of all triggers\n * @param {string} triggerAttr The data-attribute which triggers the module\n * @return {array}\n */\n\n const generateTriggerMap = (triggers, triggerAttr) => {\n const triggerMap = [];\n triggers.forEach(trigger => {\n const targetModal = trigger.attributes[triggerAttr].value;\n if (triggerMap[targetModal] === undefined) triggerMap[targetModal] = [];\n triggerMap[targetModal].push(trigger);\n });\n return triggerMap;\n };\n /**\n * Validates whether a modal of the given id exists\n * in the DOM\n * @param {number} id The id of the modal\n * @return {boolean}\n */\n\n\n const validateModalPresence = id => {\n if (!document.getElementById(id)) {\n console.warn(`MicroModal: \\u2757Seems like you have missed %c'${id}'`, 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'ID somewhere in your code. Refer example below to resolve it.');\n console.warn(`%cExample:`, 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', `
`);\n return false;\n }\n };\n /**\n * Validates if there are modal triggers present\n * in the DOM\n * @param {array} triggers An array of data-triggers\n * @return {boolean}\n */\n\n\n const validateTriggerPresence = triggers => {\n if (triggers.length <= 0) {\n console.warn(`MicroModal: \\u2757Please specify at least one %c'micromodal-trigger'`, 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'data attribute.');\n console.warn(`%cExample:`, 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', ``);\n return false;\n }\n };\n /**\n * Checks if triggers and their corresponding modals\n * are present in the DOM\n * @param {array} triggers Array of DOM nodes which have data-triggers\n * @param {array} triggerMap Associative array of modals and their triggers\n * @return {boolean}\n */\n\n\n const validateArgs = (triggers, triggerMap) => {\n validateTriggerPresence(triggers);\n if (!triggerMap) return true;\n\n for (var id in triggerMap) validateModalPresence(id);\n\n return true;\n };\n /**\n * Binds click handlers to all modal triggers\n * @param {object} config [description]\n * @return void\n */\n\n\n const init = config => {\n // Create an config object with default openTrigger\n const options = Object.assign({}, {\n openTrigger: 'data-micromodal-trigger'\n }, config); // Collects all the nodes with the trigger\n\n const triggers = [...document.querySelectorAll(`[${options.openTrigger}]`)]; // Makes a mappings of modals with their trigger nodes\n\n const triggerMap = generateTriggerMap(triggers, options.openTrigger); // Checks if modals and triggers exist in dom\n\n if (options.debugMode === true && validateArgs(triggers, triggerMap) === false) return; // For every target modal creates a new instance\n\n for (var key in triggerMap) {\n let value = triggerMap[key];\n options.targetModal = key;\n options.triggers = [...value];\n activeModal = new Modal(options); // eslint-disable-line no-new\n }\n };\n /**\n * Shows a particular modal\n * @param {string} targetModal [The id of the modal to display]\n * @param {object} config [The configuration object to pass]\n * @return {void}\n */\n\n\n const show = (targetModal, config) => {\n const options = config || {};\n options.targetModal = targetModal; // Checks if modals and triggers exist in dom\n\n if (options.debugMode === true && validateModalPresence(targetModal) === false) return; // stores reference to active modal\n\n activeModal = new Modal(options); // eslint-disable-line no-new\n\n activeModal.showModal();\n };\n /**\n * Closes the active modal\n * @param {string} targetModal [The id of the modal to close]\n * @return {void}\n */\n\n\n const close = targetModal => {\n targetModal ? activeModal.closeModalById(targetModal) : activeModal.closeModal();\n };\n\n return {\n init,\n show,\n close\n };\n})();\n\nexport default MicroModal;\n","import { Controller } from 'stimulus'\r\nimport MicroModal from 'micromodal'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.targetID = this.data.get('target')\r\n this.targetElement = document.querySelector(`#${this.targetID}`)\r\n\r\n // If no target element, disable the modal\r\n if (this.targetElement === null) {\r\n this.element.setAttribute('disabled', true)\r\n return\r\n }\r\n\r\n this.size = 'large'\r\n this.type = 'standard'\r\n if (this.data.has('size')) {\r\n this.size = this.data.get('size')\r\n }\r\n\r\n if (this.data.has('type')) {\r\n this.type = this.data.get('type')\r\n }\r\n\r\n if (this.targetElement.innerHTML.indexOf('modal') === -1) {\r\n this.targetElement.innerHTML = this.handleRender(\r\n this.targetElement.innerHTML\r\n )\r\n }\r\n\r\n MicroModal.init({\r\n // onShow: modal => console.info(`${modal.id} is shown`),\r\n onClose: () => {\r\n document.querySelector('html').classList.remove('no-scroll')\r\n if (this.type === 'media') {\r\n var event = new Event('Video:pause')\r\n window.dispatchEvent(event)\r\n }\r\n },\r\n openTrigger: 'data-modal-target',\r\n debugMode: false,\r\n })\r\n this.element.addEventListener('click', this.handleShow.bind(this))\r\n }\r\n\r\n handleShow(e) {\r\n e.preventDefault()\r\n document.querySelector('html').classList.add('no-scroll')\r\n MicroModal.show(`modal-${this.targetID}`)\r\n }\r\n\r\n handleRender(content) {\r\n return `
\r\n
\r\n
\r\n
\r\n ${content}\r\n
\r\n \r\n
\r\n
\r\n
`\r\n }\r\n}\r\n","export default [\r\n {\r\n name: 's',\r\n breakpoint: 400,\r\n unit: 'px',\r\n },\r\n {\r\n name: 'sm',\r\n breakpoint: 570,\r\n unit: 'px',\r\n },\r\n {\r\n name: 'm',\r\n breakpoint: 750,\r\n unit: 'px',\r\n },\r\n {\r\n name: 'l',\r\n breakpoint: 1000,\r\n unit: 'px',\r\n },\r\n {\r\n name: 'xl',\r\n breakpoint: 1250,\r\n unit: 'px',\r\n },\r\n {\r\n name: 'xxl',\r\n },\r\n]\r\n","import { Controller } from 'stimulus'\r\nimport responsiveWatch from 'responsive-watch'\r\nimport breakpoints from '../config/breakpoints'\r\n\r\nexport default class extends Controller {\r\n static get targets() {\r\n return [\r\n 'NarrowNavRoot',\r\n 'Container',\r\n 'PrimaryNavBtn',\r\n 'SubSection',\r\n 'SubSectionBackBtn',\r\n 'BurgerBtn',\r\n ]\r\n }\r\n\r\n connect() {\r\n // eslint-disable-next-line no-unused-vars\r\n const watchers = responsiveWatch(\r\n {\r\n sizes: breakpoints,\r\n },\r\n status => {\r\n if (status.gte.l) {\r\n this.hideSubSection()\r\n this.element.classList.remove('is-active')\r\n this.NarrowNavRootTarget.classList.remove('is-active')\r\n this.BurgerBtnTarget.classList.remove('is-active')\r\n }\r\n }\r\n )\r\n }\r\n\r\n showSubSection(event) {\r\n const subSection = event.target.nextElementSibling\r\n const subSectionHeight = subSection.scrollHeight\r\n subSection.classList.add('is-active')\r\n this.ContainerTarget.classList.add('is-active')\r\n this.ContainerTarget.style.height = `${subSectionHeight}px`\r\n }\r\n\r\n hideSubSection() {\r\n this.ContainerTarget.classList.remove('is-active')\r\n this.ContainerTarget.style.height = `auto`\r\n this.SubSectionTargets.forEach(item => item.classList.remove('is-active'))\r\n }\r\n\r\n handleToggleNavigation() {\r\n this.element.classList.toggle('is-active')\r\n this.NarrowNavRootTarget.classList.toggle('is-active')\r\n this.BurgerBtnTarget.classList.toggle('is-active')\r\n this.hideSubSection()\r\n }\r\n}\r\n","import ScrollWatcher from 'scroll-watcher'\r\nimport { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n const targetSelector = this.data.get('target')\r\n const targetElement =\r\n targetSelector && document.querySelector(targetSelector)\r\n const scroll = new ScrollWatcher()\r\n if (targetSelector === '.subNavRoot') {\r\n var header = document.getElementById('subNavRoot')\r\n var sticky = header.offsetTop\r\n scroll.on('scrolling', () => {\r\n if (window.pageYOffset > sticky) {\r\n header.classList.add('subNavRoot--sticked')\r\n } else {\r\n header.classList.remove('subNavRoot--sticked')\r\n }\r\n })\r\n } else {\r\n scroll\r\n .watch(this.element)\r\n .on('enter', () => {\r\n if (targetElement !== null) {\r\n targetElement.classList.add('is-shown')\r\n }\r\n })\r\n .on('exit', () => {\r\n if (targetElement !== null) {\r\n targetElement.classList.remove('is-shown')\r\n }\r\n })\r\n }\r\n }\r\n setMainId() {\r\n document.querySelectorAll('section')[1].setAttribute('id', 'main')\r\n }\r\n}\r\n","import crossFetch from 'cross-fetch';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar Variation = /** @class */ (function () {\n function Variation(data) {\n this.data = {};\n this.data = data;\n }\n Variation.prototype.id = function () {\n return this.data.id;\n };\n Variation.prototype.ref = function () {\n return this.data.ref;\n };\n Variation.prototype.label = function () {\n return this.data.label;\n };\n return Variation;\n}());\nvar Experiment = /** @class */ (function () {\n function Experiment(data) {\n this.data = {};\n this.data = data;\n this.variations = (data.variations || []).map(function (v) {\n return new Variation(v);\n });\n }\n Experiment.prototype.id = function () {\n return this.data.id;\n };\n Experiment.prototype.googleId = function () {\n return this.data.googleId;\n };\n Experiment.prototype.name = function () {\n return this.data.name;\n };\n return Experiment;\n}());\nvar Experiments = /** @class */ (function () {\n function Experiments(data) {\n if (data) {\n this.drafts = (data.drafts || []).map(function (exp) {\n return new Experiment(exp);\n });\n this.running = (data.running || []).map(function (exp) {\n return new Experiment(exp);\n });\n }\n }\n Experiments.prototype.current = function () {\n if (this.running.length > 0) {\n return this.running[0];\n }\n else {\n return null;\n }\n };\n Experiments.prototype.refFromCookie = function (cookie) {\n if (!cookie || cookie.trim() === '')\n return null;\n var splitted = cookie.trim().split(' ');\n if (splitted.length < 2)\n return null;\n var expId = splitted[0];\n var varIndex = parseInt(splitted[1], 10);\n var exp = this.running.filter(function (exp) {\n return exp.googleId() === expId && exp.variations.length > varIndex;\n })[0];\n return exp ? exp.variations[varIndex].ref() : null;\n };\n return Experiments;\n}());\n\nvar LazySearchForm = /** @class */ (function () {\n function LazySearchForm(id, api) {\n this.id = id;\n this.api = api;\n this.fields = {};\n }\n LazySearchForm.prototype.set = function (key, value) {\n this.fields[key] = value;\n return this;\n };\n LazySearchForm.prototype.ref = function (ref) {\n return this.set('ref', ref);\n };\n LazySearchForm.prototype.query = function (query) {\n return this.set('q', query);\n };\n LazySearchForm.prototype.pageSize = function (size) {\n return this.set('pageSize', size);\n };\n LazySearchForm.prototype.fetch = function (fields) {\n console.warn('Warning: Using Fetch is deprecated. Use the property `graphQuery` instead.');\n return this.set('fetch', fields);\n };\n LazySearchForm.prototype.fetchLinks = function (fields) {\n console.warn('Warning: Using FetchLinks is deprecated. Use the property `graphQuery` instead.');\n return this.set('fetchLinks', fields);\n };\n LazySearchForm.prototype.graphQuery = function (query) {\n return this.set('graphQuery', query);\n };\n LazySearchForm.prototype.lang = function (langCode) {\n return this.set('lang', langCode);\n };\n LazySearchForm.prototype.page = function (p) {\n return this.set('page', p);\n };\n LazySearchForm.prototype.after = function (documentId) {\n return this.set('after', documentId);\n };\n LazySearchForm.prototype.orderings = function (orderings) {\n return this.set('orderings', orderings);\n };\n LazySearchForm.prototype.url = function () {\n var _this = this;\n return this.api.get().then(function (api) {\n return LazySearchForm.toSearchForm(_this, api).url();\n });\n };\n LazySearchForm.prototype.submit = function (cb) {\n var _this = this;\n return this.api.get().then(function (api) {\n return LazySearchForm.toSearchForm(_this, api).submit(cb);\n });\n };\n LazySearchForm.toSearchForm = function (lazyForm, api) {\n var form = api.form(lazyForm.id);\n if (form) {\n return Object.keys(lazyForm.fields).reduce(function (form, fieldKey) {\n var fieldValue = lazyForm.fields[fieldKey];\n if (fieldKey === 'q') {\n return form.query(fieldValue);\n }\n else if (fieldKey === 'pageSize') {\n return form.pageSize(fieldValue);\n }\n else if (fieldKey === 'fetch') {\n return form.fetch(fieldValue);\n }\n else if (fieldKey === 'fetchLinks') {\n return form.fetchLinks(fieldValue);\n }\n else if (fieldKey === 'graphQuery') {\n return form.graphQuery(fieldValue);\n }\n else if (fieldKey === 'lang') {\n return form.lang(fieldValue);\n }\n else if (fieldKey === 'page') {\n return form.page(fieldValue);\n }\n else if (fieldKey === 'after') {\n return form.after(fieldValue);\n }\n else if (fieldKey === 'orderings') {\n return form.orderings(fieldValue);\n }\n else {\n return form.set(fieldKey, fieldValue);\n }\n }, form);\n }\n else {\n throw new Error(\"Unable to access to form \" + lazyForm.id);\n }\n };\n return LazySearchForm;\n}());\nvar SearchForm = /** @class */ (function () {\n function SearchForm(form, httpClient) {\n this.httpClient = httpClient;\n this.form = form;\n this.data = {};\n for (var field in form.fields) {\n if (form.fields[field]['default']) {\n this.data[field] = [form.fields[field]['default']];\n }\n }\n }\n SearchForm.prototype.set = function (field, value) {\n var fieldDesc = this.form.fields[field];\n if (!fieldDesc)\n throw new Error('Unknown field ' + field);\n var checkedValue = value === '' || value === undefined ? null : value;\n var values = this.data[field] || [];\n if (fieldDesc.multiple) {\n values = checkedValue ? values.concat([checkedValue]) : values;\n }\n else {\n values = checkedValue ? [checkedValue] : values;\n }\n this.data[field] = values;\n return this;\n };\n /**\n * Sets a ref to query on for this SearchForm. This is a mandatory\n * method to call before calling submit(), and api.form('everything').submit()\n * will not work.\n */\n SearchForm.prototype.ref = function (ref) {\n return this.set('ref', ref);\n };\n /**\n * Sets a predicate-based query for this SearchForm. This is where you\n * paste what you compose in your prismic.io API browser.\n */\n SearchForm.prototype.query = function (query) {\n if (typeof query === 'string') {\n return this.query([query]);\n }\n else if (Array.isArray(query)) {\n return this.set('q', \"[\" + query.join('') + \"]\");\n }\n else {\n throw new Error(\"Invalid query : \" + query);\n }\n };\n /**\n * Sets a page size to query for this SearchForm. This is an optional method.\n *\n * @param {number} size - The page size\n * @returns {SearchForm} - The SearchForm itself\n */\n SearchForm.prototype.pageSize = function (size) {\n return this.set('pageSize', size);\n };\n /**\n * Restrict the results document to the specified fields\n */\n SearchForm.prototype.fetch = function (fields) {\n console.warn('Warning: Using Fetch is deprecated. Use the property `graphQuery` instead.');\n var strFields = Array.isArray(fields) ? fields.join(',') : fields;\n return this.set('fetch', strFields);\n };\n /**\n * Include the requested fields in the DocumentLink instances in the result\n */\n SearchForm.prototype.fetchLinks = function (fields) {\n console.warn('Warning: Using FetchLinks is deprecated. Use the property `graphQuery` instead.');\n var strFields = Array.isArray(fields) ? fields.join(',') : fields;\n return this.set('fetchLinks', strFields);\n };\n /**\n * Sets the graphquery to query for this SearchForm. This is an optional method.\n */\n SearchForm.prototype.graphQuery = function (query) {\n return this.set('graphQuery', query);\n };\n /**\n * Sets the language to query for this SearchForm. This is an optional method.\n */\n SearchForm.prototype.lang = function (langCode) {\n return this.set('lang', langCode);\n };\n /**\n * Sets the page number to query for this SearchForm. This is an optional method.\n */\n SearchForm.prototype.page = function (p) {\n return this.set('page', p);\n };\n /**\n * Remove all the documents except for those after the specified document in the list. This is an optional method.\n */\n SearchForm.prototype.after = function (documentId) {\n return this.set('after', documentId);\n };\n /**\n * Sets the orderings to query for this SearchForm. This is an optional method.\n */\n SearchForm.prototype.orderings = function (orderings) {\n if (!orderings) {\n return this;\n }\n else {\n return this.set('orderings', \"[\" + orderings.join(',') + \"]\");\n }\n };\n /**\n * Build the URL to query\n */\n SearchForm.prototype.url = function () {\n var url = this.form.action;\n if (this.data) {\n var sep = (url.indexOf('?') > -1 ? '&' : '?');\n for (var key in this.data) {\n if (Object.prototype.hasOwnProperty.call(this.data, key)) {\n var values = this.data[key];\n if (values) {\n for (var i = 0; i < values.length; i++) {\n url += sep + key + '=' + encodeURIComponent(values[i]);\n sep = '&';\n }\n }\n }\n }\n }\n return url;\n };\n /**\n * Submits the query, and calls the callback function.\n */\n SearchForm.prototype.submit = function (cb) {\n return this.httpClient.cachedRequest(this.url()).then(function (response) {\n cb && cb(null, response);\n return response;\n }).catch(function (error) {\n cb && cb(error);\n throw error;\n });\n };\n return SearchForm;\n}());\n\nvar OPERATOR = {\n at: 'at',\n not: 'not',\n missing: 'missing',\n has: 'has',\n any: 'any',\n in: 'in',\n fulltext: 'fulltext',\n similar: 'similar',\n numberGt: 'number.gt',\n numberLt: 'number.lt',\n numberInRange: 'number.inRange',\n dateBefore: 'date.before',\n dateAfter: 'date.after',\n dateBetween: 'date.between',\n dateDayOfMonth: 'date.day-of-month',\n dateDayOfMonthAfter: 'date.day-of-month-after',\n dateDayOfMonthBefore: 'date.day-of-month-before',\n dateDayOfWeek: 'date.day-of-week',\n dateDayOfWeekAfter: 'date.day-of-week-after',\n dateDayOfWeekBefore: 'date.day-of-week-before',\n dateMonth: 'date.month',\n dateMonthBefore: 'date.month-before',\n dateMonthAfter: 'date.month-after',\n dateYear: 'date.year',\n dateHour: 'date.hour',\n dateHourBefore: 'date.hour-before',\n dateHourAfter: 'date.hour-after',\n GeopointNear: 'geopoint.near',\n};\nfunction encode(value) {\n if (typeof value === 'string') {\n return \"\\\"\" + value + \"\\\"\";\n }\n else if (typeof value === 'number') {\n return value.toString();\n }\n else if (value instanceof Date) {\n return value.getTime().toString();\n }\n else if (Array.isArray(value)) {\n return \"[\" + value.map(function (v) { return encode(v); }).join(',') + \"]\";\n }\n else if (typeof value === \"boolean\") {\n return value.toString();\n }\n else {\n throw new Error(\"Unable to encode \" + value + \" of type \" + typeof value);\n }\n}\nvar geopoint = {\n near: function (fragment, latitude, longitude, radius) {\n return \"[\" + OPERATOR.GeopointNear + \"(\" + fragment + \", \" + latitude + \", \" + longitude + \", \" + radius + \")]\";\n },\n};\nvar date = {\n before: function (fragment, before) {\n return \"[\" + OPERATOR.dateBefore + \"(\" + fragment + \", \" + encode(before) + \")]\";\n },\n after: function (fragment, after) {\n return \"[\" + OPERATOR.dateAfter + \"(\" + fragment + \", \" + encode(after) + \")]\";\n },\n between: function (fragment, before, after) {\n return \"[\" + OPERATOR.dateBetween + \"(\" + fragment + \", \" + encode(before) + \", \" + encode(after) + \")]\";\n },\n dayOfMonth: function (fragment, day) {\n return \"[\" + OPERATOR.dateDayOfMonth + \"(\" + fragment + \", \" + day + \")]\";\n },\n dayOfMonthAfter: function (fragment, day) {\n return \"[\" + OPERATOR.dateDayOfMonthAfter + \"(\" + fragment + \", \" + day + \")]\";\n },\n dayOfMonthBefore: function (fragment, day) {\n return \"[\" + OPERATOR.dateDayOfMonthBefore + \"(\" + fragment + \", \" + day + \")]\";\n },\n dayOfWeek: function (fragment, day) {\n return \"[\" + OPERATOR.dateDayOfWeek + \"(\" + fragment + \", \" + encode(day) + \")]\";\n },\n dayOfWeekAfter: function (fragment, day) {\n return \"[\" + OPERATOR.dateDayOfWeekAfter + \"(\" + fragment + \", \" + encode(day) + \")]\";\n },\n dayOfWeekBefore: function (fragment, day) {\n return \"[\" + OPERATOR.dateDayOfWeekBefore + \"(\" + fragment + \", \" + encode(day) + \")]\";\n },\n month: function (fragment, month) {\n return \"[\" + OPERATOR.dateMonth + \"(\" + fragment + \", \" + encode(month) + \")]\";\n },\n monthBefore: function (fragment, month) {\n return \"[\" + OPERATOR.dateMonthBefore + \"(\" + fragment + \", \" + encode(month) + \")]\";\n },\n monthAfter: function (fragment, month) {\n return \"[\" + OPERATOR.dateMonthAfter + \"(\" + fragment + \", \" + encode(month) + \")]\";\n },\n year: function (fragment, year) {\n return \"[\" + OPERATOR.dateYear + \"(\" + fragment + \", \" + year + \")]\";\n },\n hour: function (fragment, hour) {\n return \"[\" + OPERATOR.dateHour + \"(\" + fragment + \", \" + hour + \")]\";\n },\n hourBefore: function (fragment, hour) {\n return \"[\" + OPERATOR.dateHourBefore + \"(\" + fragment + \", \" + hour + \")]\";\n },\n hourAfter: function (fragment, hour) {\n return \"[\" + OPERATOR.dateHourAfter + \"(\" + fragment + \", \" + hour + \")]\";\n },\n};\nvar number = {\n gt: function (fragment, value) {\n return \"[\" + OPERATOR.numberGt + \"(\" + fragment + \", \" + value + \")]\";\n },\n lt: function (fragment, value) {\n return \"[\" + OPERATOR.numberLt + \"(\" + fragment + \", \" + value + \")]\";\n },\n inRange: function (fragment, before, after) {\n return \"[\" + OPERATOR.numberInRange + \"(\" + fragment + \", \" + before + \", \" + after + \")]\";\n },\n};\nvar Predicates = {\n at: function (fragment, value) {\n return \"[\" + OPERATOR.at + \"(\" + fragment + \", \" + encode(value) + \")]\";\n },\n not: function (fragment, value) {\n return \"[\" + OPERATOR.not + \"(\" + fragment + \", \" + encode(value) + \")]\";\n },\n missing: function (fragment) {\n return \"[\" + OPERATOR.missing + \"(\" + fragment + \")]\";\n },\n has: function (fragment) {\n return \"[\" + OPERATOR.has + \"(\" + fragment + \")]\";\n },\n any: function (fragment, values) {\n return \"[\" + OPERATOR.any + \"(\" + fragment + \", \" + encode(values) + \")]\";\n },\n in: function (fragment, values) {\n return \"[\" + OPERATOR.in + \"(\" + fragment + \", \" + encode(values) + \")]\";\n },\n fulltext: function (fragment, value) {\n return \"[\" + OPERATOR.fulltext + \"(\" + fragment + \", \" + encode(value) + \")]\";\n },\n similar: function (documentId, maxResults) {\n return \"[\" + OPERATOR.similar + \"(\\\"\" + documentId + \"\\\", \" + maxResults + \")]\";\n },\n date: date,\n dateBefore: date.before,\n dateAfter: date.after,\n dateBetween: date.between,\n dayOfMonth: date.dayOfMonth,\n dayOfMonthAfter: date.dayOfMonthAfter,\n dayOfMonthBefore: date.dayOfMonthBefore,\n dayOfWeek: date.dayOfWeek,\n dayOfWeekAfter: date.dayOfWeekAfter,\n dayOfWeekBefore: date.dayOfWeekBefore,\n month: date.month,\n monthBefore: date.monthBefore,\n monthAfter: date.monthAfter,\n year: date.year,\n hour: date.hour,\n hourBefore: date.hourBefore,\n hourAfter: date.hourAfter,\n number: number,\n gt: number.gt,\n lt: number.lt,\n inRange: number.inRange,\n near: geopoint.near,\n geopoint: geopoint,\n};\n\n/* eslint-disable */\n// Some portions of code from https://github.com/jshttp/cookie\nvar decode = decodeURIComponent;\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n }\n catch (e) {\n return str;\n }\n}\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n var obj = {};\n var opt = options || {};\n var pairs = str.split(/; */);\n var dec = opt.decode || decode;\n pairs.forEach(function (pair) {\n var eq_idx = pair.indexOf('=');\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n return;\n }\n var key = pair.substr(0, eq_idx).trim();\n var val = pair.substr(++eq_idx, pair.length).trim();\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n });\n return obj;\n}\nvar Cookies = { parse: parse };\n\nfunction createPreviewResolver(token, documentId, getDocByID) {\n var resolve = function (linkResolver, defaultUrl, cb) {\n if (documentId && getDocByID) {\n return getDocByID(documentId, { ref: token }).then(function (document) {\n if (!document) {\n cb && cb(null, defaultUrl);\n return defaultUrl;\n }\n else {\n var url = (linkResolver && linkResolver(document)) || document.url || defaultUrl;\n cb && cb(null, url);\n return url;\n }\n });\n }\n else {\n return Promise.resolve(defaultUrl);\n }\n };\n return { token: token, documentId: documentId, resolve: resolve };\n}\n\nvar PREVIEW_COOKIE = 'io.prismic.preview';\nvar EXPERIMENT_COOKIE = 'io.prismic.experiment';\nvar ResolvedApi = /** @class */ (function () {\n function ResolvedApi(data, httpClient, options) {\n this.data = data;\n this.masterRef = data.refs.filter(function (ref) { return ref.isMasterRef; })[0];\n this.experiments = new Experiments(data.experiments);\n this.bookmarks = data.bookmarks;\n this.httpClient = httpClient;\n this.options = options;\n this.refs = data.refs;\n this.tags = data.tags;\n this.types = data.types;\n this.languages = data.languages;\n }\n /**\n * Returns a useable form from its id, as described in the RESTful description of the API.\n * For instance: api.form(\"everything\") works on every repository (as \"everything\" exists by default)\n * You can then chain the calls: api.form(\"everything\").query('[[:d = at(document.id, \"UkL0gMuvzYUANCpf\")]]').ref(ref).submit()\n */\n ResolvedApi.prototype.form = function (formId) {\n var form = this.data.forms[formId];\n if (form) {\n return new SearchForm(form, this.httpClient);\n }\n return null;\n };\n ResolvedApi.prototype.everything = function () {\n var f = this.form('everything');\n if (!f)\n throw new Error('Missing everything form');\n return f;\n };\n /**\n * The ID of the master ref on this prismic.io API.\n * Do not use like this: searchForm.ref(api.master()).\n * Instead, set your ref once in a variable, and call it when you need it; this will allow to change the ref you're viewing easily for your entire page.\n */\n ResolvedApi.prototype.master = function () {\n return this.masterRef.ref;\n };\n /**\n * Returns the ref ID for a given ref's label.\n * Do not use like this: searchForm.ref(api.ref(\"Future release label\")).\n * Instead, set your ref once in a variable, and call it when you need it; this will allow to change the ref you're viewing easily for your entire page.\n */\n ResolvedApi.prototype.ref = function (label) {\n var ref = this.data.refs.filter(function (ref) { return ref.label === label; })[0];\n return ref ? ref.ref : null;\n };\n ResolvedApi.prototype.currentExperiment = function () {\n return this.experiments.current();\n };\n /**\n * Query the repository\n */\n ResolvedApi.prototype.query = function (q, optionsOrCallback, cb) {\n if (cb === void 0) { cb = function () { }; }\n var _a = typeof optionsOrCallback === 'function'\n ? { options: {}, callback: optionsOrCallback }\n : { options: optionsOrCallback || {}, callback: cb }, options = _a.options, callback = _a.callback;\n var form = this.everything();\n for (var key in options) {\n form = form.set(key, options[key]);\n }\n if (!options.ref) {\n // Look in cookies if we have a ref (preview or experiment)\n var cookieString = '';\n if (this.options.req) { // NodeJS\n cookieString = this.options.req.headers['cookie'] || '';\n }\n else if (typeof window !== 'undefined' && window.document) { // Browser\n cookieString = window.document.cookie || '';\n }\n var cookies = Cookies.parse(cookieString);\n var previewRef = cookies[PREVIEW_COOKIE];\n var experimentRef = this.experiments.refFromCookie(cookies[EXPERIMENT_COOKIE]);\n form = form.ref(previewRef || experimentRef || this.masterRef.ref);\n }\n if (q) {\n form.query(q);\n }\n return form.submit(callback);\n };\n /**\n * Retrieve the document returned by the given query\n * @param {string|array|Predicate} the query\n * @param {object} additional parameters. In NodeJS, pass the request as 'req'.\n * @param {function} callback(err, doc)\n */\n ResolvedApi.prototype.queryFirst = function (q, optionsOrCallback, cb) {\n var _a = typeof optionsOrCallback === 'function'\n ? { options: {}, callback: optionsOrCallback }\n : { options: optionsOrCallback || {}, callback: cb || (function () { }) }, options = _a.options, callback = _a.callback;\n options.page = 1;\n options.pageSize = 1;\n return this.query(q, options).then(function (response) {\n var document = response && response.results && response.results[0];\n callback(null, document);\n return document;\n }).catch(function (error) {\n callback(error);\n throw error;\n });\n };\n /**\n * Retrieve the document with the given id\n */\n ResolvedApi.prototype.getByID = function (id, maybeOptions, cb) {\n var options = maybeOptions ? __assign({}, maybeOptions) : {};\n if (!options.lang)\n options.lang = '*';\n return this.queryFirst(Predicates.at('document.id', id), options, cb);\n };\n /**\n * Retrieve multiple documents from an array of id\n */\n ResolvedApi.prototype.getByIDs = function (ids, maybeOptions, cb) {\n var options = maybeOptions ? __assign({}, maybeOptions) : {};\n if (!options.lang)\n options.lang = '*';\n return this.query(Predicates.in('document.id', ids), options, cb);\n };\n /**\n * Retrieve the document with the given uid\n */\n ResolvedApi.prototype.getByUID = function (type, uid, maybeOptions, cb) {\n var options = maybeOptions ? __assign({}, maybeOptions) : {};\n if (options.lang === '*')\n throw new Error(\"FORBIDDEN. You can't use getByUID with *, use the predicates instead.\");\n if (!options.page)\n options.page = 1;\n return this.queryFirst(Predicates.at(\"my.\" + type + \".uid\", uid), options, cb);\n };\n /**\n * Retrieve the singleton document with the given type\n */\n ResolvedApi.prototype.getSingle = function (type, maybeOptions, cb) {\n var options = maybeOptions ? __assign({}, maybeOptions) : {};\n return this.queryFirst(Predicates.at('document.type', type), options, cb);\n };\n /**\n * Retrieve the document with the given bookmark\n */\n ResolvedApi.prototype.getBookmark = function (bookmark, maybeOptions, cb) {\n var id = this.data.bookmarks[bookmark];\n if (id) {\n return this.getByID(id, maybeOptions, cb);\n }\n else {\n return Promise.reject('Error retrieving bookmarked id');\n }\n };\n ResolvedApi.prototype.getPreviewResolver = function (token, documentId) {\n return createPreviewResolver(token, documentId, this.getByID.bind(this));\n };\n ResolvedApi.prototype.previewSession = function (token, linkResolver, defaultUrl, cb) {\n var _this = this;\n console.warn('previewSession function is deprecated in favor of getPreviewResolver function.');\n return new Promise(function (resolve, reject) {\n _this.httpClient.request(token, function (e, result) {\n if (e) {\n cb && cb(e);\n reject(e);\n }\n else if (result) {\n if (!result.mainDocument) {\n cb && cb(null, defaultUrl);\n resolve(defaultUrl);\n }\n else {\n return _this.getByID(result.mainDocument, { ref: token }).then(function (document) {\n if (!document) {\n cb && cb(null, defaultUrl);\n resolve(defaultUrl);\n }\n else {\n var url = (linkResolver && linkResolver(document)) || document.url || defaultUrl;\n cb && cb(null, url);\n resolve(url);\n }\n }).catch(reject);\n }\n }\n });\n });\n };\n return ResolvedApi;\n}());\n\n/* eslint-disable */\n/**\n* A doubly linked list-based Least Recently Used (LRU) cache. Will keep most\n* recently used items while discarding least recently used items when its limit\n* is reached.\n*\n* Licensed under MIT. Copyright (c) 2010 Rasmus Andersson \n* Typescript-ified by Oleksandr Nikitin \n*\n* Illustration of the design:\n*\n* entry entry entry entry\n* ______ ______ ______ ______\n* | head |.newer => | |.newer => | |.newer => | tail |\n* | A | | B | | C | | D |\n* |______| <= older.|______| <= older.|______| <= older.|______|\n*\n* removed <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- added\n*/\nfunction MakeLRUCache(limit) {\n return new LRUCache(limit);\n}\nfunction LRUCache(limit) {\n // Current size of the cache. (Read-only).\n this.size = 0;\n // Maximum number of items this cache can hold.\n this.limit = limit;\n this._keymap = {};\n}\n/**\n * Put into the cache associated with . Returns the entry which was\n * removed to make room for the new entry. Otherwise undefined is returned\n * (i.e. if there was enough room already).\n */\nLRUCache.prototype.put = function (key, value) {\n var entry = { key: key, value: value };\n // Note: No protection agains replacing, and thus orphan entries. By design.\n this._keymap[key] = entry;\n if (this.tail) {\n // link previous tail to the new tail (entry)\n this.tail.newer = entry;\n entry.older = this.tail;\n }\n else {\n // we're first in -- yay\n this.head = entry;\n }\n // add new entry to the end of the linked list -- it's now the freshest entry.\n this.tail = entry;\n if (this.size === this.limit) {\n // we hit the limit -- remove the head\n return this.shift();\n }\n else {\n // increase the size counter\n this.size++;\n }\n};\n/**\n * Purge the least recently used (oldest) entry from the cache. Returns the\n * removed entry or undefined if the cache was empty.\n *\n * If you need to perform any form of finalization of purged items, this is a\n * good place to do it. Simply override/replace this function:\n *\n * var c = new LRUCache(123);\n * c.shift = function() {\n * var entry = LRUCache.prototype.shift.call(this);\n * doSomethingWith(entry);\n * return entry;\n * }\n */\nLRUCache.prototype.shift = function () {\n // todo: handle special case when limit == 1\n var entry = this.head;\n if (entry) {\n if (this.head.newer) {\n this.head = this.head.newer;\n this.head.older = undefined;\n }\n else {\n this.head = undefined;\n }\n // Remove last strong reference to and remove links from the purged\n // entry being returned:\n entry.newer = entry.older = undefined;\n // delete is slow, but we need to do this to avoid uncontrollable growth:\n delete this._keymap[entry.key];\n }\n console.log('purging ', entry.key);\n return entry;\n};\n/**\n * Get and register recent use of . Returns the value associated with \n * or undefined if not in cache.\n */\nLRUCache.prototype.get = function (key, returnEntry) {\n // First, find our cache entry\n var entry = this._keymap[key];\n if (entry === undefined)\n return; // Not cached. Sorry.\n // As was found in the cache, register it as being requested recently\n if (entry === this.tail) {\n // Already the most recently used entry, so no need to update the list\n return returnEntry ? entry : entry.value;\n }\n // HEAD--------------TAIL\n // <.older .newer>\n // <--- add direction --\n // A B C E\n if (entry.newer) {\n if (entry === this.head)\n this.head = entry.newer;\n entry.newer.older = entry.older; // C <-- E.\n }\n if (entry.older)\n entry.older.newer = entry.newer; // C. --> E\n entry.newer = undefined; // D --x\n entry.older = this.tail; // D. --> E\n if (this.tail)\n this.tail.newer = entry; // E. <-- D\n this.tail = entry;\n return returnEntry ? entry : entry.value;\n};\n// ----------------------------------------------------------------------------\n// Following code is optional and can be removed without breaking the core\n// functionality.\n/**\n * Check if is in the cache without registering recent use. Feasible if\n * you do not want to chage the state of the cache, but only \"peek\" at it.\n * Returns the entry associated with if found, or undefined if not found.\n */\nLRUCache.prototype.find = function (key) {\n return this._keymap[key];\n};\n/**\n * Update the value of entry with . Returns the old value, or undefined if\n * entry was not in the cache.\n */\nLRUCache.prototype.set = function (key, value) {\n var oldvalue;\n var entry = this.get(key, true);\n if (entry) {\n oldvalue = entry.value;\n entry.value = value;\n }\n else {\n oldvalue = this.put(key, value);\n if (oldvalue)\n oldvalue = oldvalue.value;\n }\n return oldvalue;\n};\n/**\n * Remove entry from cache and return its value. Returns undefined if not\n * found.\n */\nLRUCache.prototype.remove = function (key) {\n var entry = this._keymap[key];\n if (!entry)\n return;\n delete this._keymap[entry.key]; // need to do delete unfortunately\n if (entry.newer && entry.older) {\n // relink the older entry with the newer entry\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n else if (entry.newer) {\n // remove the link to us\n entry.newer.older = undefined;\n // link the newer entry to head\n this.head = entry.newer;\n }\n else if (entry.older) {\n // remove the link to us\n entry.older.newer = undefined;\n // link the newer entry to head\n this.tail = entry.older;\n }\n else { // if(entry.older === undefined && entry.newer === undefined) {\n this.head = this.tail = undefined;\n }\n this.size--;\n return entry.value;\n};\n/** Removes all entries */\nLRUCache.prototype.removeAll = function () {\n // This should be safe, as we never expose strong refrences to the outside\n this.head = this.tail = undefined;\n this.size = 0;\n this._keymap = {};\n};\n/**\n * Return an array containing all keys of entries stored in the cache object, in\n * arbitrary order.\n */\nif (typeof Object.keys === 'function') {\n LRUCache.prototype.keys = function () { return Object.keys(this._keymap); };\n}\nelse {\n LRUCache.prototype.keys = function () {\n var keys = [];\n for (var k in this._keymap)\n keys.push(k);\n return keys;\n };\n}\n/**\n * Call `fun` for each entry. Starting with the newest entry if `desc` is a true\n * value, otherwise starts with the oldest (head) enrty and moves towards the\n * tail.\n *\n * `fun` is called with 3 arguments in the context `context`:\n * `fun.call(context, Object key, Object value, LRUCache self)`\n */\nLRUCache.prototype.forEach = function (fun, context, desc) {\n var entry;\n if (context === true) {\n desc = true;\n context = undefined;\n }\n else if (typeof context !== 'object')\n context = this;\n if (desc) {\n entry = this.tail;\n while (entry) {\n fun.call(context, entry.key, entry.value, this);\n entry = entry.older;\n }\n }\n else {\n entry = this.head;\n while (entry) {\n fun.call(context, entry.key, entry.value, this);\n entry = entry.newer;\n }\n }\n};\n/** Returns a JSON (array) representation */\n//LRUCache.prototype.toJSON = function () {\n// var s: IEntry[] = [], entry = this.head;\n// while (entry) {\n// s.push({ key: entry.key.toJSON(), value: entry.value.toJSON() });\n// entry = entry.newer;\n// }\n// return s;\n//};\n/** Returns a String representation */\nLRUCache.prototype.toString = function () {\n var s = '', entry = this.head;\n while (entry) {\n s += String(entry.key) + ':' + entry.value;\n entry = entry.newer;\n if (entry)\n s += ' < ';\n }\n return s;\n};\n// Export ourselves\n//if (typeof this === 'object') this.LRUCache = LRUCache;\n\nvar DefaultApiCache = /** @class */ (function () {\n function DefaultApiCache(limit) {\n if (limit === void 0) { limit = 1000; }\n this.lru = MakeLRUCache(limit);\n }\n DefaultApiCache.prototype.isExpired = function (key) {\n var value = this.lru.get(key, false);\n if (value) {\n return value.expiredIn !== 0 && value.expiredIn < Date.now();\n }\n else {\n return false;\n }\n };\n DefaultApiCache.prototype.get = function (key, cb) {\n var value = this.lru.get(key, false);\n if (value && !this.isExpired(key)) {\n cb(null, value.data);\n }\n else {\n cb && cb(null);\n }\n };\n DefaultApiCache.prototype.set = function (key, value, ttl, cb) {\n this.lru.remove(key);\n this.lru.put(key, {\n data: value,\n expiredIn: ttl ? (Date.now() + (ttl * 1000)) : 0,\n });\n cb && cb(null);\n };\n DefaultApiCache.prototype.remove = function (key, cb) {\n this.lru.remove(key);\n cb && cb(null);\n };\n DefaultApiCache.prototype.clear = function (cb) {\n this.lru.removeAll();\n cb && cb(null);\n };\n return DefaultApiCache;\n}());\n\nfunction fetchRequest(url, options, callback) {\n var fetchOptions = {\n headers: {\n Accept: 'application/json',\n },\n };\n if (options && options.proxyAgent) {\n fetchOptions.agent = options.proxyAgent;\n }\n // can't use number because of NodeJS globals included\n var timeoutId;\n var fetchPromise = crossFetch(url, fetchOptions);\n var promise = options.timeoutInMs ? Promise.race([\n fetchPromise,\n new Promise(function (_, reject) {\n timeoutId = setTimeout(function () { return reject(new Error(url + \" response timeout\")); }, options.timeoutInMs);\n })\n ]) : fetchPromise;\n promise.then(function (resp) {\n clearTimeout(timeoutId);\n if (~~(resp.status / 100 !== 2)) {\n /**\n * @description\n * drain the resp before throwing an error to prevent memory leaks\n * @link https://github.com/bitinn/node-fetch/issues/83\n */\n return resp.text().then(function () {\n var e = new Error(\"Unexpected status code [\" + resp.status + \"] on URL \" + url);\n e.status = resp.status;\n throw e;\n });\n }\n return resp.json().then(function (result) {\n var cacheControl = resp.headers.get('cache-control');\n var parsedCacheControl = cacheControl ? /max-age=(\\d+)/.exec(cacheControl) : null;\n var ttl = parsedCacheControl ? parseInt(parsedCacheControl[1], 10) : undefined;\n callback(null, result, resp, ttl);\n });\n }).catch(function (err) {\n clearTimeout(timeoutId);\n callback(err);\n });\n}\nvar DefaultRequestHandler = /** @class */ (function () {\n function DefaultRequestHandler(options) {\n this.options = options || {};\n }\n DefaultRequestHandler.prototype.request = function (url, callback) {\n fetchRequest(url, this.options, callback);\n };\n return DefaultRequestHandler;\n}());\n\nvar HttpClient = /** @class */ (function () {\n function HttpClient(requestHandler, cache, proxyAgent, timeoutInMs) {\n this.requestHandler = requestHandler || new DefaultRequestHandler({ proxyAgent: proxyAgent, timeoutInMs: timeoutInMs });\n this.cache = cache || new DefaultApiCache();\n }\n HttpClient.prototype.request = function (url, callback) {\n this.requestHandler.request(url, function (err, result, xhr, ttl) {\n if (err) {\n callback && callback(err, null, xhr, ttl);\n }\n else if (result) {\n callback && callback(null, result, xhr, ttl);\n }\n });\n };\n /**\n * Fetch a URL corresponding to a query, and parse the response as a Response object\n */\n HttpClient.prototype.cachedRequest = function (url, maybeOptions) {\n var _this = this;\n var options = maybeOptions || {};\n var run = function (cb) {\n var cacheKey = options.cacheKey || url;\n _this.cache.get(cacheKey, function (cacheGetError, cacheGetValue) {\n if (cacheGetError || cacheGetValue) {\n cb(cacheGetError, cacheGetValue);\n }\n else {\n _this.request(url, function (fetchError, fetchValue, _, ttlReq) {\n if (fetchError) {\n cb(fetchError, null);\n }\n else {\n var ttl = ttlReq || options.ttl;\n if (ttl) {\n _this.cache.set(cacheKey, fetchValue, ttl, cb);\n }\n cb(null, fetchValue);\n }\n });\n }\n });\n };\n return new Promise(function (resolve, reject) {\n run(function (err, value) {\n if (err)\n reject(err);\n if (value)\n resolve(value);\n });\n });\n };\n return HttpClient;\n}());\n\nfunction separator(url) {\n return url.indexOf('?') > -1 ? '&' : '?';\n}\nvar Api = /** @class */ (function () {\n function Api(url, options) {\n this.options = options || {};\n this.url = url;\n if (this.options.accessToken) {\n var accessTokenParam = \"access_token=\" + this.options.accessToken;\n this.url += separator(url) + accessTokenParam;\n }\n if (this.options.routes) {\n this.url += separator(url) + (\"routes=\" + encodeURIComponent(JSON.stringify(this.options.routes)));\n }\n this.apiDataTTL = this.options.apiDataTTL || 5;\n this.httpClient = new HttpClient(this.options.requestHandler, this.options.apiCache, this.options.proxyAgent, this.options.timeoutInMs);\n }\n /**\n * Fetches data used to construct the api client, from cache if it's\n * present, otherwise from calling the prismic api endpoint (which is\n * then cached).\n */\n Api.prototype.get = function (cb) {\n var _this = this;\n return this.httpClient.cachedRequest(this.url, { ttl: this.apiDataTTL }).then(function (data) {\n var resolvedApi = new ResolvedApi(data, _this.httpClient, _this.options);\n cb && cb(null, resolvedApi);\n return resolvedApi;\n }).catch(function (error) {\n cb && cb(error);\n throw error;\n });\n };\n return Api;\n}());\n\nvar DefaultClient = /** @class */ (function () {\n function DefaultClient(url, options) {\n this.api = new Api(url, options);\n }\n DefaultClient.prototype.getApi = function () {\n return this.api.get();\n };\n DefaultClient.prototype.everything = function () {\n return this.form('everything');\n };\n DefaultClient.prototype.form = function (formId) {\n return new LazySearchForm(formId, this.api);\n };\n DefaultClient.prototype.query = function (q, optionsOrCallback, cb) {\n return this.getApi().then(function (api) { return api.query(q, optionsOrCallback, cb); });\n };\n DefaultClient.prototype.queryFirst = function (q, optionsOrCallback, cb) {\n return this.getApi().then(function (api) { return api.queryFirst(q, optionsOrCallback, cb); });\n };\n DefaultClient.prototype.getByID = function (id, options, cb) {\n return this.getApi().then(function (api) { return api.getByID(id, options, cb); });\n };\n DefaultClient.prototype.getByIDs = function (ids, options, cb) {\n return this.getApi().then(function (api) { return api.getByIDs(ids, options, cb); });\n };\n DefaultClient.prototype.getByUID = function (type, uid, options, cb) {\n return this.getApi().then(function (api) { return api.getByUID(type, uid, options, cb); });\n };\n DefaultClient.prototype.getSingle = function (type, options, cb) {\n return this.getApi().then(function (api) { return api.getSingle(type, options, cb); });\n };\n DefaultClient.prototype.getBookmark = function (bookmark, options, cb) {\n return this.getApi().then(function (api) { return api.getBookmark(bookmark, options, cb); });\n };\n DefaultClient.prototype.previewSession = function (token, linkResolver, defaultUrl, cb) {\n return this.getApi().then(function (api) { return api.previewSession(token, linkResolver, defaultUrl, cb); });\n };\n DefaultClient.prototype.getPreviewResolver = function (token, documentId) {\n var _this = this;\n var getDocById = function (documentId) { return _this.getApi().then(function (api) {\n return api.getByID(documentId);\n }); };\n return createPreviewResolver(token, documentId, getDocById);\n };\n DefaultClient.getApi = function (url, options) {\n var api = new Api(url, options);\n return api.get();\n };\n return DefaultClient;\n}());\n\n/// \nvar index = {\n experimentCookie: EXPERIMENT_COOKIE,\n previewCookie: PREVIEW_COOKIE,\n Predicates: Predicates,\n Experiments: Experiments,\n Api: Api,\n client: client,\n getApi: getApi,\n api: api,\n};\nfunction client(url, options) {\n return new DefaultClient(url, options);\n}\nfunction getApi(url, options) {\n return DefaultClient.getApi(url, options);\n}\nfunction api(url, options) {\n return getApi(url, options);\n}\n\nexport default index;\n//# sourceMappingURL=prismic-javascript.mjs.map\n","import Prismic from 'prismic-javascript'\r\n// import config from '../config'\r\n\r\nexport const initApi = () => {\r\n return Prismic.getApi(window.CM_CONFIG.apis.prismic.endpoint)\r\n}\r\n","import Prismic from 'prismic-javascript'\r\nimport { initApi } from '../utils/prismic'\r\n\r\nexport const getOrganisations = initApi()\r\n .then(api => {\r\n return api.query(Prismic.Predicates.at('document.type', 'organisation'), {\r\n fetch: ['organisation.name'],\r\n orderings: '[my.organisation.name] desc',\r\n pageSize: 1000,\r\n })\r\n })\r\n .then(response => {\r\n return response.results\r\n })\r\n .catch(err => console.log(err))\r\n","import Prismic from 'prismic-javascript'\r\nimport { initApi } from '../utils/prismic'\r\n\r\nexport const getOrganisationsSP = initApi()\r\n .then(api => {\r\n return api.query(\r\n Prismic.Predicates.at('document.type', 'organisation_sp'),\r\n {\r\n fetch: ['organisation_sp.name'],\r\n orderings: '[my.organisation_sp.name] desc',\r\n pageSize: 1000,\r\n }\r\n )\r\n })\r\n .then(response => {\r\n return response.results\r\n })\r\n .catch(err => console.log(err))\r\n","let API_PATH = window.CM_CONFIG.apis.zendesk.endpoint ? API_PATH = window.CM_CONFIG.apis.zendesk.endpoint : ''\r\nlet authToken = ''\r\n\r\nconst initFaq = () => {\r\n let subfolderPath = subfolderPath ? subfolderPath : ''\r\n fetch(subfolderPath + '/IntegrationService/chat/key/')\r\n .then(response => {\r\n if(response){\r\n return response.json();\r\n }\r\n throw new Error('Problem with faq init');\r\n })\r\n .then(data => {\r\n authToken = data;\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n}\r\n\r\nconst getZendeskData = endpoint => {\r\n return fetch(`https://${API_PATH}.zendesk.com/${endpoint}`, {\r\n headers: {\r\n Authorization: `Basic ${authToken}`,\r\n 'Content-Type': 'multipart/form-data; charset=UTF-8',\r\n },\r\n }).then(res => {\r\n if (res.status >= 400) {\r\n throw new Error('Bad response from server')\r\n }\r\n return res.json()\r\n })\r\n}\r\n\r\nexport {getZendeskData as default, getZendeskData, initFaq, API_PATH }\r\n","let API_PATH = window.CM_CONFIG.apis.autoaddress.endpoint ? window.CM_CONFIG.apis.autoaddress.endpoint : ''\r\nlet API_KEY = ''\r\n\r\nconst intAutoAddress =() => {\r\n let subfolderPath = subfolderPath ? subfolderPath : ''\r\n fetch(subfolderPath + '/IntegrationService/auto-address/key/')\r\n .then(response => {\r\n if(response.ok){\r\n return response.json()\r\n }\r\n throw new Error('Issue with auto address init');\r\n })\r\n .then(data => {\r\n API_KEY = data;\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n}\r\n\r\nconst addressSearch = (search, limit = '-1') => {\r\n return fetch(\r\n `${API_PATH}?address=${search}&language=EN&key=${API_KEY}&limit=${limit}&geographicAddress=false&vanityMode=false&addressElements=false&addressProfileName=&country=IE&_=1525779831819`\r\n ).then(res => {\r\n if (res.status >= 400) {\r\n throw new Error('Bad response from server')\r\n }\r\n return res.json()\r\n })\r\n}\r\n\r\nexport {addressSearch as default, addressSearch, intAutoAddress};","import { Controller } from 'stimulus'\r\nimport { getOrganisations } from '../api/getOrganisations'\r\nimport { getOrganisationsSP } from '../api/getOrgansationsSP'\r\nimport fuzzy from 'fuzzy'\r\nimport $$ from 'double-dollar'\r\nimport ActionOutside from 'action-outside'\r\nimport { getZendeskData, initFaq} from '../api/getZendeskData'\r\nimport { addressSearch, intAutoAddress} from '../api/addressSearch'\r\n\r\nexport default class extends Controller {\r\n static get targets() {\r\n return [\r\n 'results',\r\n 'datawrapper',\r\n 'input',\r\n 'resultsList',\r\n 'cancel',\r\n 'choice',\r\n 'choiceBtn',\r\n 'baseURL',\r\n ]\r\n }\r\n\r\n initialize() {\r\n this.clearInput()\r\n\r\n // types:\r\n // zendesk ✅\r\n // organisations ✅\r\n // address lookup ✅\r\n\r\n this.items = []\r\n this.type = this.data.has('type') && this.data.get('type')\r\n\r\n if (this.type === 'organisation') {\r\n getOrganisations.then(response => {\r\n const res = response\r\n const items = res.map(item => {\r\n return {\r\n name: item.data.name,\r\n href: `/union/${item.uid}/`,\r\n }\r\n })\r\n this.items = items\r\n\r\n // Show the list of organisations on the narrow nav without :focus\r\n if (this.data.has('narrow')) {\r\n this.handleShow()\r\n }\r\n })\r\n }\r\n if (this.type === 'organisation-sp') {\r\n getOrganisationsSP.then(response => {\r\n const res = response\r\n const items = res.map(item => {\r\n return {\r\n name: item.data.name,\r\n href: `${item.uid}/`,\r\n }\r\n })\r\n this.items = items\r\n\r\n // Show the list of organisations on the narrow nav without :focus\r\n if (this.data.has('narrow')) {\r\n this.handleShow()\r\n }\r\n })\r\n }\r\n\r\n if (this.type === 'address') {\r\n intAutoAddress();\r\n }\r\n if(this.type === 'faq'){\r\n initFaq();\r\n }\r\n }\r\n\r\n renderListHeader(value = '') {\r\n document.querySelector('.mastheadRoot').classList.add('mastheadRoot-active')\r\n document\r\n .querySelector('.dropdownRoot')\r\n .classList.add('is-active', 'selector-union-active-transition')\r\n document\r\n .querySelector('.dropdownSection .unionSearchRoot')\r\n .parentNode.classList.add('is-active', 'selector-union-active')\r\n document\r\n .querySelector('.dropdownSection .unionSearchRoot')\r\n .parentNode.setAttribute('aria-hidden', 'false')\r\n document\r\n .querySelector('.common-search-container')\r\n .classList.add('is-hidden')\r\n const list = this.items.map(item => {\r\n return {\r\n name: item.name,\r\n href: item.href,\r\n }\r\n })\r\n\r\n const options = {\r\n pre: '', // Wrap each character in a tag to bold\r\n post: '',\r\n extract: item => {\r\n return item.name\r\n },\r\n }\r\n\r\n // Filter!\r\n const filtered = fuzzy.filter(value, list, options)\r\n let results\r\n\r\n if (filtered.length === 0) {\r\n results = [`
No results
`]\r\n } else {\r\n results = filtered.map(entry => {\r\n if (this.data.has('narrow')) {\r\n return `
  • ${\r\n entry.string\r\n }
  • `\r\n }\r\n return ``\r\n })\r\n }\r\n\r\n this.resultsListTarget.innerHTML = results.join('')\r\n\r\n this.handleKeydownNavigation = e => {\r\n const TAB = 9\r\n const ESC = 27\r\n\r\n if (e.keyCode === TAB) {\r\n if (!this.data.get('active')) {\r\n if (value.length) {\r\n // this.handleShow()\r\n this.selectItem(\r\n document.activeElement.textContent,\r\n document.activeElement.getAttribute('data-href')\r\n )\r\n }\r\n }\r\n } else if (e.keyCode === ESC) {\r\n this.handleCancel()\r\n }\r\n }\r\n\r\n this.element.addEventListener('keydown', this.handleKeydownNavigation)\r\n\r\n $$('.selector-results-item', this.resultsListTarget).forEach(item => {\r\n item.addEventListener('click', e => {\r\n e.preventDefault()\r\n this.selectItem(\r\n e.target.textContent,\r\n e.target.getAttribute('data-href')\r\n )\r\n })\r\n })\r\n\r\n const actionOutsideMenu = new ActionOutside(this.element, () => {\r\n this.handleHide()\r\n actionOutsideMenu.listen(false)\r\n })\r\n actionOutsideMenu.listen(true)\r\n }\r\n\r\n renderList(value = '') {\r\n //console.log('renderList:: this.items', this.items)\r\n const list = this.items.map(item => {\r\n return {\r\n name: item.name,\r\n href: item.href,\r\n }\r\n })\r\n\r\n const options = {\r\n pre: '', // Wrap each character in a tag to bold\r\n post: '',\r\n extract: item => {\r\n return item.name\r\n },\r\n }\r\n\r\n // Filter!\r\n const filtered = fuzzy.filter(value, list, options)\r\n let results\r\n\r\n if (filtered.length === 0) {\r\n results = [`
    No results
    `]\r\n } else {\r\n results = filtered.map(entry => {\r\n if (this.data.has('narrow')) {\r\n return `
  • ${\r\n entry.string\r\n }
  • `\r\n }\r\n return ``\r\n })\r\n }\r\n\r\n this.resultsListTarget.innerHTML = results.join('')\r\n\r\n this.handleKeydownNavigation = e => {\r\n const TAB = 9\r\n const ESC = 27\r\n\r\n if (e.keyCode === TAB) {\r\n if (!this.data.get('active')) {\r\n if (value.length) {\r\n // this.handleShow()\r\n this.selectItem(\r\n document.activeElement.textContent,\r\n document.activeElement.getAttribute('data-href')\r\n )\r\n }\r\n }\r\n } else if (e.keyCode === ESC) {\r\n this.handleCancel()\r\n }\r\n }\r\n\r\n this.element.addEventListener('keydown', this.handleKeydownNavigation)\r\n\r\n $$('.selector-results-item', this.resultsListTarget).forEach(item => {\r\n item.addEventListener('click', e => {\r\n e.preventDefault();\r\n const textContent = e.currentTarget.textContent;\r\n const opt = this.items.find(i => i.name === textContent);\r\n\r\n const newLocation = this.baseURLTarget.value ? `${'/' + this.baseURLTarget.value + '/' + opt.href}` : opt.href;\r\n window.location = newLocation;\r\n })\r\n })\r\n\r\n const actionOutsideMenu = new ActionOutside(this.element, () => {\r\n this.handleHide()\r\n actionOutsideMenu.listen(false)\r\n })\r\n actionOutsideMenu.listen(true)\r\n }\r\n\r\n handleKeyup(event) {\r\n if (event.target.value.length === 0) return\r\n switch (this.type) {\r\n case 'faq':\r\n this.searchZendesk(event.target.value)\r\n break\r\n case 'address':\r\n this.searchAddress(event.target.value)\r\n break\r\n case 'organisation':\r\n this.renderListHeader(event.target.value)\r\n break\r\n case 'organisation-sp':\r\n this.renderList(event.target.value)\r\n break\r\n default:\r\n console.log('default')\r\n break\r\n }\r\n\r\n if (event.target.value.length) {\r\n this.cancelTarget.classList.add('is-active')\r\n }\r\n }\r\n\r\n searchZendesk(input) {\r\n getZendeskData(`api/v2/help_center/articles/search.json?query=${input}`)\r\n .then(response => {\r\n const items = response.results.map(item => {\r\n return {\r\n name: item.name,\r\n href: item.html_url,\r\n }\r\n })\r\n this.items = items\r\n this.renderList()\r\n if (this.items.length > 0) {\r\n this.handleShow()\r\n }\r\n })\r\n .catch(err => {\r\n console.error(err)\r\n })\r\n }\r\n\r\n searchAddress(input) {\r\n addressSearch(input)\r\n .then(response => {\r\n const items = response.options.map(item => {\r\n return {\r\n name: item.displayName,\r\n href: 'null',\r\n }\r\n })\r\n this.items = items\r\n this.renderList()\r\n if (this.items.length > 0) {\r\n this.handleShow()\r\n }\r\n })\r\n .catch(err => {\r\n console.error(err)\r\n })\r\n }\r\n\r\n handleFocus() {\r\n if (this.type === 'organisation') {\r\n this.handleShow(this.type)\r\n }\r\n if (this.type === 'organisation-sp') {\r\n this.handleShow(this.type)\r\n }\r\n }\r\n\r\n handleBlur() {\r\n if (!this.data.get('active')) {\r\n this.handleHide()\r\n }\r\n }\r\n\r\n handleShow(type) {\r\n this.data.set('active', true)\r\n this.datawrapperTarget.classList.add('is-active')\r\n this.resultsTarget.setAttribute('aria-hidden', 'false')\r\n if (type === 'organisation') {\r\n this.renderListHeader()\r\n }\r\n this.renderList()\r\n if (this.data.has('nav')) {\r\n window.SelectorOpen = true\r\n }\r\n }\r\n\r\n handleHide() {\r\n this.data.set('active', false)\r\n this.datawrapperTarget.classList.remove('is-active')\r\n this.resultsTarget.setAttribute('aria-hidden', 'true')\r\n }\r\n\r\n handleCancel() {\r\n document\r\n .querySelector('.dropdownSection .unionSearchRoot')\r\n .parentNode.setAttribute('aria-hidden', 'true')\r\n document\r\n .querySelector('.common-search-container')\r\n .classList.remove('is-hidden')\r\n this.handleHide()\r\n this.clearInput()\r\n if (this.handleKeydownNavigation !== null) {\r\n this.unregisterKeyNavigation()\r\n }\r\n }\r\n\r\n unregisterKeyNavigation() {\r\n this.element.removeEventListener('keydown', this.keyDownHandler)\r\n this.keyDownHandler = null\r\n }\r\n\r\n updateInputValue(value) {\r\n if (value == 'No results') {\r\n this.choiceBtnTarget.style.display = 'none'\r\n } else {\r\n this.inputTarget.value = value\r\n this.choiceBtnTarget.style.display = 'inline-block'\r\n }\r\n }\r\n\r\n clearInput() {\r\n this.inputTarget.value = ''\r\n this.cancelTarget.classList.remove('is-active')\r\n this.inputTarget.classList.remove('is-active')\r\n if (this.hasChoiceTarget) {\r\n this.choiceTarget.classList.remove('is-active')\r\n }\r\n }\r\n\r\n selectItem(value, href) {\r\n this.cancelTarget.classList.add('is-active')\r\n this.inputTarget.classList.add('is-active')\r\n if (this.hasChoiceTarget && this.baseURLTarget.value) {\r\n this.choiceTarget.classList.add('is-active')\r\n this.choiceBtnTarget.setAttribute(\r\n 'href',\r\n `${'/' + this.baseURLTarget.value + '/' + href}`\r\n )\r\n } else {\r\n this.choiceTarget.classList.add('is-active')\r\n this.choiceBtnTarget.setAttribute('href', `${href}`)\r\n }\r\n\r\n this.updateInputValue(value)\r\n this.handleHide()\r\n\r\n if (this.type === 'address') {\r\n this.sendAddressData(value)\r\n }\r\n }\r\n\r\n sendAddressData(data) {\r\n console.log('TODO: send this data to another page')\r\n console.log(data)\r\n }\r\n}\r\n\r\ndocument.addEventListener('click', evt => {\r\n const flyoutElement = document.getElementById('unionSelector')\r\n let targetElement = evt.target\r\n\r\n do {\r\n if (targetElement == flyoutElement) {\r\n return\r\n }\r\n targetElement = targetElement.parentNode\r\n } while (targetElement)\r\n\r\n document\r\n .querySelector('.mastheadRoot')\r\n .classList.remove('mastheadRoot-active')\r\n document\r\n .querySelector('.dropdownRoot')\r\n .classList.remove('is-active', 'selector-union-active-transition')\r\n document\r\n .querySelector('.dropdownSection .unionSearchRoot')\r\n .parentNode.classList.remove('is-active', 'selector-union-active')\r\n document\r\n .querySelector('.dropdownSection .unionSearchRoot')\r\n .parentNode.setAttribute('aria-hidden', 'true')\r\n document\r\n .querySelector('.common-search-container')\r\n .classList.remove('is-hidden')\r\n})\r\n","import { Controller } from 'stimulus'\r\nimport $$ from 'double-dollar'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.group = this.data.get('group')\r\n this.children = this.element.querySelectorAll(this.data.get('targets'))\r\n this.limit = parseInt(this.data.get('limit'), 10) - 1\r\n\r\n if (this.children.length > this.limit) {\r\n this.renderShowMoreButton()\r\n this.hideMore()\r\n this.element\r\n .querySelector('.showMoreBtn')\r\n .addEventListener('click', this.showMore.bind(this))\r\n }\r\n }\r\n\r\n renderShowMoreButton() {\r\n /* Changing this functionality because of IE issue */\r\n // const button = `
    `\r\n // this.element.innerHTML += button\r\n this.element.querySelector('.showMoreUI').classList.remove('is-hidden')\r\n }\r\n\r\n hideMore() {\r\n $$(this.data.get('targets'), this.element).forEach((item, index) => {\r\n if (index > this.limit) {\r\n item.classList.add('is-hidden')\r\n }\r\n })\r\n }\r\n\r\n showMore(e) {\r\n e.currentTarget.classList.add('is-hidden')\r\n $$(this.data.get('targets'), this.element).forEach(item => {\r\n item.classList.remove('is-hidden')\r\n })\r\n }\r\n}\r\n","/* global YT */\r\nimport { Controller } from 'stimulus'\r\n// import config from '../config/index'\r\nexport default class extends Controller {\r\n initialize() {\r\n this.renderUI()\r\n this.element.addEventListener('click', this.onPlay.bind(this))\r\n }\r\n\r\n loadAPI(callback) {\r\n var tag = document.createElement('script')\r\n tag.src = 'https://www.youtube.com/iframe_api'\r\n\r\n document.head.appendChild(tag)\r\n\r\n window.onYouTubeIframeAPIReadyCallbacks =\r\n window.onYouTubeIframeAPIReadyCallbacks || []\r\n window.onYouTubeIframeAPIReadyCallbacks.push(callback.bind(this))\r\n\r\n window.onYouTubeIframeAPIReady = () => {\r\n for (var i = 0; i < window.onYouTubeIframeAPIReadyCallbacks.length; i++) {\r\n window.onYouTubeIframeAPIReadyCallbacks[i].call()\r\n }\r\n }\r\n }\r\n\r\n renderUI() {\r\n const mediaBtn = `
    `\r\n this.element.innerHTML = mediaBtn\r\n\r\n this.playerEl = document.createElement('div')\r\n this.playerEl.classList.add('video-player')\r\n this.element.appendChild(this.playerEl)\r\n\r\n const imgElSrc = `https://img.youtube.com/vi/${this.data.get(\r\n 'id'\r\n )}/maxresdefault.jpg`\r\n this.element.style.backgroundImage = `url(${imgElSrc})`\r\n }\r\n\r\n createPlayer() {\r\n this.player = new YT.Player(this.playerEl, {\r\n height: '100%',\r\n width: '100%',\r\n videoId: this.data.get('id'),\r\n playerVars: {\r\n autohide: 1,\r\n autoplay: 1,\r\n color: 'white',\r\n controls: 2,\r\n cc_load_policy: 0,\r\n disablekb: 0,\r\n enablejsapi: 1,\r\n end: null,\r\n fs: 1,\r\n iv_load_policy: 3,\r\n loop: 0,\r\n modestbranding: 1,\r\n origin: document.domain, // Should be set to domain\r\n playsinline: 0,\r\n rel: 0,\r\n showinfo: 0,\r\n start: null,\r\n theme: 'dark',\r\n wmode: 'opaque',\r\n hl: 'en',\r\n },\r\n events: {\r\n onReady: this.onReady.bind(this),\r\n onStateChange: this.onStateChange.bind(this),\r\n },\r\n })\r\n }\r\n\r\n onReady() {\r\n this.player.playVideo()\r\n this.element.querySelector('.mediaBtn').classList.add('is-hidden')\r\n window.addEventListener('Video:pause', () => {\r\n this.player.pauseVideo()\r\n })\r\n window.addEventListener('Video:stop', () => {\r\n this.player.stopVideo()\r\n })\r\n }\r\n\r\n onStateChange(e) {\r\n const state = e.data\r\n\r\n if (state === window.YT.PlayerState.PLAYING) {\r\n this.element.querySelector('.mediaBtn').classList.add('is-hidden')\r\n }\r\n\r\n if (state === window.YT.PlayerState.PAUSED) {\r\n this.element.querySelector('.mediaBtn').classList.add('is-hidden')\r\n }\r\n\r\n if (state === window.YT.PlayerState.ENDED) {\r\n // clearInterval(this.playerInterval)\r\n this.element.querySelector('.mediaBtn').classList.add('is-hidden')\r\n this.close()\r\n }\r\n }\r\n\r\n onPlay() {\r\n if (\r\n typeof window.YT === 'undefined' ||\r\n typeof window.YT.Player === 'undefined'\r\n ) {\r\n this.waitingForApi = true\r\n\r\n this.loadAPI(() => {\r\n if (this.waitingForApi) {\r\n this.createPlayer()\r\n this.waitingForApi = false\r\n }\r\n })\r\n } else {\r\n this.createPlayer()\r\n }\r\n }\r\n\r\n close() {\r\n if (this.player) {\r\n this.player.destroy()\r\n this.element.querySelector('.mediaBtn').classList.remove('is-hidden')\r\n }\r\n }\r\n}\r\n","/**\r\n * Usage:\r\n * import pointerEvents from './pointerEvents'\r\n * window.addEventListener(pointerEvents.enter, () => {}, false)\r\n */\r\n\r\nexport default (window.PointerEvent\r\n ? {\r\n end: 'pointerup',\r\n enter: 'pointerenter',\r\n leave: 'pointerleave',\r\n over: 'pointerover',\r\n }\r\n : {\r\n end: 'touchend',\r\n enter: 'mouseenter',\r\n leave: 'mouseleave',\r\n over: 'mouseover',\r\n })\r\n","import { Controller } from 'stimulus'\r\nimport PointerEvents from '../utils/pointerEvents'\r\n\r\nconst timeout = 50\r\nconst selectorOpenTimeout = 5000\r\n\r\nexport default class extends Controller {\r\n static get targets() {\r\n return [\r\n 'ButtonWide',\r\n 'DrpdwnRoot',\r\n 'DrpdwnContainer',\r\n 'DrpdwnSection',\r\n 'DrpdwnBg',\r\n ]\r\n }\r\n\r\n connect() {\r\n if (this.ButtonWideTargets.length) {\r\n this.ButtonWideTargets.forEach(item => {\r\n item.addEventListener(\r\n 'click',\r\n event => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n },\r\n true\r\n )\r\n\r\n // On mouse/pointer enter\r\n item.addEventListener(PointerEvents.enter, event => {\r\n if (event.pointerType !== 'touch') {\r\n this.data.set(\r\n 'activeItem',\r\n event.target.getAttribute('data-dropdown-source')\r\n )\r\n this.data.set('globalBtnOver', true)\r\n this.showDropdown()\r\n\r\n //Remove selector union class if it is open\r\n document\r\n .querySelector('.mastheadRoot')\r\n .classList.remove('mastheadRoot-active')\r\n document\r\n .querySelector('.dropdownRoot')\r\n .classList.remove('selector-union-active-transition')\r\n document\r\n .querySelector('.dropdownSection .unionSearchRoot')\r\n .parentNode.classList.remove('selector-union-active')\r\n document\r\n .querySelector('.dropdownSection .unionSearchRoot')\r\n .parentNode.setAttribute('aria-hidden', 'true')\r\n document\r\n .querySelector('.common-search-container')\r\n .classList.remove('is-hidden')\r\n document\r\n .querySelector('.selector-dataWrapper')\r\n .classList.remove('is-active')\r\n document\r\n .querySelector('.selector-results')\r\n .setAttribute('aria-hidden', 'true')\r\n }\r\n })\r\n\r\n // On mouse/pointer leave\r\n item.addEventListener(PointerEvents.leave, event => {\r\n if (event.pointerType !== 'touch') {\r\n this.hideDropdown()\r\n }\r\n })\r\n\r\n // When keyboard is being used\r\n item.addEventListener(\r\n 'focusin',\r\n event => {\r\n this.data.set(\r\n 'activeItem',\r\n event.target.getAttribute('data-dropdown-source')\r\n )\r\n this.data.set('globalBtnOver', true)\r\n this.showDropdown()\r\n },\r\n false\r\n )\r\n\r\n item.addEventListener(\r\n 'focusout',\r\n () => {\r\n this.hideDropdown.bind(this)\r\n },\r\n false\r\n )\r\n\r\n item.addEventListener('touchend', event => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n this.hideDropdown()\r\n })\r\n\r\n // item.addEventListener(PointerEvents.end, event => {\r\n // event.preventDefault()\r\n // event.stopPropagation()\r\n // this.toggleDropdown(item)\r\n // })\r\n\r\n // when to show/hide the DrpdwnContainer\r\n this.DrpdwnContainerTarget.addEventListener(\r\n PointerEvents.end,\r\n event => {\r\n event.stopPropagation()\r\n }\r\n )\r\n\r\n this.DrpdwnContainerTarget.addEventListener(\r\n PointerEvents.enter,\r\n event => {\r\n if (event.pointerType !== 'touch') {\r\n this.showDropdown()\r\n }\r\n }\r\n )\r\n\r\n this.DrpdwnContainerTarget.addEventListener(\r\n PointerEvents.leave,\r\n event => {\r\n if (event.pointerType !== 'touch') {\r\n if (window.SelectorOpen) {\r\n this.selectorHideDropdownTimeout = window.setTimeout(() => {\r\n window.SelectorOpen = false\r\n }, selectorOpenTimeout)\r\n\r\n const drpdwnRootHandler = event => {\r\n if (event.target === this.DrpdwnRootTarget) {\r\n this.hideDropdown()\r\n\r\n this.DrpdwnRootTarget.removeEventListener(\r\n 'click',\r\n drpdwnRootHandler.bind(this),\r\n false\r\n )\r\n }\r\n }\r\n\r\n this.DrpdwnRootTarget.addEventListener(\r\n 'click',\r\n drpdwnRootHandler.bind(this),\r\n false\r\n )\r\n return\r\n }\r\n\r\n this.hideDropdown()\r\n }\r\n }\r\n )\r\n })\r\n }\r\n }\r\n\r\n showDropdown() {\r\n const activeItemId = this.data.get('activeItem')\r\n const activeNavButtonElement = this.element.querySelector(\r\n `.navBtn[data-dropdown-source=${activeItemId}]`\r\n )\r\n\r\n this.element.classList.add('is-active')\r\n this.DrpdwnRootTarget.classList.add('is-active')\r\n\r\n // Remove old classes\r\n this.DrpdwnSectionTargets.forEach(item =>\r\n item.classList.remove('is-active')\r\n )\r\n this.ButtonWideTargets.forEach(item => {\r\n item.classList.remove('is-over')\r\n item.setAttribute('aria-expanded', 'false')\r\n })\r\n\r\n activeNavButtonElement.classList.add('is-over')\r\n activeNavButtonElement.setAttribute('aria-expanded', 'true')\r\n const activeDropdownRect = activeNavButtonElement.getBoundingClientRect()\r\n const centrePosition = Math.round(\r\n activeNavButtonElement.offsetLeft + activeDropdownRect.width / 2\r\n )\r\n\r\n // Show the correct dropdown\r\n const targetContainer = this.element.querySelector(\r\n `[data-dropdown-target=\"${activeItemId}\"]`\r\n )\r\n const targetContainerRect = targetContainer.getBoundingClientRect()\r\n targetContainer.setAttribute('aria-hidden', 'false')\r\n targetContainer.classList.add('is-active')\r\n\r\n clearTimeout(this.disableTransitionTimeout)\r\n this.enableTransitionTimeout = window.setTimeout(() => {\r\n this.DrpdwnRootTarget.classList.remove('no-transition')\r\n }, timeout)\r\n\r\n let halfDropdownWidth\r\n if (targetContainer.classList.contains('dropdownSection--thin')) {\r\n halfDropdownWidth = 160\r\n } else {\r\n halfDropdownWidth = 400\r\n }\r\n\r\n const xPos = centrePosition - halfDropdownWidth\r\n const xPosCorrected = xPos < 20 ? 20 : xPos\r\n\r\n targetContainer.style.transform = `translateX(${xPosCorrected}px)`\r\n\r\n this.DrpdwnBgTarget.style.transform = `translateX(${xPosCorrected}px)`\r\n this.DrpdwnBgTarget.style.width = `${targetContainerRect.width}px`\r\n this.DrpdwnBgTarget.style.height = `${targetContainerRect.height}px`\r\n }\r\n\r\n hideDropdown() {\r\n if (this.data.get('globalBtnOver')) {\r\n clearTimeout(this.enableTransitionTimeout)\r\n this.disableTransitionTimeout = window.setTimeout(() => {\r\n this.DrpdwnRootTarget.classList.add('no-transition')\r\n }, timeout)\r\n\r\n this.element.classList.remove('is-active')\r\n this.DrpdwnRootTarget.classList.remove('is-active')\r\n this.ButtonWideTargets.forEach(item => {\r\n item.classList.remove('is-over')\r\n item.setAttribute('aria-expanded', 'false')\r\n })\r\n\r\n this.DrpdwnContainerTarget.classList.remove('is-active')\r\n\r\n this.DrpdwnSectionTargets.forEach(item => {\r\n item.classList.remove('is-active')\r\n item.setAttribute('aria-hidden', 'true')\r\n })\r\n }\r\n }\r\n\r\n toggleDropdown(item) {\r\n const activeItemId = this.data.get('activeItem')\r\n const activeNavButtonElement = this.element.querySelector(\r\n `.navBtn[data-dropdown-source=${activeItemId}]`\r\n )\r\n activeNavButtonElement === item ? this.hideDropdown() : this.showDropdown()\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n static targets = ['Title', 'Body']\r\n initialize() {\r\n this.BodyTargets.forEach(item => {\r\n item.setAttribute('aria-hidden', 'true')\r\n })\r\n }\r\n handleChange(event) {\r\n event.currentTarget.classList.toggle('is-active')\r\n event.currentTarget.nextElementSibling.classList.toggle(\r\n 'accordion-body--show'\r\n )\r\n event.currentTarget.nextElementSibling.classList.toggle(\r\n 'accordion-body--hide'\r\n )\r\n let accordionBody = event.currentTarget.nextElementSibling\r\n if (accordionBody.attributes['aria-hidden'].value == 'true') {\r\n accordionBody.setAttribute('aria-hidden', 'false')\r\n } else {\r\n accordionBody.setAttribute('aria-hidden', 'true')\r\n }\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport getZendeskData, { API_PATH } from '../api/getZendeskData'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.section = this.data.get('section')\r\n this.getData()\r\n }\r\n\r\n getData() {\r\n getZendeskData(\r\n `api/v2/help_center/en-us/sections/${this.section}/articles.json`\r\n )\r\n .then(data => {\r\n this.renderMarkup(data)\r\n })\r\n .catch(err => {\r\n console.error(err)\r\n })\r\n }\r\n\r\n renderMarkup(data) {\r\n const articles = data.articles.slice(0, 4) // only get the first 4 items\r\n const accordionMarkup = articles\r\n .map(item => {\r\n return `

    Accordion#handleChange\">\r\n ${item.title}\r\n \r\n

    \r\n
    \r\n ${item.body}\r\n \r\n
    `\r\n })\r\n .join('')\r\n\r\n const markup = `
    \r\n ${accordionMarkup}\r\n
    \r\n
    \r\n Go to FAQs\r\n `\r\n\r\n this.element.innerHTML = markup\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport responsiveWatch from 'responsive-watch'\r\nimport breakpoints from '../config/breakpoints'\r\nimport { Swiper, Pagination, A11y } from '../../../../../node_modules/swiper/js/swiper.esm.js'\r\nimport $$ from 'double-dollar'\r\n\r\nSwiper.use([Pagination, A11y])\r\n\r\nexport default class extends Controller {\r\n static targets = [\r\n 'RootCardNumber',\r\n 'RootCardDate',\r\n 'RootCardTitle',\r\n 'RootCardCopy',\r\n 'RootCardBtn',\r\n ]\r\n\r\n connect() {\r\n const watchers = responsiveWatch(\r\n {\r\n sizes: breakpoints,\r\n },\r\n status => {\r\n if (status.lte.m) {\r\n const element = this.element.querySelector('.swiper-container')\r\n this.mySwiper = new Swiper(element, {\r\n speed: 400,\r\n watchOverflow: true,\r\n slidesPerView: 'auto',\r\n spaceBetween: 20,\r\n grabCursor: true,\r\n watchSlidesVisibility: true,\r\n slidesOffsetBefore: 10,\r\n slidesOffsetAfter: 10,\r\n simulateTouch: true,\r\n preventClicks: true,\r\n autoHeight: true,\r\n pagination: {\r\n el: '.carousel-pagination--featuredContentCard',\r\n clickable: true,\r\n dynamicBullets: false,\r\n },\r\n a11y: {\r\n prevSlideMessage: 'Previous slide',\r\n nextSlideMessage: 'Next slide',\r\n },\r\n init: false,\r\n })\r\n this.mySwiper.init()\r\n }\r\n }\r\n )\r\n }\r\n\r\n showCardDetails(event) {\r\n this.cardBtn = event.currentTarget\r\n .querySelector('.cardBtn')\r\n .getAttribute('href')\r\n var featuredContentCard = this.element.querySelectorAll(\r\n '.featuredContentCard'\r\n )\r\n Array.from(featuredContentCard).forEach(card => {\r\n card.classList.remove('is-active')\r\n })\r\n event.currentTarget.classList.add('is-active')\r\n this.RootCardNumberTarget.innerText = event.currentTarget.querySelector(\r\n '.featuredContentCard-number'\r\n ).innerText\r\n this.RootCardDateTarget.innerText = event.currentTarget.querySelector(\r\n '.featuredContentCard-date'\r\n ).innerText\r\n this.RootCardTitleTarget.innerText = event.currentTarget.querySelector(\r\n '.featuredContentCard-title'\r\n ).innerText\r\n this.RootCardCopyTarget.innerText = event.currentTarget.querySelector(\r\n 'p'\r\n ).innerText\r\n this.RootCardBtnTarget.setAttribute('href', this.cardBtn)\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport debounce from 'lodash.debounce'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.select = this.element.querySelector(\r\n '.form-controlGroup-inputWrapper--select'\r\n )\r\n this.tabsList = this.element.querySelector('.tabs')\r\n this.threshold = this.tabsList.offsetWidth\r\n this.calculateDimensions()\r\n this.hideTabContent()\r\n window.addEventListener(\r\n 'resize',\r\n debounce(this.handleWindowResize.bind(this), 300)\r\n )\r\n\r\n // open default content\r\n const defaultOpen = this.element.querySelector('#defaultOpen')\r\n defaultOpen.classList.add('active')\r\n\r\n const defaultTargetTab = defaultOpen.getAttribute('data-tabtarget')\r\n this.element\r\n .querySelector(`#${defaultTargetTab}`)\r\n .classList.remove('is-hidden')\r\n\r\n // create select options dynamically\r\n const tabID = []\r\n const tabName = []\r\n const tabItem = this.element.querySelectorAll('.tabItem')\r\n Array.from(tabItem).forEach(tab => {\r\n tabID.push(tab.getAttribute('data-tabtarget'))\r\n tabName.push(tab.getAttribute('data-tabname'))\r\n })\r\n this.createOptions(tabID, tabName)\r\n }\r\n\r\n handleWindowResize() {\r\n this.calculateDimensions()\r\n }\r\n\r\n calculateDimensions() {\r\n const nav = this.element.querySelector('.tab')\r\n\r\n const viewportWidth = Math.max(\r\n document.documentElement.clientWidth,\r\n window.innerWidth || 0\r\n )\r\n\r\n if (this.threshold > viewportWidth - 40) {\r\n nav.classList.add('is-hidden')\r\n this.select.classList.remove('is-hidden')\r\n } else {\r\n nav.classList.remove('is-hidden')\r\n this.select.classList.add('is-hidden')\r\n }\r\n }\r\n\r\n createOptions(tabID, tabName) {\r\n for (let i = 0; i < tabID.length; i++) {\r\n let option = document.createElement('option')\r\n option.text = tabName[i]\r\n option.value = tabID[i]\r\n this.select.querySelector('select').add(option)\r\n }\r\n }\r\n\r\n tabChange(event) {\r\n const tabTarget = event.currentTarget.getAttribute('data-tabtarget')\r\n const currentTab = this.element.querySelector(`#${tabTarget}`)\r\n this.hideTabContent()\r\n Array.from(this.element.querySelectorAll('.tabItem')).forEach(item => {\r\n item.classList.remove('active')\r\n })\r\n event.currentTarget.classList.add('active')\r\n currentTab.classList.remove('is-hidden')\r\n if (\r\n currentTab.querySelector('.policyCard-content') != null ||\r\n currentTab.querySelector('.policyCard-content') != undefined\r\n ) {\r\n this.setMaxHeight(this.element.querySelectorAll('.comparison-list'))\r\n this.setMaxHeight(this.element.querySelectorAll('.policy-copy'))\r\n this.setMaxHeight(this.element.querySelectorAll('.policyCard-title'))\r\n this.setMaxHeight(\r\n this.element.querySelectorAll('.policyCard-link-contents')\r\n )\r\n }\r\n }\r\n\r\n selectChange(event) {\r\n this.hideTabContent()\r\n Array.from(this.element.querySelectorAll('.tabItem')).forEach(item => {\r\n if (item.dataset.tabtarget === event.target.value) {\r\n item.classList.add('active')\r\n } else {\r\n item.classList.remove('active')\r\n }\r\n })\r\n const currentItem = this.element.querySelector(`#${event.target.value}`)\r\n currentItem.classList.remove('is-hidden')\r\n if (\r\n currentItem.querySelector('.policyCard-content') != null ||\r\n currentItem.querySelector('.policyCard-content') != undefined\r\n ) {\r\n this.setMaxHeight(this.element.querySelectorAll('.comparison-list'))\r\n this.setMaxHeight(this.element.querySelectorAll('.policy-copy'))\r\n this.setMaxHeight(this.element.querySelectorAll('.policyCard-title'))\r\n this.setMaxHeight(\r\n this.element.querySelectorAll('.policyCard-link-contents')\r\n )\r\n }\r\n }\r\n\r\n hideTabContent() {\r\n Array.from(this.element.querySelectorAll('.tabContent')).forEach(item => {\r\n item.classList.add('is-hidden')\r\n })\r\n }\r\n\r\n setMaxHeight(targetArray) {\r\n var maxHeight = []\r\n if (targetArray.length >= 1) {\r\n Array.from(targetArray).forEach((el, i) => {\r\n maxHeight = maxHeight > el.scrollHeight ? maxHeight : el.scrollHeight\r\n })\r\n Array.from(targetArray).forEach((el, i) => {\r\n setTimeout(function() {\r\n el.style.minHeight = maxHeight + 'px'\r\n }, 200)\r\n })\r\n }\r\n }\r\n}\r\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import { Controller } from 'stimulus'\r\nimport addDays from 'date-fns/adddays'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.checkCookie()\r\n }\r\n\r\n setCookie() {\r\n this.element.classList.add('is-hidden')\r\n const date = addDays(new Date(), this.data.get('expiry'))\r\n document.cookie = 'accepted=yes;expires=' + date.toUTCString() + ';path=/'\r\n }\r\n\r\n checkCookie() {\r\n const cookie = this.getCookie()\r\n if (cookie.accepted != '' && cookie.accepted === 'yes') {\r\n this.element.classList.add('is-hidden')\r\n } else {\r\n this.element.classList.remove('is-hidden')\r\n }\r\n }\r\n\r\n getCookie() {\r\n const pairs = document.cookie.split(';')\r\n const cookies = {}\r\n pairs.forEach((pair, i) => {\r\n pair = pairs[i].split('=')\r\n cookies[(pair[0] + '').trim()] = unescape(pair[1])\r\n })\r\n return cookies\r\n }\r\n}\r\n","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n static targets = ['SeeMoreContent']\r\n\r\n initialize() {\r\n this.benefits_list = this.SeeMoreContentTarget.querySelectorAll('li')\r\n Array.from(this.benefits_list).forEach((el, i) => {\r\n if (i < 5) {\r\n this.benefits_list[i].classList.remove('is-hidden')\r\n } else {\r\n this.benefits_list[i].classList.add('is-hidden')\r\n }\r\n })\r\n if (this.benefits_list.length <= 4) {\r\n this.SeeMoreContentTarget.nextElementSibling.classList.add('is-hidden')\r\n } else {\r\n if (\r\n !this.SeeMoreContentTarget.nextElementSibling.classList.contains(\r\n 'is-hidden'\r\n )\r\n ) {\r\n this.SeeMoreContentTarget.nextElementSibling.classList.remove(\r\n 'is-hidden'\r\n )\r\n }\r\n }\r\n this.setHeight(document.querySelectorAll('.comparison-list'))\r\n this.setHeight(document.querySelectorAll('.policy-copy'))\r\n this.setHeight(document.querySelectorAll('.policyCard-title'))\r\n this.setHeight(document.querySelectorAll('.policyCard-link-contents'))\r\n this.setHeight(document.querySelectorAll('.perMonth-copy'))\r\n }\r\n\r\n toggle(event) {\r\n event.currentTarget.classList.toggle('is-active')\r\n //if (event.currentTarget.classList.contains('is-active')) {\r\n // event.currentTarget.children[0].innerText = \"See less\"\r\n //} else {\r\n // event.currentTarget.children[0].innerText = \"See more\"\r\n // event.currentTarget.offsetParent.parentElement.scrollIntoView(true)\r\n //}\r\n if (this.benefits_list.length > 5) {\r\n Array.from(this.benefits_list).forEach((el, i) => {\r\n if (i >= 5) {\r\n this.benefits_list[i].classList.toggle('is-hidden')\r\n }\r\n })\r\n this.SeeMoreContentTarget.classList.toggle('comparison-list--show')\r\n this.SeeMoreContentTarget.classList.toggle('comparison-list--hide')\r\n }\r\n }\r\n\r\n setHeight(targetArray) {\r\n var maxHeight = []\r\n if (targetArray.length >= 1) {\r\n Array.from(targetArray).forEach((el, i) => {\r\n maxHeight = maxHeight > el.scrollHeight ? maxHeight : el.scrollHeight\r\n })\r\n Array.from(targetArray).forEach((el, i) => {\r\n setTimeout(function() {\r\n el.style.minHeight = maxHeight + 'px'\r\n }, 1000)\r\n })\r\n }\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport $$ from 'double-dollar'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.hideSelectContent()\r\n this.hideContentOnOutsideClick()\r\n }\r\n\r\n selectChange(event) {\r\n this.hideSelectContent()\r\n this.element\r\n .querySelector(`#${event.target.value}`)\r\n .classList.remove('is-hidden')\r\n }\r\n\r\n hideContentOnOutsideClick() {\r\n document.addEventListener('click', function(event) {\r\n if (event.target.closest('.contactUsCard-selectBox')) {\r\n return false\r\n } else {\r\n document.querySelector('.contactUsCard-select').value = '--'\r\n $$('.contactUsCard-selectContent').forEach(item => {\r\n item.classList.add('is-hidden')\r\n })\r\n }\r\n })\r\n }\r\n\r\n hideSelectContent() {\r\n $$('.contactUsCard-selectContent', this.element).forEach(item => {\r\n item.classList.add('is-hidden')\r\n })\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport $$ from 'double-dollar'\r\nimport responsiveWatch from 'responsive-watch'\r\nimport breakpoints from '../config/breakpoints'\r\nimport { Swiper, Pagination, A11y } from '../../../../../node_modules/swiper/js/swiper.esm.js'\r\n\r\nconst API_PATH = window.CM_CONFIG.apis.swagger.endpoint\r\n\r\nSwiper.use([Pagination, A11y])\r\n\r\nexport default class extends Controller {\r\n static targets = [\r\n 'ProblemPhase',\r\n 'SchedulePhase',\r\n 'DetailsPhase',\r\n 'Message',\r\n 'SuccessForm',\r\n 'FormContentContainer',\r\n 'Button'\r\n ]\r\n initialize() {\r\n this.FormContainer = this.element\r\n this.ProblemPhaseTarget.classList.add('is-active')\r\n this.element\r\n .querySelector('.carousel-pagination--callbackForm')\r\n .classList.remove('is-hidden')\r\n this.connect()\r\n\r\n document.getElementById('problemForm').reset()\r\n document.getElementById('scheduleForm').reset()\r\n document.getElementById('informationForm').reset()\r\n this.SuccessFormTarget.classList.add('is-hidden')\r\n }\r\n\r\n connect() {\r\n const watchers = responsiveWatch(\r\n {\r\n sizes: breakpoints,\r\n },\r\n status => {\r\n if (status.lte.m) {\r\n const element = this.element.querySelector('.swiper-container')\r\n this.mySwiper = new Swiper(element, {\r\n speed: 400,\r\n watchOverflow: true,\r\n slidesPerView: 'auto',\r\n spaceBetween: 0,\r\n grabCursor: true,\r\n watchSlidesVisibility: true,\r\n slidesOffsetBefore: 10,\r\n slidesOffsetAfter: 10,\r\n simulateTouch: true,\r\n preventClicks: true,\r\n autoHeight: true,\r\n pagination: {\r\n el: '.carousel-pagination',\r\n clickable: true,\r\n dynamicBullets: true\r\n },\r\n a11y: {\r\n prevSlideMessage: 'Previous slide',\r\n nextSlideMessage: 'Next slide',\r\n },\r\n init: false,\r\n })\r\n \r\n }\r\n }\r\n )\r\n }\r\n\r\n showForm() {\r\n document.getElementById('problemForm').reset()\r\n document.getElementById('scheduleForm').reset()\r\n document.getElementById('informationForm').reset()\r\n this.SuccessFormTarget.classList.add('is-hidden')\r\n\r\n let generalEnquiryFormContainerClassList = document.getElementById(\r\n 'generalEnquiryFormContainer'\r\n ).classList\r\n let callbackFormClassList = document.getElementById('callbackForm')\r\n .classList\r\n if (generalEnquiryFormContainerClassList.contains != 'is-hidden') {\r\n generalEnquiryFormContainerClassList.add('is-hidden')\r\n callbackFormClassList.remove('generalEnquiryForm-container')\r\n }\r\n\r\n document.getElementById('callbackForm').scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n })\r\n\r\n this.FormContainer.classList.add('callbackForm-container')\r\n this.FormContentContainerTarget.classList.remove('is-hidden')\r\n if (\r\n this.element\r\n .querySelector('.form-container')\r\n .classList.contains('is-hidden')\r\n ) {\r\n this.element\r\n .querySelector('.form-container')\r\n .classList.remove('is-hidden')\r\n this.SuccessFormTarget.classList.add('is-hidden')\r\n }\r\n\r\n this.mySwiper.init();\r\n }\r\n\r\n hideForm() {\r\n this.FormContainer.classList.remove('callbackForm-container')\r\n this.FormContentContainerTarget.classList.add('is-hidden')\r\n document.getElementById('problemForm').reset()\r\n document.getElementById('scheduleForm').reset()\r\n document.getElementById('informationForm').reset()\r\n this.element.querySelector('.message-box').classList.add('is-hidden')\r\n this.SuccessFormTarget.classList.add('is-hidden')\r\n var FormElements = this.element.querySelectorAll('input, select, textarea')\r\n var errorMessageClasses = this.element.querySelectorAll('.status')\r\n Array.from(FormElements).forEach((el, i) => {\r\n FormElements[i].oninput = null\r\n FormElements[i].onchange = null\r\n if (FormElements[i].classList.contains('is-success')) {\r\n FormElements[i].classList.remove('is-success')\r\n }\r\n if (FormElements[i].classList.contains('is-error')) {\r\n FormElements[i].classList.remove('is-error')\r\n }\r\n })\r\n Array.from(errorMessageClasses).forEach((el, i) => {\r\n errorMessageClasses[i].style.display = 'none'\r\n if (errorMessageClasses[i].classList.contains('status-success')) {\r\n errorMessageClasses[i].classList.remove('status-success')\r\n }\r\n if (errorMessageClasses[i].classList.contains('status-error')) {\r\n errorMessageClasses[i].classList.remove('status-error')\r\n }\r\n })\r\n this.SchedulePhaseTarget.classList.remove('is-active')\r\n this.SchedulePhaseTarget.classList.remove('is-visited')\r\n this.DetailsPhaseTarget.classList.remove('is-active')\r\n this.DetailsPhaseTarget.classList.remove('is-visited')\r\n this.ProblemPhaseTarget.classList.remove('is-visited')\r\n }\r\n\r\n SubmitProblemForm(event) {\r\n if (event.currentTarget.hasAttribute('disabled') == false) {\r\n this.ProblemPhaseTarget.classList.add('is-visited')\r\n this.SchedulePhaseTarget.classList.add('is-active')\r\n this.mySwiper.slideNext()\r\n }\r\n }\r\n\r\n SubmitScheduleForm(event) {\r\n if (event.currentTarget.hasAttribute('disabled') == false) {\r\n this.SchedulePhaseTarget.classList.add('is-visited')\r\n this.DetailsPhaseTarget.classList.add('is-active')\r\n this.mySwiper.slideNext()\r\n }\r\n }\r\n\r\n SubmitDetailsForm(event) {\r\n if (event.currentTarget.hasAttribute('disabled') == false) {\r\n this.ButtonTarget.setAttribute('disabled', 'disabled')\r\n this.DetailsPhaseTarget.classList.add('is-visited')\r\n this.callbackFormContainer = document.getElementById(\r\n 'callbackFormContainer'\r\n )\r\n\r\n let CallbackFormData = this.toJSONString(this.callbackFormContainer)\r\n this.element.querySelector('.message-box').classList.remove('is-hidden')\r\n this.element\r\n .querySelector('.message-box')\r\n .classList.remove('error', 'success')\r\n this.element.querySelector('.message-box').classList.add('info')\r\n this.MessageTarget.innerText = 'Loading please wait...'\r\n\r\n fetch(`/forms/contactrequest`,{\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n VerificationToken: $(\"[id=forgeryToken]\").val(),\r\n },\r\n body: JSON.stringify({ contactRequest: CallbackFormData })\r\n })\r\n .then(response => {\r\n console.log('from response ',response)\r\n return response.json()\r\n })\r\n .then(data => {\r\n console.log('Json then ',data);\r\n this.element\r\n .querySelector('.form-container')\r\n .classList.add('is-hidden')\r\n document.getElementById('callbackForm').scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n })\r\n this.SuccessFormTarget.classList.remove('is-hidden')\r\n this.SchedulePhaseTarget.classList.remove('is-active')\r\n this.SchedulePhaseTarget.classList.remove('is-visited')\r\n this.DetailsPhaseTarget.classList.remove('is-active')\r\n this.DetailsPhaseTarget.classList.remove('is-visited')\r\n this.ProblemPhaseTarget.classList.remove('is-visited')\r\n this.ProblemPhaseTarget.classList.add('is-active')\r\n\r\n this.element.querySelector(\r\n '.callbackForm-success .header'\r\n ).innerHTML = data.Result.SuccessHeader1\r\n this.element.querySelector(\r\n '.callbackForm-success .callbackForm-success--copy h3'\r\n ).innerText = data.Result.SuccessHeader2\r\n this.element.querySelector(\r\n '.callbackForm-success .callbackForm-success--paragraph p'\r\n ).innerText = data.Result.SuccessHeader3\r\n this.element\r\n .querySelector('.callbackForm-success .success-btn')\r\n .setAttribute('href', 'tel:' + data.Result.SuccessCTA)\r\n this.element.querySelector(\r\n '.callbackForm-success .btn-inner span'\r\n ).innerText = data.Result.SuccessCTA\r\n\r\n this.ButtonTarget.removeAttribute('disabled')\r\n\r\n window.dataLayer.push({\r\n event: 'VirtualPageview',\r\n virtualPageURL: data.Result.VirtualPageURL,\r\n virtualPageTitle: data.Result.VirtualPageTitle,\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n this.element.querySelector('.message-box').classList.remove('info')\r\n this.element.querySelector('.message-box').classList.add('error')\r\n this.MessageTarget.innerText = 'Error occured!'\r\n this.ButtonTarget.removeAttribute('disabled')\r\n })\r\n }\r\n }\r\n\r\n toJSONString(callbackFormDivision) {\r\n var obj = {}\r\n var elements = callbackFormDivision.querySelectorAll(\r\n 'input, select, textarea'\r\n )\r\n for (var i = 0; i < elements.length; ++i) {\r\n var element = elements[i]\r\n var name = element.name\r\n var value\r\n if (element.type == 'radio' || element.type == 'checkbox') {\r\n if (element.checked) {\r\n if (element.value === 'true') {\r\n value = true\r\n } else if (element.value === 'false') {\r\n value = false\r\n } else {\r\n value = element.value\r\n }\r\n }\r\n } else {\r\n value = element.value.trim()\r\n }\r\n\r\n if (name && value !== '' && value !== undefined && value !== null) {\r\n obj[name] = value\r\n }\r\n }\r\n return obj\r\n }\r\n\r\n selectChange(event) {\r\n this.hideSelectContent()\r\n var productValue = event.target.value.toLowerCase()\r\n if (\r\n productValue.indexOf('car') != -1 ||\r\n productValue.indexOf('health') != -1 ||\r\n productValue.indexOf('home') != -1 ||\r\n productValue.indexOf('dental') != -1 ||\r\n productValue.indexOf('travel') != -1\r\n ) {\r\n this.element\r\n .querySelector('#callbackFormContainer .morning_evening')\r\n .classList.remove('is-hidden')\r\n } else {\r\n this.element\r\n .querySelector('#callbackFormContainer .time_slot')\r\n .classList.remove('is-hidden')\r\n }\r\n }\r\n\r\n hideSelectContent() {\r\n $$('#callbackFormContainer .selectContent', this.element).forEach(item => {\r\n item.classList.add('is-hidden')\r\n })\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport MicroModal from 'micromodal'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.callbackForm = document.getElementById('callbackForm')\r\n this.callbackFormContainer = document.getElementById(\r\n 'callbackFormContainer'\r\n )\r\n }\r\n\r\n ctaCallback() {\r\n if (this.element.classList.contains('offerInfo-content')) {\r\n var ModalID = this.element.closest('.modal.is-open')\r\n MicroModal.close(ModalID.id)\r\n document.querySelector('html').classList.remove('no-scroll')\r\n }\r\n document.getElementById('callbackForm').scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n })\r\n setTimeout(function() {\r\n this.callbackForm.classList.add('callbackForm-container')\r\n this.callbackFormContainer.classList.remove('is-hidden')\r\n }, 1200)\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n static targets = ['claimNumber']\r\n\r\n selectChange() {\r\n this.claimNumberTarget.innerHTML = 'Call ' + event.currentTarget.value\r\n this.claimNumberTarget.setAttribute(\r\n 'href',\r\n 'tel:' + event.currentTarget.value\r\n )\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.element.classList.add('is-active')\r\n\r\n window.addEventListener('DOMContentLoaded', function() {\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth',\r\n })\r\n })\r\n }\r\n\r\n hideOverlay(event) {\r\n this.element.classList.remove('is-active')\r\n }\r\n\r\n redirectPage(e) {\r\n window.location = e.target.value\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n initialize() {}\r\n\r\n goTojobList() {\r\n document.getElementById('jobList').scrollIntoView({\r\n behavior: 'smooth',\r\n })\r\n }\r\n}\r\n","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\n\nexport default function isLeapYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import { Controller } from 'stimulus'\r\nimport isLeapYear from 'date-fns/isleapyear'\r\n\r\nconst API_PATH = window.CM_CONFIG.apis.swagger.endpoint\r\nexport default class extends Controller {\r\n static targets = [\r\n 'EstimatedRefund',\r\n 'DaysSickLeaveRemaining',\r\n 'DaysSickLeaveRemainingFullPay',\r\n 'DaysSickLeaveRemainingHalfPay',\r\n ]\r\n\r\n initialize() {\r\n this.pageId = []\r\n this.showCurrentPage()\r\n this.SickPayDataList = this.element.querySelector(\r\n '.calculator-success-list'\r\n )\r\n this.calcNumber = this.element.querySelector('.form-input--calcNumber')\r\n this.loadingText = this.element.querySelector('.loading')\r\n }\r\n\r\n showCurrentPage() {\r\n let calcPages = this.element.querySelectorAll('.calculator-page')\r\n Array.from(calcPages).forEach((el, i) => {\r\n this.pageId.push(parseFloat(el.getAttribute('data-pageid')))\r\n if (this.page == this.pageId[i]) {\r\n el.classList.add('active-page')\r\n } else {\r\n el.classList.remove('active-page')\r\n }\r\n })\r\n this.hideIcon()\r\n this.updateProgress()\r\n this.submitCalcForm()\r\n }\r\n\r\n restartCalculator() {\r\n this.loadingText.classList.remove('is-hidden')\r\n if (this.SickPayDataList != null) {\r\n this.SickPayDataList.classList.add('is-hidden')\r\n }\r\n this.page = 1\r\n var Forms = this.element.querySelectorAll('form')\r\n var FormElements = this.element.querySelectorAll('input, select')\r\n var SubmitButtons = this.element.querySelectorAll('#calcSubmitButton')\r\n var ValidationClasses = this.element.querySelectorAll('.form-input')\r\n var errorMessageClasses = this.element.querySelectorAll('.status')\r\n Array.from(Forms).forEach((el, i) => {\r\n el.reset()\r\n })\r\n Array.from(FormElements).forEach((el, i) => {\r\n el.oninput = null\r\n el.onchange = null\r\n if (el.classList.contains('is-success')) {\r\n el.classList.remove('is-success')\r\n }\r\n if (el.classList.contains('is-error')) {\r\n el.classList.remove('is-error')\r\n }\r\n })\r\n Array.from(errorMessageClasses).forEach((el, i) => {\r\n el.style.display = 'none'\r\n if (el.classList.contains('status-success')) {\r\n el.classList.remove('status-success')\r\n }\r\n if (el.classList.contains('status-error')) {\r\n el.classList.remove('status-error')\r\n }\r\n })\r\n }\r\n\r\n get page() {\r\n return parseFloat(this.data.get('page'))\r\n }\r\n\r\n set page(value) {\r\n this.data.set('page', value)\r\n this.showCurrentPage()\r\n }\r\n\r\n submitCalcForm() {\r\n if (this.page == 7) {\r\n this.TaxRefundCalculator = document.getElementById('taxRefundCalculator')\r\n let TaxRefundRequestData = this.toJSONString(this.TaxRefundCalculator)\r\n\r\n this.EstimatedRefundTarget.classList.add('is-hidden')\r\n this.element.querySelector('.estimated-refund-title').classList.remove('is-hidden')\r\n this.element.querySelector('.loading').classList.remove('is-hidden')\r\n this.element.querySelector('.calculator-copy-success').classList.remove('is-hidden')\r\n this.element.querySelector('.loading--error').classList.add('is-hidden')\r\n\r\n fetch(`/forms/calculatetaxrefund`,{\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({ taxRefundRequest: TaxRefundRequestData })\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n this.loadingText.classList.add('is-hidden')\r\n this.EstimatedRefundTarget.classList.remove('is-hidden')\r\n this.EstimatedRefundTarget.innerHTML =\r\n '€' + data.TotalRefundResult\r\n this.element.querySelector('.loading--error').classList.add('is-hidden')\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n this.element.querySelector('.estimated-refund-title').classList.add('is-hidden')\r\n this.element.querySelector('.loading').classList.add('is-hidden')\r\n this.element.querySelector('.calculator-copy-success').classList.add('is-hidden')\r\n this.element.querySelector('.loading--error').classList.remove('is-hidden')\r\n this.element.querySelector('.loading--error').parentElement.style.borderBottom = '0 none';\r\n })\r\n\r\n }\r\n }\r\n\r\n submitSickPayCalcForm() {\r\n if (event.currentTarget.hasAttribute('disabled') == false) {\r\n this.page = this.page + 1\r\n let SickPayCalculator = document.getElementById('sickPayCalculator')\r\n let SickPayRequestData = this.toJSONString(SickPayCalculator)\r\n\r\n this.element.querySelector('.loading--sickPay').classList.remove('is-hidden')\r\n this.element.querySelector('.loading--sickPayError').classList.add('is-hidden')\r\n\r\n fetch(`/forms/calculatesickpay`,{\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({ sickPayRequest: SickPayRequestData })\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n this.loadingText.classList.add('is-hidden')\r\n this.SickPayDataList.classList.remove('is-hidden')\r\n this.element.querySelector('.loading--sickPayError').classList.add('is-hidden')\r\n this.DaysSickLeaveRemainingTarget.innerText = data.DaysSickLeaveRemaining;\r\n this.DaysSickLeaveRemainingFullPayTarget.innerText = data.DaysSickLeaveRemainingFullPay;\r\n this.DaysSickLeaveRemainingHalfPayTarget.innerText = data.DaysSickLeaveRemainingHalfPay;\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n this.element.querySelector('.loading--sickPay').classList.add('is-hidden')\r\n this.element.querySelector('.loading--sickPayError').classList.remove('is-hidden')\r\n })\r\n }\r\n }\r\n\r\n toJSONString(calcDivision) {\r\n var obj = {}\r\n var elements = calcDivision.querySelectorAll('input, select')\r\n for (var i = 0; i < elements.length; ++i) {\r\n var element = elements[i]\r\n var name = element.name\r\n var value\r\n if (element.type == 'number' || element.type == 'tel') {\r\n value = Number(element.value)\r\n } else if (element.type == 'radio' && element.checked == true) {\r\n if (element.value == 'true') {\r\n value = true\r\n } else if (element.value == 'false') {\r\n value = false\r\n } else value = element.value\r\n } else if (element.type == 'select-one') {\r\n value = element.value\r\n }\r\n\r\n if (name && value !== '' && value !== undefined && value !== null) {\r\n obj[name] = value\r\n }\r\n\r\n if (element.name == 'NumberOfStudents' && element.value == 0) {\r\n obj['NumberOfStudents'] = 0\r\n }\r\n }\r\n\r\n if (this.dateofbirth !== '') {\r\n obj['AvcDob'] = this.dateofbirth\r\n }\r\n\r\n return obj\r\n }\r\n\r\n nextPage() {\r\n if (event.currentTarget.hasAttribute('disabled') == false) {\r\n this.page = parseInt(this.page)\r\n this.page++\r\n this.updateProgress()\r\n }\r\n }\r\n\r\n prevPage() {\r\n if (this.page == Math.floor(this.page)) {\r\n this.page--\r\n this.updateProgress()\r\n } else {\r\n this.page = parseFloat((this.page - 0.1).toFixed(1))\r\n }\r\n }\r\n\r\n nextSubPage() {\r\n if (event.currentTarget.hasAttribute('disabled') == false) {\r\n this.page = parseFloat((this.page + 0.1).toFixed(1))\r\n }\r\n }\r\n\r\n Page2Next() {\r\n if (event.currentTarget.hasAttribute('disabled') == false) {\r\n const subPageChoice = this.element.querySelector('.subPage-choice')\r\n if (subPageChoice.value == 'Married') {\r\n this.page = parseFloat((this.page + 0.1).toFixed(1))\r\n } else {\r\n this.page++\r\n }\r\n }\r\n }\r\n\r\n hideIcon() {\r\n if (\r\n this.page == 1 ||\r\n this.element.querySelector('.last-page').classList.contains('active-page')\r\n ) {\r\n this.element.querySelector('.back-icon').classList.add('is-hidden')\r\n } else {\r\n this.element.querySelector('.back-icon').classList.remove('is-hidden')\r\n }\r\n }\r\n\r\n Increment() {\r\n this.element.querySelector('.form-input--calcNumber').value =\r\n parseInt(this.calcNumber.value) + 1\r\n }\r\n\r\n Decrement() {\r\n if (parseInt(this.calcNumber.value) > 0) {\r\n this.element.querySelector('.form-input--calcNumber').value =\r\n parseInt(this.calcNumber.value) - 1\r\n } else {\r\n this.calcNumber.value = '0'\r\n this.element.querySelector('.form-input--calcNumber').value = parseInt(\r\n this.calcNumber.value\r\n )\r\n }\r\n }\r\n\r\n updateProgress() {\r\n const progress = this.element.querySelector('.progress-bar')\r\n if (progress !== null && progress !== undefined) {\r\n if (this.page == 1) {\r\n progress.style.width = '4%'\r\n }\r\n if (this.page == 2) {\r\n progress.style.width = '20%'\r\n }\r\n if (this.page == 3) {\r\n progress.style.width = '36%'\r\n }\r\n if (this.page == 4) {\r\n progress.style.width = '52%'\r\n }\r\n if (this.page == 5) {\r\n progress.style.width = '68%'\r\n }\r\n if (this.page == 6) {\r\n progress.style.width = '84%'\r\n }\r\n if (this.page == 7) {\r\n progress.style.width = '100%'\r\n }\r\n }\r\n }\r\n\r\n validateDate() {\r\n var date = this.element.querySelector('.calc--dd')\r\n var month = this.element.querySelector('.calc--mm')\r\n var year = this.element.querySelector('.calc--yyyy')\r\n\r\n //combine the date, month and year\r\n this.dateofbirth = month.value + '/' + date.value + '/' + year.value\r\n //check it's validity\r\n if (date.checkValidity() && month.checkValidity() && year.checkValidity()) {\r\n const regEx = /^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/\r\n const valid = regEx.test(this.dateofbirth)\r\n if (!valid) {\r\n this.element.querySelector('.date').classList.add('is-invalid')\r\n this.element.querySelector('.date').classList.remove('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.remove('is-hidden')\r\n } else if (\r\n valid &&\r\n month.value == 2 &&\r\n isLeapYear(this.dateofbirth) &&\r\n date.value >= 29\r\n ) {\r\n this.element.querySelector('.date').classList.remove('is-invalid')\r\n this.element.querySelector('.date').classList.add('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.add('is-hidden')\r\n this.nextSubPage()\r\n } else if (\r\n valid &&\r\n month.value == 2 &&\r\n !isLeapYear(this.dateofbirth) &&\r\n date.value > 28\r\n ) {\r\n this.element.querySelector('.date').classList.add('is-invalid')\r\n this.element.querySelector('.date').classList.remove('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.remove('is-hidden')\r\n } else {\r\n this.element.querySelector('.date').classList.remove('is-invalid')\r\n this.element.querySelector('.date').classList.add('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.add('is-hidden')\r\n this.nextSubPage()\r\n }\r\n }\r\n }\r\n\r\n validateNextPage() {\r\n if (this.page == 3) {\r\n if (document.getElementById('MedicalExpenseYes').checked == true) {\r\n this.nextSubPage()\r\n return false\r\n } else {\r\n this.nextPage()\r\n return false\r\n }\r\n }\r\n\r\n if (this.page == 3.2) {\r\n if (document.getElementById('GetRefundsYes').checked == true) {\r\n this.nextSubPage()\r\n return false\r\n } else {\r\n this.nextPage()\r\n return false\r\n }\r\n }\r\n\r\n if (this.page == 4) {\r\n if (document.getElementById('TutionFeesYes').checked == true) {\r\n this.nextSubPage()\r\n return false\r\n } else {\r\n this.nextPage()\r\n return false\r\n }\r\n }\r\n\r\n if (this.page == 5) {\r\n if (document.getElementById('SalayProtectionPayYes').checked == true) {\r\n this.nextSubPage()\r\n return false\r\n } else {\r\n this.nextPage()\r\n return false\r\n }\r\n }\r\n\r\n if (this.page == 6) {\r\n if (document.getElementById('AVCPayYes').checked == true) {\r\n this.nextSubPage()\r\n return false\r\n } else {\r\n this.nextPage()\r\n return false\r\n }\r\n }\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport isLeapYear from 'date-fns/isleapyear'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.dateElement = this.element.querySelectorAll('input')\r\n this.submitButton = this.element.parentElement.parentElement.querySelector(\r\n '.form-submit-button'\r\n )\r\n }\r\n\r\n validateDate(event) {\r\n const date = this.dateElement[0];\r\n const month = this.dateElement[1];\r\n const year = this.dateElement[2];\r\n const combinedDate = this.dateElement[3] != undefined ? this.dateElement[3] : null;\r\n\r\n\r\n //combine the date, month and year\r\n if (date.value.length >= 2 && date.nextElementSibling) {\r\n if (event.keyCode !== 16 && event.keyCode !== 9) {\r\n date.nextElementSibling.focus();\r\n }\r\n }\r\n\r\n\r\n if (month.value.length >= 2 && month.nextElementSibling) {\r\n if (event.keyCode !== 16 && event.keyCode !== 9) {\r\n month.nextElementSibling.focus();\r\n }\r\n }\r\n\r\n\r\n this.dateofbirth = month.value + '/' + date.value + '/' + year.value\r\n\r\n if (combinedDate != null) {\r\n if (year.value.length === 4 && month.value.length > 0 && date.value.length > 0) {\r\n combinedDate.value = new Date(year.value, month.value - 1, date.value, 14, 0, 0, 0);\r\n }\r\n else {\r\n combinedDate.value = \"\";\r\n }\r\n }\r\n\r\n\r\n //check it's validity\r\n if (date.checkValidity() && month.checkValidity() && year.checkValidity()) {\r\n this.element.querySelector('.date').classList.remove('is-invalid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.add('is-hidden')\r\n const regEx = /^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)[0-9][0-9])*$/\r\n const valid = regEx.test(this.dateofbirth)\r\n //regular expression not valid (Incorrect date)\r\n if (!valid) {\r\n this.element.querySelector('.date').classList.add('is-invalid')\r\n this.element.querySelector('.date').classList.remove('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.remove('is-hidden')\r\n if (this.submitButton !== undefined) {\r\n this.submitButton.setAttribute('disabled', 'disabled')\r\n }\r\n } else if (\r\n valid &&\r\n month.value == 2 &&\r\n isLeapYear(this.dateofbirth) &&\r\n date.value >= 29\r\n ) {\r\n //is leap year and has valid date\r\n this.element.querySelector('.date').classList.remove('is-invalid')\r\n this.element.querySelector('.date').classList.add('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.add('is-hidden')\r\n if (this.submitButton !== undefined) {\r\n this.submitButton.removeAttribute('disabled', 'disabled')\r\n }\r\n } else if (\r\n valid &&\r\n month.value == 2 &&\r\n !isLeapYear(this.dateofbirth) &&\r\n date.value > 28\r\n ) {\r\n //is not leap year\r\n this.element.querySelector('.date').classList.add('is-invalid')\r\n this.element.querySelector('.date').classList.remove('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.remove('is-hidden')\r\n if (this.submitButton !== undefined) {\r\n this.submitButton.setAttribute('disabled', 'disabled')\r\n }\r\n } else {\r\n this.element.querySelector('.date').classList.remove('is-invalid')\r\n this.element.querySelector('.date').classList.add('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.add('is-hidden')\r\n if (this.submitButton !== undefined) {\r\n this.submitButton.removeAttribute('disabled', 'disabled')\r\n }\r\n }\r\n }\r\n if (this.element.querySelector('.date').classList.contains('noValidate')) {\r\n if (date.value === '' && month.value === '' && year.value === '') {\r\n this.element.querySelector('.date').classList.remove('is-invalid')\r\n this.element.querySelector('.date').classList.add('is-valid')\r\n this.element\r\n .querySelector('.date')\r\n .nextElementSibling.classList.add('is-hidden')\r\n if (this.submitButton !== undefined) {\r\n this.submitButton.removeAttribute('disabled', 'disabled')\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport $$ from 'double-dollar'\r\n\r\nconst API_PATH = window.CM_CONFIG.apis.swagger.endpoint\r\n\r\nexport default class extends Controller {\r\n static targets = ['Message', 'Button']\r\n\r\n initialize() { }\r\n\r\n selectAll(event) {\r\n var select_all = this.element.querySelector(\"input[id^='All']\")\r\n var checkboxes = this.element.querySelectorAll('.genericCheckBox')\r\n\r\n select_all.addEventListener('change', function (e) {\r\n for (i = 0; i < checkboxes.length; i++) {\r\n checkboxes[i].checked = select_all.checked\r\n }\r\n })\r\n for (var i = 0; i < checkboxes.length; i++) {\r\n checkboxes[i].addEventListener('change', function (e) {\r\n if (this.checked == false) {\r\n select_all.checked = false\r\n }\r\n if (\r\n document.querySelectorAll('.genericCheckBox:checked').length ==\r\n checkboxes.length\r\n ) {\r\n select_all.checked = true\r\n }\r\n })\r\n }\r\n }\r\n\r\n Submit(event) {\r\n if (event.currentTarget.hasAttribute('disabled') == false) {\r\n this.ButtonTarget.setAttribute('disabled', 'disabled')\r\n let formData = this.toJSONString(this.element)\r\n this.element.querySelector('.message-box').classList.remove('is-hidden')\r\n this.element\r\n .querySelector('.message-box')\r\n .classList.remove('error', 'success')\r\n this.element.querySelector('.message-box').classList.add('info')\r\n this.MessageTarget.innerText = 'Loading please wait...'\r\n\r\n fetch(`/forms/contactrequest`,{\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n VerificationToken: $(\"[id=forgeryToken]\").val(),\r\n },\r\n body: JSON.stringify({ contactRequest: formData })\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n console.log('submit form');\r\n this.element.querySelector('.formtohide').classList.add('is-hidden')\r\n this.element\r\n .querySelector('.callbackForm-success')\r\n .classList.remove('is-hidden')\r\n this.element\r\n .querySelector('.callbackForm-success')\r\n .classList.add('success')\r\n if (data.Result.SuccessHeader1 != null) {\r\n this.element.querySelector(\r\n '.callbackForm-success .header'\r\n ).innerHTML =\r\n data.Result.SuccessHeader1\r\n }\r\n if (data.Result.SuccessHeader2 != null) {\r\n this.element.querySelector(\r\n '.callbackForm-success .callbackForm-success--copy h3'\r\n ).innerText =\r\n data.Result.SuccessHeader2\r\n }\r\n if (data.Result.SuccessHeader3 != null) {\r\n this.element.querySelector(\r\n '.callbackForm-success .callbackForm-success--paragraph p'\r\n ).innerText =\r\n data.Result.SuccessHeader3\r\n }\r\n this.element\r\n .querySelector('.callbackForm-success .success-btn')\r\n .setAttribute('href', 'tel:' + data.Result.SuccessCTA)\r\n this.element.querySelector(\r\n '.callbackForm-success .btn-inner span'\r\n ).innerText =\r\n data.Result.SuccessCTA\r\n\r\n this.ButtonTarget.removeAttribute('disabled')\r\n\r\n window.dataLayer.push({\r\n event: 'VirtualPageview',\r\n virtualPageURL: data.Result.VirtualPageURL,\r\n virtualPageTitle: data.Result.VirtualPageTitle,\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n this.element.querySelector('.message-box').classList.remove('info')\r\n this.element.querySelector('.message-box').classList.add('error')\r\n this.MessageTarget.innerText = 'Error occured!'\r\n this.ButtonTarget.removeAttribute('disabled')\r\n });\r\n }\r\n }\r\n\r\n toJSONString(data) {\r\n let obj = {}\r\n let elements = data.querySelectorAll('input, select, textarea')\r\n for (let i = 0; i < elements.length; i++) {\r\n let element = elements[i]\r\n let name = element.name\r\n let value\r\n if (element.type == 'radio' || element.type == 'checkbox') {\r\n if (element.checked) {\r\n if (element.value === 'true') {\r\n value = true\r\n } else if (element.value === 'false') {\r\n value = false\r\n } else {\r\n value = element.value\r\n }\r\n }\r\n } else {\r\n if (element.parentElement.classList.contains('date')) {\r\n name = element.parentElement.children[3].name\r\n value = new Date(element.parentElement.children[3].value)\r\n } else {\r\n value = element.value.trim()\r\n }\r\n }\r\n if (element.hasAttribute('data-key') && element.checked) {\r\n obj[element.getAttribute('data-key')] = Boolean(element.value)\r\n }\r\n if (\r\n value !== '' &&\r\n value !== undefined &&\r\n value !== null &&\r\n !element.hasAttribute('data-key')\r\n ) {\r\n obj[name] = value\r\n }\r\n }\r\n if (obj.FirstName != undefined || obj.LastName != undefined) {\r\n obj['Name'] = obj.FirstName + ' ' + obj.LastName\r\n delete obj.FirstName\r\n delete obj.LastName\r\n }\r\n if (!obj.RequestType) {\r\n obj['RequestType'] = 'LEAD'\r\n }\r\n return obj\r\n }\r\n\r\n selectChange(event) {\r\n this.hideSelectContent()\r\n var productValue = event.target.value.toLowerCase()\r\n if (\r\n productValue.includes('car') ||\r\n productValue.includes('health') ||\r\n productValue.includes('home') ||\r\n productValue.includes('dental') ||\r\n productValue.includes('travel')\r\n ) {\r\n this.element\r\n .querySelector('.morning_evening')\r\n .classList.remove('is-hidden')\r\n } else {\r\n this.element.querySelector('.time_slot').classList.remove('is-hidden')\r\n }\r\n }\r\n\r\n hideSelectContent() {\r\n $$('.selectContent', this.element).forEach(item => {\r\n item.classList.add('is-hidden')\r\n })\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\nimport MicroModal from 'micromodal'\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.targetID = this.data.get('target')\r\n this.targetElement = document.querySelector(`#${this.targetID}`)\r\n\r\n // If no target element, disable the modal\r\n if (this.targetElement === null) {\r\n this.element.setAttribute('disabled', true)\r\n return\r\n }\r\n\r\n MicroModal.init({\r\n // onShow: modal => console.info(`${modal.id} is shown`),\r\n onClose: () => {\r\n document.querySelector('html').classList.remove('no-scroll')\r\n //document.getElementsByName(this.targetID)[0].reset() //reference\r\n let forms = document\r\n .getElementById(this.targetID)\r\n .querySelector('form')\r\n .getAttribute('name')\r\n let formsNode = document.getElementsByName(forms)\r\n Array.from(formsNode).forEach((form, index) => {\r\n document.getElementsByName(form.getAttribute('name'))[index].reset()\r\n })\r\n document\r\n .getElementById(this.targetID)\r\n .querySelector('.message-box')\r\n .classList.add('is-hidden')\r\n let ValidationClasses = document\r\n .getElementById(this.targetID)\r\n .querySelectorAll('.form-field-valid')\r\n Array.from(ValidationClasses).forEach((el, i) => {\r\n ValidationClasses[i].classList.remove('form-field-valid')\r\n })\r\n\r\n let formtohide = document\r\n .getElementById(this.targetID)\r\n .querySelector('.formtohide')\r\n if (formtohide.classList.contains('is-hidden')) {\r\n formtohide.classList.remove('is-hidden')\r\n }\r\n let callbackForm = document\r\n .getElementById(this.targetID)\r\n .querySelector('.genericForm')\r\n if (!callbackForm.classList.contains('is-hidden')) {\r\n callbackForm.classList.add('is-hidden')\r\n }\r\n\r\n let FormElements = document\r\n .getElementById(this.targetID)\r\n .querySelectorAll('input, select, textarea')\r\n let errorMessageClasses = document\r\n .getElementById(this.targetID)\r\n .querySelectorAll('.status')\r\n Array.from(FormElements).forEach((el, i) => {\r\n FormElements[i].oninput = null\r\n FormElements[i].onchange = null\r\n if (FormElements[i].classList.contains('is-success')) {\r\n FormElements[i].classList.remove('is-success')\r\n }\r\n if (FormElements[i].classList.contains('is-error')) {\r\n FormElements[i].classList.remove('is-error')\r\n }\r\n })\r\n Array.from(errorMessageClasses).forEach((el, i) => {\r\n errorMessageClasses[i].style.display = 'none'\r\n if (errorMessageClasses[i].classList.contains('status-success')) {\r\n errorMessageClasses[i].classList.remove('status-success')\r\n }\r\n if (errorMessageClasses[i].classList.contains('status-error')) {\r\n errorMessageClasses[i].classList.remove('status-error')\r\n }\r\n })\r\n },\r\n openTrigger: 'data-modalform-target',\r\n debugMode: false,\r\n })\r\n this.element.addEventListener('click', this.handleShow.bind(this))\r\n }\r\n\r\n handleShow(e) {\r\n e.preventDefault()\r\n document.querySelector('html').classList.add('no-scroll')\r\n MicroModal.show(`${this.targetID}`)\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n static targets = [\r\n 'FormPhase',\r\n 'DetailsPhase',\r\n 'SuccessForm',\r\n 'FormContentContainer',\r\n ]\r\n initialize() {\r\n this.FormContainer = this.element\r\n }\r\n\r\n showForm() {\r\n let callbackFormContainerClassList = document.getElementById(\r\n 'callbackFormContainer'\r\n ).classList\r\n let callbackFormClassList = document.getElementById('callbackForm')\r\n .classList\r\n if (callbackFormContainerClassList.contains != 'is-hidden') {\r\n callbackFormContainerClassList.add('is-hidden')\r\n callbackFormClassList.remove('callbackForm-container')\r\n }\r\n\r\n this.FormContainer.classList.add('generalEnquiryForm-container')\r\n this.FormContentContainerTarget.classList.remove('is-hidden')\r\n if (\r\n this.element\r\n .querySelector('.form-container')\r\n .classList.contains('is-hidden')\r\n ) {\r\n this.element\r\n .querySelector('.form-container')\r\n .classList.remove('is-hidden')\r\n this.SuccessFormTarget.classList.add('is-hidden')\r\n }\r\n }\r\n\r\n hideForm() {\r\n document.forms['FooterGeneralEnquiry_Form'].reset()\r\n this.FormContainer.classList.remove('generalEnquiryForm-container')\r\n this.FormContentContainerTarget.classList.add('is-hidden')\r\n var FormElements = this.element.querySelectorAll('input, select, textarea')\r\n var errorMessageClasses = this.element.querySelectorAll('.status')\r\n Array.from(FormElements).forEach((el, i) => {\r\n FormElements[i].oninput = null\r\n FormElements[i].onchange = null\r\n if (FormElements[i].classList.contains('is-success')) {\r\n FormElements[i].classList.remove('is-success')\r\n }\r\n if (FormElements[i].classList.contains('is-error')) {\r\n FormElements[i].classList.remove('is-error')\r\n }\r\n })\r\n Array.from(errorMessageClasses).forEach((el, i) => {\r\n errorMessageClasses[i].style.display = 'none'\r\n if (errorMessageClasses[i].classList.contains('status-success')) {\r\n errorMessageClasses[i].classList.remove('status-success')\r\n }\r\n if (errorMessageClasses[i].classList.contains('status-error')) {\r\n errorMessageClasses[i].classList.remove('status-error')\r\n }\r\n })\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\n\r\nconst MOTW_PATH = window.CM_CONFIG.apis.motwUrl.endpoint\r\nconst HOTW_PATH = window.CM_CONFIG.apis.hotwUrl.endpoint\r\n\r\nexport default class extends Controller {\r\n initialize() {\r\n this.RegisterNumber = this.element.querySelector(\r\n '.form-input--carRegistrationHeroCard'\r\n )\r\n this.HomeAddress = this.element.querySelector('.selector-input')\r\n }\r\n\r\n getMotorQuote() {\r\n if (this.RegisterNumber.value !== '') {\r\n // window.location = \"http://localhost:52003/your-car/?\" + this.RegisterNumber.value\r\n window.location = `${MOTW_PATH}/your-car/?` + this.RegisterNumber.value\r\n }\r\n }\r\n\r\n getHomeQuote() {\r\n if (this.HomeAddress.value !== '') {\r\n // window.location = \"http://localhost:52002/address/?\" + this.HomeAddress.value\r\n window.location = `${HOTW_PATH}/address/?` + this.HomeAddress.value\r\n }\r\n }\r\n}\r\n","import { Controller } from 'stimulus'\r\n\r\nexport default class extends Controller {\r\n static targets = [\r\n 'iconCardCopy',\r\n 'iconCardTitle',\r\n 'contentCardTitle',\r\n 'contentCardCopy',\r\n 'Chip',\r\n ]\r\n\r\n initialize() {\r\n this.setHeight(this.iconCardCopyTargets)\r\n this.setHeight(this.iconCardTitleTargets)\r\n this.setHeight(this.contentCardTitleTargets)\r\n this.setHeight(this.contentCardCopyTargets)\r\n this.setHeight(this.ChipTargets)\r\n }\r\n\r\n setHeight(targetArray) {\r\n var maxHeight = []\r\n if (targetArray.length >= 1) {\r\n Array.from(targetArray).forEach(el => {\r\n maxHeight = maxHeight > el.scrollHeight ? maxHeight : el.scrollHeight\r\n })\r\n Array.from(targetArray).forEach(el => {\r\n setTimeout(function () {\r\n el.style.minHeight = maxHeight + 'px'\r\n }, 1000)\r\n })\r\n }\r\n }\r\n}\r\n","const checkAvailable = (route) => {\r\n let subfolderPath = subfolderPath ? subfolderPath : ''\r\n const encodedRoute = encodeURIComponent(route)\r\n\r\n return fetch(subfolderPath + '/messenger/queue?route=' + encodedRoute)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw response\r\n }\r\n return response.json()\r\n })\r\n .then((data) => data)\r\n .catch((error) => {\r\n return error.json().then((body) => {\r\n console.error(body)\r\n return { queueID: '', idle: 0, interacting: 0, chatAvailable: false }\r\n })\r\n })\r\n}\r\n\r\nconst getDeployment = () => {\r\n let subfolderPath = subfolderPath ? subfolderPath : ''\r\n return fetch(subfolderPath + '/integrationService/messenger/key')\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw response\r\n }\r\n return response.json()\r\n })\r\n .then((data) => data)\r\n .catch((error) => {\r\n return error.json().then((body) => {\r\n console.error(body)\r\n return ''\r\n })\r\n })\r\n}\r\n\r\nconst genesysApi = {\r\n checkAvailable: checkAvailable,\r\n getDeployment: getDeployment,\r\n}\r\n\r\nexport { genesysApi as default, genesysApi }\r\n","/*global Genesys:readonly */\r\nimport genesysApi from './genesysApi'\r\nimport getRoute from './getRoute'\r\nimport { isfunction } from '../utils/istype'\r\nimport addCookieBotListeners from '../utils/cookiebotListeners'\r\n\r\nlet isOpen = { value: 'false' }\r\nlet key = ''\r\nlet listenersAdded = false\r\n\r\nconst initGenesys = () => {\r\n getLocalStorage()\r\n if (typeof Genesys !== 'undefined' && isfunction(Genesys)) {\r\n launchGenesys()\r\n subscribeGenesysOpen()\r\n } else if (!listenersAdded) {\r\n listenersAdded = addCookieBotListeners({\r\n OnDecline: recallInit,\r\n OnAccept: recallInit,\r\n listenerFlag: listenersAdded,\r\n })\r\n }\r\n}\r\n\r\nconst recallInit = () => {\r\n setTimeout(() => initGenesys(), 100)\r\n}\r\n\r\nconst getLocalStorage = () => {\r\n genesysApi.getDeployment().then((response) => {\r\n if (response != '') {\r\n isOpen = JSON.parse(localStorage.getItem(`_${response}:gcmcopn`))\r\n }\r\n })\r\n}\r\n\r\nconst setRoute = () => {\r\n Genesys('command', 'Database.set', {\r\n messaging: {\r\n customAttributes: {\r\n url: key,\r\n },\r\n },\r\n })\r\n}\r\n\r\nconst launchGenesys = () => {\r\n Genesys('subscribe', 'Launcher.ready', () => {\r\n let route = getRoute()\r\n genesysApi.checkAvailable(route).then((response) => {\r\n key = response.key\r\n if (response?.chatAvailable) {\r\n Genesys('command', 'Launcher.show')\r\n } else {\r\n if (isOpen?.value == 'true') {\r\n Genesys('command', 'Messenger.close')\r\n }\r\n Genesys('command', 'Launcher.hide')\r\n }\r\n })\r\n })\r\n}\r\n\r\nconst subscribeGenesysOpen = () => {\r\n Genesys('subscribe', 'Messenger.opened', function () {\r\n setRoute()\r\n })\r\n}\r\n\r\nexport { initGenesys as default, initGenesys }\r\n","/*global CookieConsent:readonly*/\r\nconst addCookieBotListeners = (props) => {\r\n window.addEventListener(\r\n 'CookiebotOnDecline',\r\n function () {\r\n if (CookieConsent.changed) {\r\n props.OnDecline()\r\n }\r\n },\r\n false\r\n )\r\n window.addEventListener(\r\n 'CookiebotOnAccept',\r\n function () {\r\n if (CookieConsent.changed) {\r\n props.OnAccept()\r\n }\r\n },\r\n false\r\n )\r\n return !props.listenerFlag\r\n}\r\n\r\nexport { addCookieBotListeners as default }","const isfunction = (value) => typeof value === 'function'\r\nconst isUndefined = (value) => typeof value === 'undefined'\r\n\r\nexport { isfunction as default, isfunction, isUndefined }","const getRoute = () => {\r\n let location = window.location.pathname\r\n let hostname =\r\n window.location.hostname === 'localhost'\r\n ? 'www.cornmarket.ie'\r\n : window.location.hostname\r\n let formattedLocation = location.replace(/\\//g, '_')\r\n\r\n return hostname + formattedLocation \r\n}\r\n\r\nexport { getRoute as default, getRoute }\r\n","/**\r\n * Project Name: Cornmarket\r\n * @description The main Cornmarket JS file\r\n * @author The Nimbletank team\r\n *\r\n * Need help using JSDoc? Find out more at http://usejsdoc.org/\r\n */\r\nimport ready from 'lite-ready'\r\nimport { Application } from 'stimulus'\r\nimport svg4everybody from 'svg4everybody'\r\nimport BlockClick from './modules/BlockClick'\r\nimport Carousel from './modules/Carousel'\r\nimport Modal from './modules/Modal'\r\nimport NarrowNav from './modules/NarrowNav'\r\nimport Scroll from './modules/Scroll'\r\nimport Selector from './modules/Selector'\r\nimport ShowMore from './modules/ShowMore'\r\nimport Video from './modules/Video'\r\nimport WideNav from './modules/WideNav'\r\nimport Accordion from './modules/Accordion'\r\nimport FAQList from './modules/FAQList'\r\nimport FeaturedContentCard from './modules/FeaturedContentCard'\r\nimport Tab from './modules/Tab'\r\nimport Cookie from './modules/Cookie'\r\nimport PolicyCard from './modules/PolicyCard'\r\nimport ContactUsCard from './modules/ContactUsCard'\r\nimport CallbackForm from './modules/CallbackForm'\r\nimport CTAContainer from './modules/CTAContainer'\r\nimport Claim from './modules/Claim'\r\nimport handRaising from './modules/handRaising'\r\nimport jobCount from './modules/jobCount'\r\nimport Calculator from './modules/Calculator'\r\nimport DateValid from './modules/DateValid'\r\nimport SubmitForm from './modules/SubmitForm'\r\nimport ModalForm from './modules/ModalForm'\r\nimport GeneralEnquiryForm from './modules/GeneralEnquiryForm'\r\nimport GetQuote from './modules/GetQuote'\r\nimport autoHeight from './modules/autoHeight'\r\nimport initGenesys from './genesys'\r\nimport '../scss/cornmarket.scss'\r\n\r\n\r\nready(() => {\r\n svg4everybody()\r\n const application = Application.start()\r\n application.register('WideNav', WideNav)\r\n application.register('NarrowNav', NarrowNav)\r\n application.register('Selector', Selector) // Could be lazy loaded\r\n application.register('Video', Video)\r\n application.register('Modal', Modal)\r\n application.register('BlockClick', BlockClick)\r\n application.register('Carousel', Carousel)\r\n application.register('ShowMore', ShowMore)\r\n application.register('Scroll', Scroll)\r\n application.register('Accordion', Accordion)\r\n application.register('FAQList', FAQList)\r\n application.register('FeaturedContentCard', FeaturedContentCard)\r\n application.register('Tab', Tab)\r\n application.register('Cookie', Cookie)\r\n application.register('PolicyCard', PolicyCard)\r\n application.register('ContactUsCard', ContactUsCard)\r\n application.register('CallbackForm', CallbackForm)\r\n application.register('CTAContainer', CTAContainer)\r\n application.register('Claim', Claim)\r\n application.register('handRaising', handRaising)\r\n application.register('jobCount', jobCount)\r\n application.register('Calculator', Calculator)\r\n application.register('DateValid', DateValid)\r\n application.register('SubmitForm', SubmitForm)\r\n application.register('ModalForm', ModalForm)\r\n application.register('GeneralEnquiryForm', GeneralEnquiryForm)\r\n application.register('GetQuote', GetQuote)\r\n application.register('autoHeight', autoHeight)\r\n\r\n initGenesys()\r\n})\r\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = responsiveWatch;\nvar units = ['px', 'em', 'rem', 'ex', 'ch', 'mm', 'cm', 'in', 'pt', 'pc'];\n\nfunction responsiveWatch(_ref, cb) {\n var _ref$sizes = _ref.sizes;\n var sizes = _ref$sizes === undefined ? [] : _ref$sizes;\n var _ref$orientations = _ref.orientations;\n var orientations = _ref$orientations === undefined ? true : _ref$orientations;\n var _ref$medias = _ref.medias;\n var medias = _ref$medias === undefined ? false : _ref$medias;\n var _ref$queries = _ref.queries;\n var queries = _ref$queries === undefined ? {} : _ref$queries;\n var _ref$check = _ref.check;\n var check = _ref$check === undefined ? true : _ref$check;\n\n if (!Array.isArray(sizes)) {\n throw new Error('options.sizes must be an array');\n } else if (sizes.length === 1) {\n throw new Error('If you specify some sizes, you need at least two of them.');\n }\n\n if (check) {\n sizes.forEach(function (size, index) {\n if (typeof size.name !== 'string') {\n throw new Error('Size names must be string. Invalid: ' + size.name);\n }\n\n if (index < sizes.length - 1) {\n if (typeof size.breakpoint !== 'number') {\n throw new Error('Size [' + size.name + '] must have a number breakpoint. Invalid: ' + size.breakpoint);\n } else if (units.indexOf(size.unit) < 0) {\n throw new Error('Size [' + size.name + '] doesn\\'t have a valid unit. Invalid: ' + size.unit);\n } else if (size.breakpoint <= 0) {\n throw new Error('Size [' + size.name + '] must have a strictly positive breakpoint. Invalid: ' + size.unit);\n }\n } else {\n // Last size\n if (size.breakpoint !== undefined || size.unit !== undefined) {\n throw new Error('You must not define neither breakpoint nor unit for the last size');\n }\n }\n });\n\n // If all units are the same,\n // check that each breakpoint is bigger than the previous one\n for (var i = 1, l = sizes.length - 1; i < l; ++i) {\n var previous = sizes[i - 1],\n current = sizes[i];\n if (current.unit !== previous.unit) {\n // Not all same units, let's stop here\n break;\n } else if (current.breakpoint <= previous.breakpoint) {\n // Oops...\n throw new Error('Each breakpoint must be bigger than the previous one.');\n }\n }\n\n if (typeof orientations !== 'boolean') {\n throw new Error('options.orientations must be a boolean');\n }\n\n if (typeof medias !== 'boolean') {\n throw new Error('options.medias must be a boolean');\n }\n\n if (typeof cb !== 'function') {\n throw new Error('callback must be a function');\n }\n }\n\n var currentStatus = undefined;\n\n function callback() {\n currentStatus = status();\n cb(currentStatus);\n }\n\n var watchers = {\n sizes: {},\n orientations: {},\n medias: {},\n queries: {}\n };\n\n // Create all size watchers\n sizes.forEach(function (size, index) {\n var min = undefined,\n minUnit = undefined,\n max = undefined,\n maxUnit = undefined;\n\n // The min is actually the previous size breakpoint\n if (index > 0) {\n min = sizes[index - 1].breakpoint;\n minUnit = sizes[index - 1].unit;\n }\n\n // The max is the current size minus a little delta\n if (index < sizes.length - 1) {\n max = size.breakpoint;\n maxUnit = size.unit;\n\n switch (maxUnit) {\n case 'cm':\n case 'in':\n max -= 0.01;\n break;\n case 'em':\n case 'rem':\n case 'ex':\n case 'ch':\n case 'mm':\n case 'pt':\n case 'pc':\n max -= 0.1;\n break;\n default:\n max -= 1;\n }\n }\n\n // Merge min and max to create the final query\n var query = '';\n if (min !== undefined) {\n query += '(min-width: ' + min + minUnit + ')';\n }\n if (max !== undefined) {\n if (query !== '') {\n query += ' and ';\n }\n query += '(max-width: ' + max + maxUnit + ')';\n }\n\n watchers.sizes[size.name] = matchMedia(query);\n watchers.sizes[size.name].addListener(callback);\n });\n\n // Create both landscape and portrait watchers\n if (orientations) {\n watchers.orientations.landscape = matchMedia('(orientation: landscape)');\n watchers.orientations.landscape.addListener(callback);\n\n watchers.orientations.portrait = matchMedia('(orientation: portrait)');\n watchers.orientations.portrait.addListener(callback);\n }\n\n // Create watchers for all medias\n if (medias) {\n var _medias = ['braille', 'embossed', 'handheld', 'print', 'projection', 'screen', 'speech', 'tty', 'tv'];\n\n _medias.forEach(function (media) {\n watchers.medias[media] = matchMedia(media);\n watchers.medias[media].addListener(callback);\n });\n }\n\n // Create all custom watchers\n Object.keys(queries).forEach(function (query) {\n watchers.queries[query] = matchMedia(queries[query]);\n watchers.queries[query].addListener(callback);\n });\n\n // Save all keys just so we don't have to compute them every time\n var keys = {};\n\n Object.keys(watchers).forEach(function (level1) {\n var level2 = Object.keys(watchers[level1]);\n if (level2.length > 0) {\n keys[level1] = level2;\n }\n });\n\n var sizesHash = {};\n\n sizes.forEach(function (size) {\n sizesHash[size.name] = size;\n });\n\n function matchSizes(result, sizes) {\n return sizes.reduce(function (acc, size) {\n return acc || result.sizes[size.name];\n }, false);\n }\n\n var sizeUtils = {\n gt: function gt(result, size) {\n return matchSizes(result, sizes.slice(sizes.indexOf(size) + 1));\n },\n gte: function gte(result, size) {\n return matchSizes(result, sizes.slice(sizes.indexOf(size)));\n },\n lt: function lt(result, size) {\n return matchSizes(result, sizes.slice(0, sizes.indexOf(size)));\n },\n lte: function lte(result, size) {\n return matchSizes(result, sizes.slice(0, sizes.indexOf(size) + 1));\n }\n };\n\n // Generate the current status\n function status() {\n var result = {};\n\n // Assign a bunch of true/false flags for all media queries\n Object.keys(keys).forEach(function (level1) {\n keys[level1].forEach(function (level2) {\n if (!result[level1]) {\n result[level1] = {};\n }\n\n result[level1][level2] = watchers[level1][level2].matches;\n });\n });\n\n // Add all size comparators\n if (keys.sizes.length > 1) {\n ['gt', 'gte', 'lt', 'lte'].forEach(function (comp) {\n keys.sizes.forEach(function (sizeName) {\n if (!result[comp]) {\n result[comp] = {};\n }\n\n result[comp][sizeName] = sizeUtils[comp](result, sizesHash[sizeName]);\n });\n });\n }\n\n return result;\n }\n\n // Init callback\n callback();\n\n return {\n status: function status() {\n return currentStatus;\n }\n };\n}\n\n;\nmodule.exports = exports['default'];","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n * Fuzzy\n * https://github.com/myork/fuzzy\n *\n * Copyright (c) 2012 Matt York\n * Licensed under the MIT license.\n */\n\n(function() {\n\nvar root = this;\n\nvar fuzzy = {};\n\n// Use in node or in browser\nif (typeof exports !== 'undefined') {\n module.exports = fuzzy;\n} else {\n root.fuzzy = fuzzy;\n}\n\n// Return all elements of `array` that have a fuzzy\n// match against `pattern`.\nfuzzy.simpleFilter = function(pattern, array) {\n return array.filter(function(str) {\n return fuzzy.test(pattern, str);\n });\n};\n\n// Does `pattern` fuzzy match `str`?\nfuzzy.test = function(pattern, str) {\n return fuzzy.match(pattern, str) !== null;\n};\n\n// If `pattern` matches `str`, wrap each matching character\n// in `opts.pre` and `opts.post`. If no match, return null\nfuzzy.match = function(pattern, str, opts) {\n opts = opts || {};\n var patternIdx = 0\n , result = []\n , len = str.length\n , totalScore = 0\n , currScore = 0\n // prefix\n , pre = opts.pre || ''\n // suffix\n , post = opts.post || ''\n // String to compare against. This might be a lowercase version of the\n // raw string\n , compareString = opts.caseSensitive && str || str.toLowerCase()\n , ch;\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n // For each character in the string, either add it to the result\n // or wrap in template if it's the next string in the pattern\n for(var idx = 0; idx < len; idx++) {\n ch = str[idx];\n if(compareString[idx] === pattern[patternIdx]) {\n ch = pre + ch + post;\n patternIdx += 1;\n\n // consecutive characters should increase the score more than linearly\n currScore += 1 + currScore;\n } else {\n currScore = 0;\n }\n totalScore += currScore;\n result[result.length] = ch;\n }\n\n // return rendered string if we have a match for every char\n if(patternIdx === pattern.length) {\n // if the string is an exact match with pattern, totalScore should be maxed\n totalScore = (compareString === pattern) ? Infinity : totalScore;\n return {rendered: result.join(''), score: totalScore};\n }\n\n return null;\n};\n\n// The normal entry point. Filters `arr` for matches against `pattern`.\n// It returns an array with matching values of the type:\n//\n// [{\n// string: 'lah' // The rendered string\n// , index: 2 // The index of the element in `arr`\n// , original: 'blah' // The original element in `arr`\n// }]\n//\n// `opts` is an optional argument bag. Details:\n//\n// opts = {\n// // string to put before a matching character\n// pre: ''\n//\n// // string to put after matching character\n// , post: ''\n//\n// // Optional function. Input is an entry in the given arr`,\n// // output should be the string to test `pattern` against.\n// // In this example, if `arr = [{crying: 'koala'}]` we would return\n// // 'koala'.\n// , extract: function(arg) { return arg.crying; }\n// }\nfuzzy.filter = function(pattern, arr, opts) {\n if(!arr || arr.length === 0) {\n return [];\n }\n if (typeof pattern !== 'string') {\n return arr;\n }\n opts = opts || {};\n return arr\n .reduce(function(prev, element, idx, arr) {\n var str = element;\n if(opts.extract) {\n str = opts.extract(element);\n }\n var rendered = fuzzy.match(pattern, str, opts);\n if(rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered\n , score: rendered.score\n , index: idx\n , original: element\n };\n }\n return prev;\n }, [])\n\n // Sort by score. Browsers are inconsistent wrt stable/unstable\n // sorting, so force stable by using the index in the case of tie.\n // See http://ofb.net/~sethml/is-sort-stable.html\n .sort(function(a,b) {\n var compare = b.score - a.score;\n if(compare) return compare;\n return a.index - b.index;\n });\n};\n\n\n}());\n\n","\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj};var _createClass=function(){function defineProperties(target,props){for(var i=0;i collection\n for (// get the cached index\n var index = 0; index < uses.length; ) {\n // get the current \n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});","/*!\n * scroll-watcher - v1.4.0\n * A lightweight, blazing fast, rAF based, scroll watcher.\n * https://github.com/jonataswalker/scroll-watcher\n * Built: Wed Jan 22 2020 15:21:34 GMT-0300 (Brasilia Standard Time)\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=t||self).ScrollWatcher=e()}(this,function(){\"use strict\";function t(){}t.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function i(){o.off(t,i),e.apply(n,arguments)}return i._=e,this.on(t,i,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;othis.lastXY[1];return{scrollX:(this.lastXY=t)[0],scrollY:t[1],scrollingDown:e,scrollingUp:!e}},O.prototype.stopLoop=function(){V.cancel(this.rafId)},O.prototype.runLoop=function(){this.rafId=V(this.loopBound)},O.prototype.recalculate=function(t){var e=t.dimensions.top+t.offset.top,n=t.dimensions.top+t.offset.bottom+t.dimensions.height,o=this.lastXY[1],i=this.lastXY[1]+this.viewport.h;t.isAboveViewport=e=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight)-t},a.prototype.windowAtTop=function(t){return void 0===t&&(t=0),a.Internal.lastXY[1]<=(t=parseInt(t,10))},a}(e)});\n","var __self__ = (function (root) {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = root.DOMException\n}\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\nvar irrelevant = (function (exports) {\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n}({}));\n})(__self__);\ndelete __self__.fetch.polyfill\nexports = __self__.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = __self__.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = __self__.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = __self__.Headers\nexports.Request = __self__.Request\nexports.Response = __self__.Response\nmodule.exports = exports\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":""}