{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/double-dollar/index.js","webpack:///./node_modules/axios/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/responsive-watch/lib/index.js","webpack:///./node_modules/prismic-javascript/dist/prismic-javascript.min.js","webpack:///./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./node_modules/fuzzy/lib/fuzzy.js","webpack:///./node_modules/action-outside/docs/action-outside.min.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.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-polyfill.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///../../src/event_listener.ts","webpack:///../../src/dispatcher.ts","webpack:///../../src/action_descriptor.ts","webpack:///../../src/action.ts","webpack:///../../src/binding.ts","webpack:///../../src/element_observer.ts","webpack:///../../src/attribute_observer.ts","webpack:///../../src/set_operations.ts","webpack:///../../src/multimap.ts","webpack:///../../src/token_list_observer.ts","webpack:///../../src/indexed_multimap.ts","webpack:///../../src/value_list_observer.ts","webpack:///../../src/binding_observer.ts","webpack:///../../src/context.ts","webpack:///../../src/definition.ts","webpack:///../../src/module.ts","webpack:///../../src/data_map.ts","webpack:///../../src/selectors.ts","webpack:///../../src/target_set.ts","webpack:///../../src/scope.ts","webpack:///../../src/scope_observer.ts","webpack:///../../src/router.ts","webpack:///../../src/schema.ts","webpack:///../../src/application.ts","webpack:///../../src/target_properties.ts","webpack:///../../src/controller.ts","webpack:///./assets/src/scripts/modules/BlockClick.js","webpack:///./node_modules/micromodal/dist/micromodal.es.js","webpack:///./assets/src/scripts/modules/Modal.js","webpack:///./assets/src/scripts/config/breakpoints.js","webpack:///./assets/src/scripts/modules/NarrowNav.js","webpack:///./assets/src/scripts/modules/Scroll.js","webpack:///./assets/src/scripts/api/getOrganisations.js","webpack:///./assets/src/scripts/utils/prismic.js","webpack:///./assets/src/scripts/api/getZendeskData.js","webpack:///./assets/src/scripts/api/addressSearch.js","webpack:///./assets/src/scripts/modules/Selector.js","webpack:///./assets/src/scripts/modules/Video.js","webpack:///./assets/src/scripts/utils/pointerEvents.js","webpack:///./assets/src/scripts/modules/WideNav.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./assets/src/scripts/modules/Cookie.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/dom7/node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.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/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/utils/device.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/pagination/pagination.js","webpack:///../src/components/a11y/a11y.js","webpack:///../src/swiper.js","webpack:///./assets/src/scripts/modules/CallbackForm.js","webpack:///./assets/src/scripts/modules/SubmitForm.js","webpack:///./assets/src/scripts/modules/GeneralEnquiryForm.js","webpack:///./node_modules/date-fns/esm/isLeapYear/index.js","webpack:///./assets/src/scripts/modules/DateValid.js","webpack:///./assets/src/scripts/index.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","require","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","length","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","deepMerge","extend","a","b","thisArg","trim","str","replace","selector","context","elements","querySelectorAll","Array","slice","g","this","Function","e","_ref","cb","_ref$sizes","sizes","undefined","_ref$orientations","orientations","_ref$medias","medias","_ref$queries","queries","_ref$check","check","Error","size","index","breakpoint","units","indexOf","unit","previous","current","currentStatus","callback","keys","level1","level2","watchers","matches","comp","sizeName","sizeUtils","sizesHash","status","min","minUnit","max","maxUnit","query","matchMedia","addListener","landscape","portrait","media","matchSizes","reduce","acc","gt","gte","lt","lte","self","default","constructor","then","resolve","reject","u","PREVIEW_COOKIE","EXPERIMENT_COOKIE","data","masterRef","refs","filter","isMasterRef","experiments","Experiments","bookmarks","httpClient","options","tags","types","languages","form","forms","SearchForm","everything","master","ref","label","currentExperiment","f","set","req","headers","cookie","parse","h","refFromCookie","submit","queryFirst","page","pageSize","results","catch","getByID","lang","at","getByIDs","in","getByUID","getSingle","getBookmark","Promise","previewSession","request","mainDocument","url","accessToken","apiDataTTL","requestHandler","apiCache","proxyAgent","cachedRequest","ttl","id","api","fields","fetch","console","warn","fetchLinks","graphQuery","after","orderings","toSearchForm","LazySearchForm","multiple","concat","join","action","encodeURIComponent","Variation","variations","map","googleId","Experiment","drafts","running","split","parseInt","j","Date","getTime","S","near","C","before","between","dayOfMonth","dayOfMonthAfter","dayOfMonthBefore","dayOfWeek","dayOfWeekAfter","dayOfWeekBefore","month","monthBefore","monthAfter","year","hour","hourBefore","hourAfter","F","inRange","not","missing","has","any","fulltext","similar","date","dateBefore","dateAfter","dateBetween","number","geopoint","setTimeout","TypeError","_state","_handled","_value","_deferreds","_immediateFn","onFulfilled","onRejected","promise","push","apply","_unhandledRejectionFn","finally","all","race","setImmediate","Accept","agent","text","json","exec","DefaultRequestHandler","limit","_keymap","MakeLRUCache","put","tail","newer","older","head","shift","log","find","remove","removeAll","String","lru","isExpired","expiredIn","now","clear","DefaultApiCache","cache","cacheKey","decodeURIComponent","decode","substr","getApi","DefaultClient","experimentCookie","previewCookie","Predicates","Api","client","clearTimeout","run","fun","array","y","nextTick","title","browser","env","argv","version","versions","on","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","getPrototypeOf","process","postMessage","importScripts","onmessage","Math","random","source","addEventListener","attachEvent","MessageChannel","port1","port2","createElement","documentElement","onreadystatechange","removeChild","appendChild","args","clearImmediate","global","_id","_clearFn","setInterval","clearInterval","close","unref","enroll","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","__self__","root","DOMException","support","Blob","viewClasses","normalizeName","test","toLowerCase","normalizeValue","iteratorFor","items","iterator","next","done","Headers","append","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","error","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","DataView","_bodyArrayBuffer","type","rejected","arrayBuffer","readAsText","chars","fromCharCode","readArrayBufferAsText","formData","JSON","oldValue","values","entries","methods","Request","input","method","upcased","credentials","signal","toUpperCase","referrer","bytes","Response","bodyInit","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","location","err","message","stack","init","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","readyState","removeEventListener","send","polyfill","fuzzy","simpleFilter","pattern","match","opts","ch","patternIdx","len","totalScore","currScore","pre","post","compareString","caseSensitive","idx","Infinity","rendered","score","arr","prev","element","extract","string","original","sort","compare","_typeof","_createClass","defineProperties","target","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","Node","contains","node","parentNode","ActionOutside","instance","_classCallCheck","evaluateAction","boolean","clickedElement","currentElement","define","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","noop","dir","utils","encode","params","paramsSerializer","serializedParams","v","toISOString","stringify","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","common","settle","buildURL","parseHeaders","isURLSameOrigin","createError","config","requestData","requestHeaders","auth","username","password","Authorization","btoa","responseHeaders","cookies","xsrfValue","read","onDownloadProgress","onUploadProgress","upload","cancelToken","cancel","enhanceError","code","config1","config2","prop","Cancel","svg4everybody","embed","parent","svg","fragment","createDocumentFragment","viewBox","hasAttribute","getAttribute","setAttribute","cloneNode","childNodes","firstChild","loadreadystatechange","cachedDocument","_cachedDocument","implementation","createHTMLDocument","innerHTML","_cachedTarget","_embeds","splice","item","getElementById","getSVGAncestor","nodeName","rawopts","inIframe","top","userAgent","requests","requestAnimationFrame","uses","getElementsByTagName","numberOfSvgUseElementsToBypass","oninterval","use","src","attributeName","validate","srcSplit","factory","ctx","_","getElementsByClassName","HTMLElement","nodeType","pageXOffset","scrollLeft","pageYOffset","scrollTop","w","innerWidth","clientWidth","innerHeight","clientHeight","getBoundingClientRect","left","clientLeft","clientTop","width","offsetWidth","height","offsetHeight","performance","hrtime","uptime","I","cancelled","round","handle","cancelAnimationFrame","x","bottom","A","Base","lastXY","watching","viewport","loopBound","loop","runLoop","setListeners","rafId","X","isInViewport","isFullyInViewport","isAboveViewport","isBelowViewport","isPartialOut","isFullyOut","handleItems","getScrollData","recalculate","fireEvents","wasInViewport","wasFullyOut","emitter","wasPartialOut","wasFullyInViewport","scrollX","scrollY","scrollingDown","scrollingUp","stopLoop","dimensions","offset","counter","Internal","__proto__","watch","wasAboveViewport","wasBelowViewport","update","windowAtBottom","scrollHeight","windowAtTop","isDataView","webpackPolyfill","deprecate","paths","children","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","promises","spread","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","unshift","fulfilled","getUri","handlers","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","reason","fns","normalizedName","isAxiosError","toJSON","description","fileName","lineNumber","columnNumber","ignoreDuplicateOf","parsed","originURL","msie","urlParsingNode","resolveURL","href","protocol","host","search","hash","hostname","port","pathname","charAt","requestURL","write","expires","path","domain","secure","toGMTString","RegExp","relativeURL","executor","resolvePromise","token","ancestors","initialize","classList","add","querySelector","Controller","MicroModal","FOCUSABLE_ELEMENTS","Modal","targetModal","triggers","onShow","onClose","openTrigger","closeTrigger","disableScroll","disableFocus","awaitCloseAnimation","awaitOpenAnimation","debugMode","modal","registerTriggers","onClick","onKeydown","Boolean","trigger","event","showModal","activeElement","scrollBehaviour","addEventListeners","handler","setFocusToFirstNode","closeModal","removeEventListeners","focus","closeModalById","toggle","assign","style","overflow","preventDefault","keyCode","maintainFocus","getFocusableNodes","nodes","focusableNodes","focusedItemIndex","shiftKey","activeModal","validateModalPresence","validateArgs","triggerMap","validateTriggerPresence","triggerAttr","attributes","generateTriggerMap","show","targetID","targetElement","handleRender","Event","dispatchEvent","handleShow","content","connect","responsiveWatch","breakpoints","hideSubSection","NarrowNavRootTarget","BurgerBtnTarget","showSubSection","subSection","nextElementSibling","subSectionHeight","ContainerTarget","SubSectionTargets","handleToggleNavigation","targetSelector","scroll","ScrollWatcher","sticky","offsetTop","setMainId","getOrganisations","Prismic","CM_CONFIG","apis","prismic","endpoint","API_PATH","zendesk","authToken","autoaddress","API_KEY","clearInput","uid","renderListHeader","list","filtered","entry","resultsListTarget","handleKeydownNavigation","selectItem","textContent","handleCancel","$$","actionOutsideMenu","handleHide","listen","renderList","handleKeyup","searchZendesk","searchAddress","cancelTarget","res","html_url","displayName","handleFocus","handleBlur","datawrapperTarget","resultsTarget","SelectorOpen","unregisterKeyNavigation","keyDownHandler","updateInputValue","choiceBtnTarget","display","inputTarget","hasChoiceTarget","choiceTarget","sendAddressData","evt","flyoutElement","renderUI","onPlay","loadAPI","tag","onYouTubeIframeAPIReadyCallbacks","onYouTubeIframeAPIReady","mediaBtn","uiPath","playerEl","imgElSrc","backgroundImage","createPlayer","player","YT","Player","videoId","playerVars","autohide","autoplay","color","controls","cc_load_policy","disablekb","enablejsapi","end","fs","iv_load_policy","modestbranding","origin","playsinline","rel","showinfo","start","theme","wmode","hl","events","onReady","onStateChange","pauseVideo","stopVideo","state","PlayerState","PLAYING","PAUSED","ENDED","waitingForApi","destroy","PointerEvent","enter","leave","over","ButtonWideTargets","stopPropagation","PointerEvents","pointerType","showDropdown","hideDropdown","DrpdwnContainerTarget","selectorHideDropdownTimeout","DrpdwnRootTarget","drpdwnRootHandler","activeItemId","activeNavButtonElement","DrpdwnSectionTargets","activeDropdownRect","centrePosition","offsetLeft","targetContainer","targetContainerRect","disableTransitionTimeout","enableTransitionTimeout","xPos","xPosCorrected","transform","DrpdwnBgTarget","toggleDropdown","toInteger","dirtyNumber","NaN","Number","isNaN","ceil","floor","toDate","argument","argStr","checkCookie","setCookie","dirtyDate","dirtyAmount","amount","setDate","getDate","addDays","toUTCString","getCookie","accepted","pairs","pair","unescape","doc","ssrDocument","blur","createEvent","initEvent","createElementNS","importNode","win","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","Dom7","$","els","tempParent","html","toCreate","unique","uniqueArray","Class","Methods","addClass","className","classes","removeClass","hasClass","toggleClass","attr","attrs","attrName","removeAttr","removeAttribute","el","dom7ElementDataStorage","dataKey","elStyle","webkitTransform","duration","webkitTransitionDuration","transitionDuration","eventType","listener","capture","handleLiveEvent","eventData","dom7EventData","is","parents","k","handleEvent","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","detail","bubbles","cancelable","dataIndex","dom","fireCallBack","outerWidth","includeMargins","styles","parseFloat","outerHeight","box","css","each","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","newChild","tempDiv","prepend","insertBefore","nextAll","nextEls","previousElementSibling","prevAll","prevEls","closest","foundElements","found","matchedItems","toAdd","methodName","Utils","delay","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","param","urlToParse","paramsPart","to","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","touch","Modernizr","maxTouchPoints","DocumentTouch","pointerEvents","observer","passiveListener","supportsPassive","gestures","SwiperClass","eventsListeners","eventName","priority","onceHandler","f7proxy","eventHandler","instanceParams","moduleName","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","components","proto","static","install","installModule","updateSize","swiper","$el","isHorizontal","isVertical","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","slidesPerView","slidesPerColumnFill","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","activeIndex","swiperSlideOffset","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","visibleSlides","slideProgress","minTranslate","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getTranslate","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transition","transitionStart","direction","autoHeight","transitionEnd","slideTo","initialSlide","allowSlideNext","allowSlidePrev","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","normalizedTranslate","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","diff","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","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","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","setBreakpoint","paused","preventClicks","preventClicksPropagation","stopImmediatePropagation","dummyEventAttached","dummyEventListener","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","manipulation","attachEvents","touchEvents","onTouchStart","onTouchMove","onTouchEnd","onScroll","move","passive","onResize","detachEvents","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","startsWith","minRatio","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","checkForComplete","image","complete","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","super","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","deleteProps","newDefaults","isEdge","isSafari","isUiWebView","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","ObserverFunc","mutations","observerUpdate","observe","childList","characterData","observers","observeParents","containerParents","attach","observeSlideChildren","disconnect","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","mouseEntered","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","ignoreWheelEvents","sensitivity","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","raw","animateSlider","releaseScroll","returnValue","handleMouseEnter","handleMouseLeave","Pagination","pagination","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","lockClass","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","hideOnClick","render","a11y","makeElFocusable","addElRole","role","addElLabel","disableEl","enableEl","$nextEl","notify","lastSlideMessage","nextSlideMessage","$prevEl","firstSlideMessage","prevSlideMessage","click","notification","liveRegion","bulletEl","$bulletEl","paginationBulletMessage","onEnterKey","notificationClass","updateNavigation","updatePagination","Device","Support","Browser","Resize","swagger","Swiper","A11y","FormContainer","ProblemPhaseTarget","reset","SuccessFormTarget","mySwiper","showForm","generalEnquiryFormContainerClassList","callbackFormClassList","scrollIntoView","block","inline","FormContentContainerTarget","hideForm","FormElements","errorMessageClasses","from","oninput","onchange","SchedulePhaseTarget","DetailsPhaseTarget","SubmitProblemForm","currentTarget","SubmitScheduleForm","SubmitDetailsForm","ButtonTarget","callbackFormContainer","CallbackFormData","toJSONString","MessageTarget","innerText","VerificationToken","contactRequest","Result","SuccessHeader1","SuccessHeader2","SuccessHeader3","SuccessCTA","dataLayer","virtualPageURL","VirtualPageURL","virtualPageTitle","VirtualPageTitle","callbackFormDivision","checked","selectChange","hideSelectContent","productValue","targets","selectAll","select_all","checkboxes","Submit","parentElement","FirstName","LastName","RequestType","includes","callbackFormContainerClassList","isLeapYear","getFullYear","dateElement","submitButton","validateDate","combinedDate","dateofbirth","checkValidity","valid","ready","application","Application","register","WideNav","NarrowNav","Selector","Video","BlockClick","Scroll","Cookie","CallbackForm","SubmitForm","GeneralEnquiryForm","DateValid"],"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 = 154);\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\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","module.exports = require('./lib/axios');","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","'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'];","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"cross-fetch/polyfill\")):\"function\"==typeof define&&define.amd?define(\"PrismicJS\",[\"cross-fetch/polyfill\"],e):\"object\"==typeof exports?exports.PrismicJS=e(require(\"cross-fetch/polyfill\")):t.PrismicJS=e(t[\"cross-fetch/polyfill\"])}(\"undefined\"!=typeof self?self:this,function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=19)}([function(t,e,n){\"use strict\";e.a=function(t){var e=this.constructor;return this.then(function(n){return e.resolve(t()).then(function(){return n})},function(n){return e.resolve(t()).then(function(){return e.reject(n)})})}},function(t,e,n){\"use strict\";e.__esModule=!0;var r=n(4),o=n(3),i=n(5),u=n(11);e.PREVIEW_COOKIE=\"io.prismic.preview\",e.EXPERIMENT_COOKIE=\"io.prismic.experiment\";var a=function(){function t(t,e,n){this.data=t,this.masterRef=t.refs.filter(function(t){return t.isMasterRef})[0],this.experiments=new r.Experiments(t.experiments),this.bookmarks=t.bookmarks,this.httpClient=e,this.options=n,this.refs=t.refs,this.tags=t.tags,this.types=t.types,this.languages=t.languages}return t.prototype.form=function(t){var e=this.data.forms[t];return e?new o.SearchForm(e,this.httpClient):null},t.prototype.everything=function(){var t=this.form(\"everything\");if(!t)throw new Error(\"Missing everything form\");return t},t.prototype.master=function(){return this.masterRef.ref},t.prototype.ref=function(t){var e=this.data.refs.filter(function(e){return e.label===t})[0];return e?e.ref:null},t.prototype.currentExperiment=function(){return this.experiments.current()},t.prototype.query=function(t,n,r){void 0===r&&(r=function(){});var o=\"function\"==typeof n?{options:{},callback:n}:{options:n||{},callback:r},i=o.options,a=o.callback,s=this.everything();for(var f in i)s=s.set(f,i[f]);if(!i.ref){var c=\"\";this.options.req?c=this.options.req.headers.cookie||\"\":\"undefined\"!=typeof window&&window.document&&(c=window.document.cookie||\"\");var l=u.default.parse(c),h=l[e.PREVIEW_COOKIE],p=this.experiments.refFromCookie(l[e.EXPERIMENT_COOKIE]);s=s.ref(h||p||this.masterRef.ref)}return t&&s.query(t),s.submit(a)},t.prototype.queryFirst=function(t,e,n){var r=\"function\"==typeof e?{options:{},callback:e}:{options:e||{},callback:n||function(){}},o=r.options,i=r.callback;return o.page=1,o.pageSize=1,this.query(t,o).then(function(t){var e=t&&t.results&&t.results[0];return i(null,e),e}).catch(function(t){throw i(t),t})},t.prototype.getByID=function(t,e,n){var r=e||{};return r.lang||(r.lang=\"*\"),this.queryFirst(i.default.at(\"document.id\",t),r,n)},t.prototype.getByIDs=function(t,e,n){var r=e||{};return r.lang||(r.lang=\"*\"),this.query(i.default.in(\"document.id\",t),r,n)},t.prototype.getByUID=function(t,e,n,r){var o=n||{};if(\"*\"===o.lang)throw new Error(\"FORDIDDEN. You can't use getByUID with *, use the predicates instead.\");return o.page||(o.page=1),this.queryFirst(i.default.at(\"my.\"+t+\".uid\",e),o,r)},t.prototype.getSingle=function(t,e,n){var r=e||{};return this.queryFirst(i.default.at(\"document.type\",t),r,n)},t.prototype.getBookmark=function(t,e,n){var r=this.data.bookmarks[t];return r?this.getByID(r,e,n):Promise.reject(\"Error retrieving bookmarked id\")},t.prototype.previewSession=function(t,e,n,r){var o=this;return new Promise(function(i,u){o.httpClient.request(t,function(a,s){if(a)r&&r(a),u(a);else if(s){if(s.mainDocument)return o.getByID(s.mainDocument,{ref:t}).then(function(t){if(t){var o=e(t);r&&r(null,o),i(o)}else r&&r(null,n),i(n)}).catch(u);r&&r(null,n),i(n)}})})},t}();e.default=a},function(t,e,n){\"use strict\";e.__esModule=!0;var r=n(1),o=n(10),i=function(){function t(t,e){if(this.options=e||{},this.url=t,this.options.accessToken){var n=\"access_token=\"+this.options.accessToken;this.url+=(t.indexOf(\"?\")>-1?\"&\":\"?\")+n}this.apiDataTTL=this.options.apiDataTTL||5,this.httpClient=new o.default(this.options.requestHandler,this.options.apiCache,this.options.proxyAgent)}return t.prototype.get=function(t){var e=this;return this.httpClient.cachedRequest(this.url,{ttl:this.apiDataTTL}).then(function(n){var o=new r.default(n,e.httpClient,e.options);return t&&t(null,o),o}).catch(function(e){throw t&&t(e),e})},t}();e.default=i},function(t,e,n){\"use strict\";e.__esModule=!0;var r=function(){function t(t,e){this.id=t,this.api=e,this.fields={}}return t.prototype.set=function(t,e){return this.fields[t]=e,this},t.prototype.ref=function(t){return this.set(\"ref\",t)},t.prototype.query=function(t){return this.set(\"q\",t)},t.prototype.pageSize=function(t){return this.set(\"pageSize\",t)},t.prototype.fetch=function(t){return console.warn(\"Warning: Using Fetch is deprecated. Use the property `graphQuery` instead.\"),this.set(\"fetch\",t)},t.prototype.fetchLinks=function(t){return console.warn(\"Warning: Using FetchLinks is deprecated. Use the property `graphQuery` instead.\"),this.set(\"fetchLinks\",t)},t.prototype.graphQuery=function(t){return this.set(\"graphQuery\",t)},t.prototype.lang=function(t){return this.set(\"lang\",t)},t.prototype.page=function(t){return this.set(\"page\",t)},t.prototype.after=function(t){return this.set(\"after\",t)},t.prototype.orderings=function(t){return this.set(\"orderings\",t)},t.prototype.url=function(){var e=this;return this.api.get().then(function(n){return t.toSearchForm(e,n).url()})},t.prototype.submit=function(e){var n=this;return this.api.get().then(function(r){return t.toSearchForm(n,r).submit(e)})},t.toSearchForm=function(t,e){var n=e.form(t.id);if(n)return Object.keys(t.fields).reduce(function(e,n){var r=t.fields[n];return\"q\"===n?e.query(r):\"pageSize\"===n?e.pageSize(r):\"fetch\"===n?e.fetch(r):\"fetchLinks\"===n?e.fetchLinks(r):\"graphQuery\"===n?e.graphQuery(r):\"lang\"===n?e.lang(r):\"page\"===n?e.page(r):\"after\"===n?e.after(r):\"orderings\"===n?e.orderings(r):e.set(n,r)},n);throw new Error(\"Unable to access to form \"+t.id)},t}();e.LazySearchForm=r;var o=function(){function t(t,e){for(var n in this.httpClient=e,this.form=t,this.data={},t.fields)t.fields[n].default&&(this.data[n]=[t.fields[n].default])}return t.prototype.set=function(t,e){var n=this.form.fields[t];if(!n)throw new Error(\"Unknown field \"+t);var r=\"\"===e||void 0===e?null:e,o=this.data[t]||[];return o=n.multiple?r?o.concat([r]):o:r?[r]:o,this.data[t]=o,this},t.prototype.ref=function(t){return this.set(\"ref\",t)},t.prototype.query=function(t){if(\"string\"==typeof t)return this.query([t]);if(Array.isArray(t))return this.set(\"q\",\"[\"+t.join(\"\")+\"]\");throw new Error(\"Invalid query : \"+t)},t.prototype.pageSize=function(t){return this.set(\"pageSize\",t)},t.prototype.fetch=function(t){console.warn(\"Warning: Using Fetch is deprecated. Use the property `graphQuery` instead.\");var e=Array.isArray(t)?t.join(\",\"):t;return this.set(\"fetch\",e)},t.prototype.fetchLinks=function(t){console.warn(\"Warning: Using FetchLinks is deprecated. Use the property `graphQuery` instead.\");var e=Array.isArray(t)?t.join(\",\"):t;return this.set(\"fetchLinks\",e)},t.prototype.graphQuery=function(t){return this.set(\"graphQuery\",t)},t.prototype.lang=function(t){return this.set(\"lang\",t)},t.prototype.page=function(t){return this.set(\"page\",t)},t.prototype.after=function(t){return this.set(\"after\",t)},t.prototype.orderings=function(t){return t?this.set(\"orderings\",\"[\"+t.join(\",\")+\"]\"):this},t.prototype.url=function(){var t=this.form.action;if(this.data){var e=t.indexOf(\"?\")>-1?\"&\":\"?\";for(var n in this.data)if(this.data.hasOwnProperty(n)){var r=this.data[n];if(r)for(var o=0;o0?this.running[0]:null},t.prototype.refFromCookie=function(t){if(!t||\"\"===t.trim())return null;var e=t.trim().split(\" \");if(e.length<2)return null;var n=e[0],r=parseInt(e[1],10),o=this.running.filter(function(t){return t.googleId()===n&&t.variations.length>r})[0];return o?o.variations[r].ref():null},t}();e.Experiments=i},function(t,e,n){\"use strict\";e.__esModule=!0;var r=\"at\",o=\"not\",i=\"missing\",u=\"has\",a=\"any\",s=\"in\",f=\"fulltext\",c=\"similar\",l=\"number.gt\",h=\"number.lt\",p=\"number.inRange\",d=\"date.before\",y=\"date.after\",m=\"date.between\",g=\"date.day-of-month\",v=\"date.day-of-month-after\",w=\"date.day-of-month-before\",b=\"date.day-of-week\",_=\"date.day-of-week-after\",k=\"date.day-of-week-before\",T=\"date.month\",I=\"date.month-before\",E=\"date.month-after\",O=\"date.year\",A=\"date.hour\",x=\"date.hour-before\",M=\"date.hour-after\",q=\"geopoint.near\";function j(t){if(\"string\"==typeof t)return'\"'+t+'\"';if(\"number\"==typeof t)return t.toString();if(t instanceof Date)return t.getTime().toString();if(Array.isArray(t))return\"[\"+t.map(function(t){return j(t)}).join(\",\")+\"]\";throw new Error(\"Unable to encode \"+t+\" of type \"+typeof t)}var S={near:function(t,e,n,r){return\"[\"+q+\"(\"+t+\", \"+e+\", \"+n+\", \"+r+\")]\"}},C={before:function(t,e){return\"[\"+d+\"(\"+t+\", \"+j(e)+\")]\"},after:function(t,e){return\"[\"+y+\"(\"+t+\", \"+j(e)+\")]\"},between:function(t,e,n){return\"[\"+m+\"(\"+t+\", \"+j(e)+\", \"+j(n)+\")]\"},dayOfMonth:function(t,e){return\"[\"+g+\"(\"+t+\", \"+e+\")]\"},dayOfMonthAfter:function(t,e){return\"[\"+v+\"(\"+t+\", \"+e+\")]\"},dayOfMonthBefore:function(t,e){return\"[\"+w+\"(\"+t+\", \"+e+\")]\"},dayOfWeek:function(t,e){return\"[\"+b+\"(\"+t+\", \"+j(e)+\")]\"},dayOfWeekAfter:function(t,e){return\"[\"+_+\"(\"+t+\", \"+j(e)+\")]\"},dayOfWeekBefore:function(t,e){return\"[\"+k+\"(\"+t+\", \"+j(e)+\")]\"},month:function(t,e){return\"[\"+T+\"(\"+t+\", \"+j(e)+\")]\"},monthBefore:function(t,e){return\"[\"+I+\"(\"+t+\", \"+j(e)+\")]\"},monthAfter:function(t,e){return\"[\"+E+\"(\"+t+\", \"+j(e)+\")]\"},year:function(t,e){return\"[\"+O+\"(\"+t+\", \"+e+\")]\"},hour:function(t,e){return\"[\"+A+\"(\"+t+\", \"+e+\")]\"},hourBefore:function(t,e){return\"[\"+x+\"(\"+t+\", \"+e+\")]\"},hourAfter:function(t,e){return\"[\"+M+\"(\"+t+\", \"+e+\")]\"}},F={gt:function(t,e){return\"[\"+l+\"(\"+t+\", \"+e+\")]\"},lt:function(t,e){return\"[\"+h+\"(\"+t+\", \"+e+\")]\"},inRange:function(t,e,n){return\"[\"+p+\"(\"+t+\", \"+e+\", \"+n+\")]\"}};e.default={at:function(t,e){return\"[\"+r+\"(\"+t+\", \"+j(e)+\")]\"},not:function(t,e){return\"[\"+o+\"(\"+t+\", \"+j(e)+\")]\"},missing:function(t){return\"[\"+i+\"(\"+t+\")]\"},has:function(t){return\"[\"+u+\"(\"+t+\")]\"},any:function(t,e){return\"[\"+a+\"(\"+t+\", \"+j(e)+\")]\"},in:function(t,e){return\"[\"+s+\"(\"+t+\", \"+j(e)+\")]\"},fulltext:function(t,e){return\"[\"+f+\"(\"+t+\", \"+j(e)+\")]\"},similar:function(t,e){return\"[\"+c+'(\"'+t+'\", '+e+\")]\"},date:C,dateBefore:C.before,dateAfter:C.after,dateBetween:C.between,dayOfMonth:C.dayOfMonth,dayOfMonthAfter:C.dayOfMonthAfter,dayOfMonthBefore:C.dayOfMonthBefore,dayOfWeek:C.dayOfWeek,dayOfWeekAfter:C.dayOfWeekAfter,dayOfWeekBefore:C.dayOfWeekBefore,month:C.month,monthBefore:C.monthBefore,monthAfter:C.monthAfter,year:C.year,hour:C.hour,hourBefore:C.hourBefore,hourAfter:C.hourAfter,number:F,gt:F.gt,lt:F.lt,inRange:F.inRange,near:S.near,geopoint:S}},function(t,e,n){\"use strict\";(function(t){var r=n(0),o=setTimeout;function i(){}function u(t){if(!(this instanceof u))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof t)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],l(t,this)}function a(t,e){for(;3===t._state;)t=t._value;0!==t._state?(t._handled=!0,u._immediateFn(function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null!==n){var r;try{r=n(t._value)}catch(t){return void f(e.promise,t)}s(e.promise,r)}else(1===t._state?s:f)(e.promise,t._value)})):t._deferreds.push(e)}function s(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var n=e.then;if(e instanceof u)return t._state=3,t._value=e,void c(t);if(\"function\"==typeof n)return void l(function(t,e){return function(){t.apply(e,arguments)}}(n,e),t)}t._state=1,t._value=e,c(t)}catch(e){f(t,e)}}function f(t,e){t._state=2,t._value=e,c(t)}function c(t){2===t._state&&0===t._deferreds.length&&u._immediateFn(function(){t._handled||u._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e1)for(var n=1;n=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(16),e.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||\"undefined\"!=typeof global&&global.setImmediate||this&&this.setImmediate,e.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||\"undefined\"!=typeof global&&global.clearImmediate||this&&this.clearImmediate},function(t,e,n){\"use strict\";n.r(e);var r=n(6),o=n(0),i=function(){if(\"undefined\"!=typeof self)return self;if(\"undefined\"!=typeof window)return window;if(\"undefined\"!=typeof global)return global;throw new Error(\"unable to locate global object\")}();i.Promise?i.Promise.prototype.finally||(i.Promise.prototype.finally=o.a):i.Promise=r.a},function(t,e,n){n(18),n(14),t.exports=n(13)}])});","var __self__ = (function (root) {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = root.DOMException\n}\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\nvar irrelevant = (function (exports) {\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n}({}));\n})(__self__);\ndelete __self__.fetch.polyfill\nexports = __self__.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = __self__.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = __self__.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = __self__.Headers\nexports.Request = __self__.Request\nexports.Response = __self__.Response\nmodule.exports = exports\n","/*\n * 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 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","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","module.exports = function (callback) {\r\n\r\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\r\n\t\t// Already ready or interactive, execute callback\r\n\t\tcallback.call();\r\n\t}\r\n\telse if (document.attachEvent) {\r\n\t\t// Old browsers\r\n\t\tdocument.attachEvent('onreadystatechange', function () {\r\n\t\t\tif (document.readyState === 'interactive')\r\n\t\t\t\tcallback.call();\r\n\t\t});\r\n\t}\r\n\telse if (document.addEventListener) {\r\n\t\t// Modern browsers\r\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\r\n\t}\r\n}\r\n","!function(root, factory) {\n \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function() {\n return root.svg4everybody = factory();\n }) : \"object\" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n function embed(parent, svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute(\"viewBox\", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n // append the fragment into the svg\n parent.appendChild(fragment);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.parent, item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live 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.1.0\n * A lightweight, blazing fast, rAF based, scroll watcher.\n * https://github.com/jonataswalker/scroll-watcher\n * Built: Mon Apr 09 2018 09:57:25 GMT-0300 (-03)\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.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 this.lastXY=t,{scrollX:t[0],scrollY:t[1],scrollingDown:e,scrollingUp:!e}},A.prototype.stopLoop=function(){b.cancel(this.rafId)},A.prototype.runLoop=function(){this.rafId=b(this.loopBound)},A.prototype.recalculate=function(t){const 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=ei,t.isInViewport=e<=i&&n>o,t.isFullyInViewport=e>=o&&n<=i||t.isAboveViewport&&t.isBelowViewport,t.isFullyOut=!t.isInViewport&&t.wasInViewport,t.isPartialOut=t.wasFullyInViewport&&!t.isFullyInViewport&&!t.isFullyOut},A.prototype.setListeners=function(){const t=this;document.addEventListener(\"readystatechange\",function e(n){if(\"undefined\"!=typeof document)switch(document.readyState){case\"loading\":case\"interactive\":break;case\"complete\":t.Base.emit(V,{scrollX:t.lastXY[0],scrollY:t.lastXY[1]}),document.removeEventListener(\"readystatechange\",e)}},!1),window.addEventListener(\"resize\",function(e){t.viewport=l()},!1)},function(t){function e(){if(!(this instanceof e))return new e;t.call(this),this.counter=0,e.Internal=new A(this)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.watch=function(o,s){let l;n(\"string\"==typeof o||r(o),\"@param `element` should be string type or DOM Element!\"),n(\"number\"==typeof s||\"object\"==typeof s||void 0===s,\"@param `opt_offset` should be number or Object or undefined!\");const u=++this.counter,c=new t,p=i(o);var f;return n(r(p),\"Couldn't evaluate (\"+o+\") to a valid DOM node\"),l=\"number\"==typeof s?{top:s,bottom:s}:function(t,e){let n={};for(let e in t)n[e]=t[e];for(let t in e)n[t]=e[t];return n}(x,s),e.Internal.watching[u]={node:p,emitter:c,offset:l,dimensions:a(p)},(f=e.Internal.watching[u]).isInViewport=!1,f.wasInViewport=!1,f.isAboveViewport=!1,f.wasAboveViewport=!1,f.isBelowViewport=!1,f.wasBelowViewport=!1,f.isPartialOut=!1,f.wasPartialOut=!1,f.isFullyOut=!1,f.wasFullyOut=!1,f.isFullyInViewport=!1,f.wasFullyInViewport=!1,{target:p,props:X(e.Internal.watching[u]),update:function(){const t=e.Internal.watching[u],n=e.Internal.getScrollData();return n.target=t.node,e.Internal.stopLoop(),function(t){t.isInViewport=!1,t.isAboveViewport=!1,t.isBelowViewport=!1,t.isPartialOut=!1,t.isFullyOut=!1,t.isFullyInViewport=!1}(t),t.dimensions=a(p),e.Internal.recalculate(t),this.props=X(t),e.Internal.fireEvents(t,n),e.Internal.runLoop(),this},once:function(t,e){return c.once(t,e,this),this},on:function(t,e){return c.on(t,e,this),this},off:function(t,e){return c.off(t,e,this),this}}},e.prototype.windowAtBottom=function(t){void 0===t&&(t=0);const n=e.Internal.lastXY[1],o=e.Internal.viewport.h;return t=parseInt(t,10),n+o>=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight)-t},e.prototype.windowAtTop=function(t){return void 0===t&&(t=0),e.Internal.lastXY[1]<=(t=parseInt(t,10))},e}(e)});\n","(function(self) {\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (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 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 isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n };\n\n var isArrayBufferView = ArrayBuffer.isView || 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) { items.push(name); });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) { items.push(value); });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) { items.push([name, value]); });\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 throw new Error('unsupported BodyInit type')\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 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 || 'omit';\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.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.trim().split('&').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 self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n var xhr = new XMLHttpRequest();\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.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 xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n };\n self.fetch.polyfill = true;\n})(typeof self !== 'undefined' ? self : this);\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","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\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","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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","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 { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUF5QixNQUFNLGtCQUFrQixDQUFBO0FBRXZFO0lBTUUsZ0JBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksUUFBUSxDQUFBO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsc0JBQUksMkJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwwQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFtQjthQUF2QjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQTtRQUN4QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDJCQUFPO2FBQVg7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0QkFBUTthQUFaO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFDLFFBQVEsRUFBRSxNQUFNLElBQUssT0FBQSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBaEMsQ0FBZ0MsRUFBRSxFQUFlLENBQUMsQ0FBQTtRQUNyRyxDQUFDOzs7T0FBQTtJQUVELHNCQUFLLEdBQUw7UUFDRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLENBQUM7SUFFRCxxQkFBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQsK0JBQWMsR0FBZCxVQUFlLFVBQXNCO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDNUMsSUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFRCxpQ0FBZ0IsR0FBaEIsVUFBaUIsVUFBa0I7UUFDakMsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN2RCxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUM5QjtJQUNILENBQUM7SUFFRCxrREFBaUMsR0FBakMsVUFBa0MsT0FBZ0IsRUFBRSxVQUFrQjtRQUNwRSxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3ZELElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxFQUExQixDQUEwQixDQUFDLENBQUE7U0FDbkU7SUFDSCxDQUFDO0lBRUQseUJBQXlCO0lBRXpCLGNBQWM7SUFDZCw0QkFBVyxHQUFYLFVBQVksS0FBWSxFQUFFLE9BQWUsRUFBRSxNQUFXO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUVELDBCQUEwQjtJQUUxQixjQUFjO0lBQ2QsK0JBQWMsR0FBZCxVQUFlLEtBQVk7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3BELElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELGNBQWM7SUFDZCxrQ0FBaUIsR0FBakIsVUFBa0IsS0FBWTtRQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDdkQsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDN0QsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDeEM7SUFDSCxDQUFDO0lBRUQsVUFBVTtJQUVGLDhCQUFhLEdBQXJCLFVBQXNCLE1BQWM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZELElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEVBQXBDLENBQW9DLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRU8saUNBQWdCLEdBQXhCLFVBQXlCLE1BQWM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEQsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDekUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsRUFBdkMsQ0FBdUMsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDSCxhQUFDO0FBQUQsQ0FBQyxBQXJHRCxJQXFHQyJ9","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","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 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\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 fetch from 'cross-fetch'\r\n// import config from '../config'\r\n\r\nexport const API_PATH = (window.CM_CONFIG.apis.zendesk) ? window.CM_CONFIG.apis.zendesk.endpoint : '';\r\nconst authToken = (window.CM_CONFIG.apis.zendesk) ? window.CM_CONFIG.apis.zendesk.authToken : '';\r\n\r\nexport default 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","import fetch from 'cross-fetch'\r\n// import config from '../config'\r\n// ?address=dublin+9&language=EN&key=1D313E57-2F01-380A-CB7C-183988D390BC&limit=-1&geographicAddress=false&vanityMode=false&addressElements=false&addressProfileName=&country=IE&_=1525779831819'\r\n\r\nconst API_PATH = (window.CM_CONFIG.apis.autoaddress) ? window.CM_CONFIG.apis.autoaddress.endpoint : '';\r\nconst API_KEY = (window.CM_CONFIG.apis.autoaddress) ? window.CM_CONFIG.apis.autoaddress.key : '';\r\n\r\nexport default (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","import { Controller } from 'stimulus'\r\nimport { getOrganisations } from '../api/getOrganisations'\r\nimport fuzzy from 'fuzzy'\r\nimport $$ from 'double-dollar'\r\nimport ActionOutside from 'action-outside'\r\nimport getZendeskData from '../api/getZendeskData'\r\nimport addressSearch 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.filter(item => item.data.name.indexOf(' SP') <= -1)\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 getOrganisations.then(response => {\r\n const res = response.filter(item => item.data.name.indexOf(' SP') > -1)\r\n const items = res.map(item => {\r\n return {\r\n name: item.data.name,\r\n href: `/salary-protection/${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\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 //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 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 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 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 console.log('response', 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 = '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\r\n if (this.hasChoiceTarget) {\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","/* 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 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 () => {\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 //console.log(this.element.querySelector('.selector-dataWrapper').classList)\r\n //if (this.element.querySelector('.selector-dataWrapper').classList.contains('is-active') || this.element.querySelector('.selector-choice').classList.contains('is-active')) {\r\n // return false\r\n //}\r\n //else {\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\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","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}","/**\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 */\nexport default function toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\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';\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\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 if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n date.setDate(date.getDate() + amount);\n return date;\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","/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n} : document; // eslint-disable-line\n\nvar win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n} : window; // eslint-disable-line\n\nexport { win as window, doc as document };\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: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\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 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 } 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) {\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) 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.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 >= slidesGrid.length) snapIndex = slidesGrid.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 if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -translate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -translate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -translate;\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 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 } 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 { 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 (UIWebView) 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 === 'mousemove') 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) {\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\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\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.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 } = swiper;\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? -wrapperEl.scrollLeft : -wrapperEl.scrollTop;\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(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 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, with UIWebView).\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',\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.startsWith('@')) {\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';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!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 isUiWebView: /(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) {\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 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 && swiper.$el.find(params.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 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 } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($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 $$ from 'double-dollar'\r\nimport axios from 'axios'\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 },\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 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\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 axios({\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n VerificationToken: $(\"[id=forgeryToken]\").val(),\r\n },\r\n url: `/forms/contactrequest`,\r\n data: { contactRequest: CallbackFormData }\r\n })\r\n .then(response => {\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 = response.data.Result.SuccessHeader1\r\n this.element.querySelector(\r\n '.callbackForm-success .callbackForm-success--copy h3'\r\n ).innerText = response.data.Result.SuccessHeader2\r\n this.element.querySelector(\r\n '.callbackForm-success .callbackForm-success--paragraph p'\r\n ).innerText = response.data.Result.SuccessHeader3\r\n this.element\r\n .querySelector('.callbackForm-success .success-btn')\r\n .setAttribute('href', 'tel:' + response.data.Result.SuccessCTA)\r\n this.element.querySelector(\r\n '.callbackForm-success .btn-inner span'\r\n ).innerText = response.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: response.data.Result.VirtualPageURL,\r\n virtualPageTitle: response.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\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 $$ from 'double-dollar'\r\nimport axios from 'axios'\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']\r\n\r\n initialize() {}\r\n\r\n selectAll(event) {\r\n var select_all = document.getElementById('All')\r\n var checkboxes = document.getElementsByClassName('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 const data = 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 axios({\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n VerificationToken: $(\"[id=forgeryToken]\").val(),\r\n },\r\n url: `/forms/contactrequest`,\r\n data: { contactRequest: CallbackFormData }\r\n })\r\n .then(response => {\r\n this.element.querySelector('.message-box').classList.remove('info')\r\n this.element.querySelector('.message-box').classList.add('success')\r\n this.MessageTarget.innerText = 'Success!'\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.querySelector('.message-box').classList.remove('info')\r\n this.element\r\n .querySelector('.callbackForm-success')\r\n .classList.add('success')\r\n\r\n window.dataLayer.push({\r\n event: 'VirtualPageview',\r\n virtualPageURL: response.data.Result.VirtualPageURL,\r\n virtualPageTitle: response.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 })\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\r\n }\r\n }\r\n if (value !== '' && value !== undefined && value !== null) {\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 axios from 'axios'\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 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 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 toDate from '../toDate/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 if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\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\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]\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 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 this.dateofbirth = month.value + '/' + date.value + '/' + year.value\r\n combinedDate.value = this.dateofbirth\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","/**\r\n * Project Name: Cornmarket - Renewal\r\n * @description The Cornmarket JS file for Renewal\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 Modal from './modules/Modal'\r\nimport NarrowNav from './modules/NarrowNav'\r\nimport Scroll from './modules/Scroll'\r\nimport Selector from './modules/Selector'\r\nimport Video from './modules/Video'\r\nimport WideNav from './modules/WideNav'\r\nimport Cookie from './modules/Cookie'\r\nimport CallbackForm from './modules/CallbackForm'\r\nimport SubmitForm from './modules/SubmitForm'\r\nimport GeneralEnquiryForm from './modules/GeneralEnquiryForm'\r\nimport DateValid from './modules/DateValid'\r\nrequire('../scss/cornmarket.scss')\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('Scroll', Scroll)\r\n application.register('Cookie', Cookie)\r\n application.register('CallbackForm', CallbackForm)\r\n application.register('SubmitForm', SubmitForm)\r\n application.register('GeneralEnquiryForm', GeneralEnquiryForm)\r\n application.register('DateValid', DateValid)\r\n})\r\n"],"sourceRoot":""}