{"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/prismic-javascript/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","_default","_Controller","_inherits","_createSuper","_classCallCheck","classList","location","querySelector","isObject","obj","_typeof","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","_createClass","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","_len","args","_key","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","k","undefined","events","dom7LiveListeners","proxyListener","dom7Listeners","off","_len2","_key2","handlers","handler","dom7proxy","splice","trigger","_len5","_key5","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","_len6","_key6","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","_ref","targetModal","_ref$triggers","triggers","_ref$onShow","onShow","_ref$onClose","onClose","_ref$openTrigger","openTrigger","_ref$closeTrigger","closeTrigger","_ref$disableScroll","disableScroll","_ref$disableFocus","disableFocus","_ref$awaitCloseAnimat","awaitCloseAnimation","_ref$awaitOpenAnimati","awaitOpenAnimation","_ref$debugMode","debugMode","modal","config","registerTriggers","_toConsumableArray","onKeydown","Boolean","showModal","_this2","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","_this3","currentTarget","newLocation","baseURLTarget","searchZendesk","searchAddress","renderListHeader","renderList","cancelTarget","input","_this4","html_url","_this5","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","_defineProperty","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","_isOpen","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$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","defineProperties","writable","Constructor","protoProps","staticProps","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","ponyfill","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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVoRDtJQVlFLHFCQUFZLE9BQTJDLEVBQUUsTUFBOEI7UUFBM0Usd0JBQUEsRUFBQSxVQUFtQixRQUFRLENBQUMsZUFBZTtRQUFFLHVCQUFBLEVBQUEsc0JBQThCO1FBQ3JGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBWE0saUJBQUssR0FBWixVQUFhLE9BQWlCLEVBQUUsTUFBZTtRQUM3QyxJQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEQsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ25CLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFTSywyQkFBSyxHQUFYOzs7OzRCQUNFLHFCQUFNLFFBQVEsRUFBRSxFQUFBOzt3QkFBaEIsU0FBZ0IsQ0FBQTt3QkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTt3QkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTs7Ozs7S0FDeEI7SUFFRCwwQkFBSSxHQUFKO1FB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","/** @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 global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\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 Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.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":""}