{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/macy/dist/macy.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./assets/js/vendors/animate-on-scroll.js","webpack:///./node_modules/foundation-sites/js/foundation.core.utils.js","webpack:///./node_modules/foundation-sites/js/foundation.util.mediaQuery.js","webpack:///./node_modules/foundation-sites/js/foundation.core.js","webpack:///./node_modules/foundation-sites/js/foundation.core.plugin.js","webpack:///./node_modules/foundation-sites/js/foundation.util.keyboard.js","webpack:///./node_modules/foundation-sites/js/foundation.accordion.js","webpack:///./node_modules/foundation-sites/js/foundation.util.nest.js","webpack:///./node_modules/foundation-sites/js/foundation.accordionMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.util.box.js","webpack:///./node_modules/foundation-sites/js/foundation.positionable.js","webpack:///./node_modules/foundation-sites/js/foundation.util.motion.js","webpack:///./node_modules/foundation-sites/js/foundation.util.triggers.js","webpack:///./node_modules/foundation-sites/js/foundation.util.touch.js","webpack:///./node_modules/foundation-sites/js/foundation.dropdown.js","webpack:///./node_modules/foundation-sites/js/foundation.dropdownMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.util.imageLoader.js","webpack:///./node_modules/foundation-sites/js/foundation.equalizer.js","webpack:///./node_modules/foundation-sites/js/foundation.drilldown.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveToggle.js","webpack:///./node_modules/foundation-sites/js/foundation.reveal.js","webpack:///./node_modules/foundation-sites/js/foundation.slider.js","webpack:///./node_modules/foundation-sites/js/foundation.smoothScroll.js","webpack:///./node_modules/foundation-sites/js/foundation.sticky.js","webpack:///./node_modules/foundation-sites/js/foundation.tabs.js","webpack:///./node_modules/foundation-sites/js/foundation.toggler.js","webpack:///./node_modules/foundation-sites/js/foundation.tooltip.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveAccordionTabs.js","webpack:///./assets/js/vendors/foundation.js","webpack:///./assets/js/vendors/macy.js","webpack:///./assets/js/vendors/object-fit-images.js","webpack:///./node_modules/countup.js/dist/countUp.min.js","webpack:///./assets/js/scripts/count-on-scroll.js","webpack:///./assets/js/scripts/favorites.js","webpack:///./assets/js/scripts/images.js","webpack:///./assets/js/scripts/menu.js","webpack:///./assets/js/scripts/woocommerce.js","webpack:///./assets/js/scripts/wp-admin.js","webpack:///./src/Core/Blocks/Content/common/related_pages/script.js","webpack:///./src/Core/Blocks/Content/common/tag_filter/script.js","webpack:///./src/Core/Blocks/Marginals/header/thin_topbar_menu/script.js","webpack:////srv/www/h/hotelduinzicht.nl/vhosts/www/htdocs/content/themes/duinzicht/assets/js/script.js","webpack:///./node_modules/process/browser.js","webpack:///./assets/js/scripts/cookies.js","webpack:///./node_modules/aos/dist/aos.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./assets/js/scripts/ie11.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./assets/js/scripts/resizes.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./assets/js/vendors/mobile.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./src/Core/Blocks/Content/common/reviews/script.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/shared/dom.js","webpack:///./node_modules/swiper/shared/get-support.js","webpack:///./node_modules/swiper/shared/get-device.js","webpack:///./node_modules/swiper/shared/get-browser.js","webpack:///./node_modules/swiper/shared/utils.js","webpack:///./node_modules/swiper/core/transition/transitionEmit.js","webpack:///./node_modules/swiper/core/events/onTouchStart.js","webpack:///./node_modules/swiper/core/events/onTouchMove.js","webpack:///./node_modules/swiper/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/core/events/onResize.js","webpack:///./node_modules/swiper/core/events/onClick.js","webpack:///./node_modules/swiper/core/events/onScroll.js","webpack:///./node_modules/swiper/core/events/index.js","webpack:///./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/core/check-overflow/index.js","webpack:///./node_modules/swiper/core/defaults.js","webpack:///./node_modules/swiper/core/moduleExtendParams.js","webpack:///./node_modules/swiper/core/core.js","webpack:///./node_modules/swiper/core/events-emitter.js","webpack:///./node_modules/swiper/core/update/index.js","webpack:///./node_modules/swiper/core/update/updateSize.js","webpack:///./node_modules/swiper/core/update/updateSlides.js","webpack:///./node_modules/swiper/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/core/update/updateProgress.js","webpack:///./node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/core/translate/index.js","webpack:///./node_modules/swiper/core/translate/getTranslate.js","webpack:///./node_modules/swiper/core/translate/setTranslate.js","webpack:///./node_modules/swiper/core/translate/minTranslate.js","webpack:///./node_modules/swiper/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/core/translate/translateTo.js","webpack:///./node_modules/swiper/core/transition/index.js","webpack:///./node_modules/swiper/core/transition/setTransition.js","webpack:///./node_modules/swiper/core/transition/transitionStart.js","webpack:///./node_modules/swiper/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/core/slide/index.js","webpack:///./node_modules/swiper/core/slide/slideTo.js","webpack:///./node_modules/swiper/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/core/slide/slideNext.js","webpack:///./node_modules/swiper/core/slide/slidePrev.js","webpack:///./node_modules/swiper/core/slide/slideReset.js","webpack:///./node_modules/swiper/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/core/loop/index.js","webpack:///./node_modules/swiper/core/loop/loopCreate.js","webpack:///./node_modules/swiper/core/loop/loopFix.js","webpack:///./node_modules/swiper/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/core/grab-cursor/index.js","webpack:///./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/core/breakpoints/index.js","webpack:///./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/core/classes/index.js","webpack:///./node_modules/swiper/core/classes/addClasses.js","webpack:///./node_modules/swiper/core/classes/removeClasses.js","webpack:///./node_modules/swiper/core/images/index.js","webpack:///./node_modules/swiper/core/images/loadImage.js","webpack:///./node_modules/swiper/core/images/preloadImages.js","webpack:///./node_modules/swiper/core/modules/resize/resize.js","webpack:///./node_modules/swiper/core/modules/observer/observer.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///./node_modules/swiper/modules/navigation/navigation.js","webpack:///./node_modules/swiper/shared/classes-to-selector.js","webpack:///./node_modules/swiper/modules/pagination/pagination.js","webpack:///./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/modules/controller/controller.js","webpack:///./node_modules/swiper/modules/autoplay/autoplay.js","webpack:///./node_modules/swiper/modules/thumbs/thumbs.js","webpack:///./node_modules/swiper/shared/effect-init.js","webpack:///./node_modules/swiper/shared/effect-target.js","webpack:///./node_modules/swiper/shared/create-shadow.js","webpack:///./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/Core/Blocks/Content/common/featured_menu_items/script.js","webpack:///./assets/js/vendors/parallax.js","webpack:///./assets/js/vendors/clamp.js","webpack:///./assets/js/scripts/buddypress.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./assets/js/scripts/scroll-to-top.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/what-input/dist/what-input.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./assets/js/scripts/blocks.js","webpack:///./node_modules/axios/index.js","webpack:///./src/Core/Blocks/Content/common/pricing/script.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///external \"jQuery\"","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/axios.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","AxiosError","CanceledError","message","this","ERR_CANCELED","inherits","__CANCEL__","url","test","toString","Array","isArray","arr","e","length","push","arguments","window","Promise","A","recalculate","useContainerForBreakpoints","container","clientWidth","innerWidth","columns","b","margin","x","y","keys","breakAt","mobileFirst","options","responsiveOptions","docWidth","a","parseInt","O","parseFloat","replace","u","rows","v","style","height","M","offsetHeight","isNaN","forEach","position","top","left","cols","dataset","macyComplete","tmpRows","f","lastcol","C","h","nodeName","byCss","selectors","split","RegExp","document","querySelectorAll","getElementsByClassName","substring","getElementsByTagName","getElementById","running","events","add","run","shift","clear","instance","data","on","emit","g","naturalHeight","naturalWidth","width","E","complete","addEventListener","then","constants","EVENT_IMAGE_LOAD","img","catch","EVENT_IMAGE_ERROR","w","all","EVENT_IMAGE_COMPLETE","I","clearTimeout","setTimeout","EVENT_RESIZE","queue","_","debug","console","error","N","resizer","T","useOwnImageLoader","waitForImages","EVENT_INITIALIZED","L","getComputedStyle","getPropertyValue","V","children","from","filter","offsetParent","trueOrder","EVENT_RECALCULATED","R","assign","k","useImageLoader","onInit","cancelLegacy","createElement","querySelector","getAttribute","id","Math","floor","random","apply","removeAttribute","Element","q","init","warn","recalculateOnImageLoad","runOnImageLoad","remove","removeEventListener","reInit","utils","obj","formData","FormData","stack","convertValue","isDate","toISOString","isArrayBuffer","isTypedArray","Blob","Buffer","build","parentKey","isPlainObject","indexOf","Error","isUndefined","fullKey","endsWith","JSON","stringify","toArray","el","append","pop","baseURL","relativeURL","AOS","rtl","$","attr","GetYoDigits","namespace","str","chars","charsLength","transitionend","$elem","end","transitions","elem","transition","triggerHandler","onLoad","handler","didLoad","readyState","eventType","cb","one","ignoreMousedisappear","ignoreLeaveWindow","ignoreReappear","eLeave","rest","callback","relatedTarget","hasFocus","eReenter","currentTarget","has","target","matchMedia","styleMedia","media","info","script","type","parentNode","insertBefore","head","appendChild","currentStyle","matchMedium","text","styleSheet","cssText","textContent","matches","MediaQuery","queries","current","_init","isInitialized","appendTo","namedQueries","extractedStyles","css","styleObject","trim","slice","reduce","ret","param","parts","val","decodeURIComponent","parseStyleToObject","_getCurrentSize","_watcher","_reInit","atLeast","size","query","only","upTo","nextSize","next","is","bpSize","bpModifier","queryIndex","findIndex","_getQueryName","nextQuery","TypeError","matched","newSize","currentSize","trigger","Foundation","version","_plugins","_uuids","plugin","className","functionName","attrName","hyphenate","registerPlugin","pluginName","constructor","toLowerCase","uuid","$element","unregisterPlugin","prop","splice","removeAttr","removeData","plugins","isJQ","each","_this","plgs","foundation","err","reflow","find","addBack","$el","opts","option","opt","map","parseValue","er","getFnName","addToJquery","fn","method","$noJS","removeClass","args","plugClass","ReferenceError","Function","results","exec","util","throttle","func","delay","timer","context","Date","now","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","navigator","userAgent","lastTime","nextTime","max","performance","start","oThis","aArgs","fToBind","fNOP","fBound","concat","Plugin","element","_setup","getPluginName","_destroy","keyCodes","9","13","27","32","35","36","37","38","39","40","commands","findFocusable","sort","aTabIndex","bTabIndex","parseKey","event","which","keyCode","String","fromCharCode","toUpperCase","shiftKey","ctrlKey","altKey","Keyboard","kcs","kc","getKeyCodes","handleKey","component","functions","commandList","zfIsKeyHandled","ltr","Rtl","extend","returnValue","handled","unhandled","register","componentName","cmds","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","preventDefault","focus","releaseFocus","off","Accordion","defaults","_isInitializing","$tabs","idx","$content","linkId","$initActive","_initialAnchor","prev","_openSingleTab","_checkDeepLink","anchor","location","hash","$anchor","$link","parent","hasClass","_closeAllTabs","deepLinkSmudge","offset","animate","scrollTop","deepLinkSmudgeOffset","deepLinkSmudgeDelay","deepLink","_events","$tabContent","toggle","$a","multiExpand","previous","first","last","$target","closest","up","down","updateHistory","history","pushState","replaceState","_openTab","$targetItem","$othersItems","siblings","allowAllClosed","_closeTab","$activeContents","not","targetContentId","addClass","finish","slideDown","slideSpeed","slideUp","$activeTabs","stop","Nest","menu","items","subMenuClass","subItemClass","hasSubClass","applyAria","$item","$sub","firstItem","AccordionMenu","multiOpen","$menuLinks","subId","isActive","parentLink","clone","prependTo","wrap","submenuToggle","after","submenuToggleText","initPanes","$submenu","$prevElement","$nextElement","$elements","min","parents","open","close","closeAll","hideAll","$targetBranch","parentsUntil","$othersActiveSubmenus","$submenus","$allmenus","detach","Box","ImNotTouchingYou","lrOnly","tbOnly","ignoreBottom","OverlapArea","GetDimensions","GetExplicitOffsets","alignment","vOffset","hOffset","isOverflow","topVal","leftVal","$eleDims","$anchorDims","topOver","bottomOver","leftOver","rightOver","eleDims","parDims","windowDims","sqrt","rect","getBoundingClientRect","parRect","winRect","body","winY","pageYOffset","winX","pageXOffset","parentDims","POSITIONS","VERTICAL_ALIGNMENTS","HORIZONTAL_ALIGNMENTS","ALIGNMENTS","nextItem","item","array","currentIdx","Positionable","triedPositions","_getDefaultPosition","_getDefaultAlignment","originalPosition","originalAlignment","_alignmentsExhausted","_realign","_addTriedPosition","isExhausted","$parent","allowOverlap","_getVOffset","_getHOffset","minOverlap","minCoordinates","_positionsExhausted","overlap","allowBottomOverlap","_reposition","initClasses","activeClasses","Motion","animation","isIn","initClass","activeClass","reset","show","offsetWidth","hide","transitionDuration","MutationObserver","prefixes","triggers","Triggers","Listeners","Basic","Global","Initializers","debounceGlobalListener","debounce","listener","openListener","closeListener","toggleListener","closeableListener","stopPropagation","fadeOut","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","addClosemeListener","yetiBoxes","plugNames","listeners","join","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","attributeName","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","__","triggersInitialized","IHearYou","startPosX","startTime","elapsedTime","startEvent","Touch","isMoving","didMoved","onTouchEnd","onTouchMove","tapEvent","Event","spotSwipe","dir","touches","pageX","dx","abs","moveThreshold","timeThreshold","onTouchStart","passive","SpotSwipe","enabled","documentElement","special","swipe","setup","tap","noop","setupSpotSwipe","setupTouchHandler","addTouch","handleTouch","simulatedEvent","changedTouches","touchstart","touchmove","touchend","MouseEvent","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","dispatchEvent","Dropdown","$id","$anchors","_setCurrentAnchor","parentClass","$currentAnchor","match","horizontalPosition","hasTouch","ontouchstart","_setPosition","forceFollow","hover","bodyData","whatinput","timeout","hoverDelay","hoverPane","$body","autoFocus","closeOnClick","_addBodyHandler","DropdownMenu","subs","$menuItems","verticalClass","rightClass","changed","parClass","clickOpen","hasSub","hasClicked","stopImmediatePropagation","_hide","_show","closeOnClickInside","disableHoverOnTouch","disableHover","autoclose","closingTime","isTab","index","nextSibling","prevSibling","openSub","closeSub","_isVertical","_isRtl","_removeBodyHandler","$sibs","oldClass","$parentLi","$toClose","$activeItem","onImagesLoaded","images","unloaded","singleImageLoaded","image","Image","me","src","Equalizer","eqId","$watched","hasNested","isNested","isOn","_bindHandler","onResizeMeBound","_onResizeMe","onPostEqualizedBound","_onPostEqualized","tooSmall","imgs","equalizeOn","_checkMQ","_reflow","_pauseEvents","equalizeOnStack","_isStacked","equalizeByRow","getHeightsByRow","applyHeightByRow","getHeights","applyHeight","heights","len","lastElTopOffset","groups","group","elOffsetTop","j","ln","groupsILength","lenJ","Drilldown","autoApplyClass","$submenuAnchors","$currentMenu","_prepareMenu","_registerEvents","_keyboardEvents","$menu","backButtonPosition","backButton","prepend","_back","autoHeight","$wrapper","wrapper","animateHeight","_getMaxDims","ev","contains","_hideAll","_scrollTop","_resize","$scrollTopElement","scrollTopElement","scrollPos","scrollTopOffset","animationDuration","animationEasing","calcHeight","parentSubMenu","_setHideSubMenuClasses","isLastChild","_setShowSubMenuClasses","blur","maxHeight","result","unwrap","MenuPlugins","dropdown","cssClass","drilldown","accordion","ResponsiveMenu","rules","currentMq","currentPlugin","rulesTree","rule","ruleSize","rulePlugin","isEmptyObject","_checkMediaQueries","matchedMq","destroy","ResponsiveToggle","targetID","$targetMenu","$toggler","input","animationIn","animationOut","_update","_updateMqHandler","toggleMenu","hideFor","Reveal","cached","mq","fullScreen","overlay","$overlay","_makeOverlay","onLoadListener","additionalOverlayClasses","outerWidth","outerHeight","_updatePosition","_handleState","$activeAnchor","activeElement","multipleOpened","_disableScroll","focusableElements","_addGlobalClasses","showDelay","_addGlobalListeners","updateScrollbarClass","toggleClass","closeOnEsc","finishUp","_removeGlobalClasses","_enableScroll","hideDelay","resetOnClose","html","urlWithoutHash","pathname","search","title","Slider","initialized","inputs","handles","$handle","$input","$fill","vertical","disabled","disabledClass","binding","_setInitAttr","doubleSided","$handle2","$input2","setHandles","_setHandlePos","pctOfBar","percent","positionValueFunction","_logTransform","_powTransform","toFixed","base","log","baseLog","nonLinearBase","pow","$hndl","isDbl","h2Val","step","h1Val","vert","hOrW","lOrT","handleDim","elemDim","_pctOfBar","movement","decimal","_setValues","dim","isLeftHndl","handlePct","handlePos","initialStart","duration","anim","prog","move","ts","Move","moveTime","changedDelay","initVal","initialEnd","_adjustValue","direction","eventOffset","pageY","barDim","windowScroll","scrollLeft","elemOffset","barXY","eventFromBar","offsetPct","_value","absPosition","previousVal","div","_eventsForHandle","curHandle","handleChangeEvent","_handleEvent","clickSelect","draggable","newValue","_$handle","oldValue","decrease","increase","decreaseFast","increaseFast","frac","num","clickPos","invertVertical","SmoothScroll","loc","$loc","round","threshold","_linkClickListener","_handleLinkClick","arrival","_inTransition","scrollToLoc","Sticky","$container","wasWrapped","containerClass","stickyClass","scrollCount","checkEvery","isStuck","containerHeight","elemHeight","_parsePoints","_setSizes","scroll","_calc","_removeSticky","topPoint","reverse","pts","topAnchor","btmAnchor","scrollHeight","breaks","pt","place","points","canStick","_eventsHandler","_pauseListeners","checkSizes","bottomPoint","_setSticky","stickTo","mrgn","notStuckTo","isTop","stickToTop","anchorPt","anchorHeight","topOrBottom","bottom","stickyOn","newElemWidth","comp","pdngl","pdngr","dynamicHeight","newContainerHeight","_setBreakPoints","mTop","emCalc","marginTop","mBtm","marginBottom","winHeight","innerHeight","em","fontSize","Tabs","$tabTitles","linkClass","linkActiveClass","matchHeight","$images","_setHeight","anchorNoHash","selectTab","_collapse","_addKeyHandler","_addClickHandler","_setHeightMqHandler","_handleTabChange","wrapOnKeys","historyHandled","activeCollapse","$oldTab","$tabLink","$targetContent","_collapseTab","panelActiveClass","$targetAnchor","$activeTab","idStr","hashIdStr","panelClass","panel","temp","Toggler","$triggers","toggler","$trigger","controls","_updateARIA","undefined","Tooltip","isClick","elemId","tipText","template","_buildTemplate","allowHtml","triggerClass","elementClassName","SVGElement","baseVal","tooltipWidth","tooltipHeight","templateClasses","tooltipClass","showOn","fadeIn","fadeInDuration","fadeOutDuration","isFocus","disableForTouch","touchCloseText","tabs","ResponsiveAccordionTabs","storezfData","currentRule","_getAllOptions","allOptions","dummyPlugin","tmpPlugin","keyKey","objObj","_changedZfMediaQueryHandler","_handleMarkup","toSet","fromString","$panels","tabsTitle","tabsPanel","$liHeads","$liHeadsA","display","visibility","$tabsContent","$placeholder","insertAfter","tempValue","masonryGrids","Macy","640","1024","objectFitImages","__assign","CountUp","endVal","startVal","decimalPlaces","useEasing","useGrouping","smartEasingThreshold","smartEasingAmount","separator","prefix","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","paused","once","count","remaining","frameVal","easingFn","Number","printValue","rAF","update","formatNumber","numerals","easeOutExpo","formattingFn","validateValue","resetDuration","onScrollFns","handleScroll","onscroll","scrollY","determineDirectionAndSmartEasing","pauseResume","tagName","innerHTML","ensureNumber","bubbles","cancelable","composed","registerEventListeners","elements","intersectionObserver","IntersectionObserver","animateModern","root","rootMargin","animateLegacy","elementIsInView","animateElement","countUp","counterDecimal","button","postID","action","themosis","axios","response","addToFavorites","removeFromFavorites","directions","column","containerId","LazyLoad","randomID","submenu","logo","logoMobile","language","overlayItems","li","toggleArrow","submenuTogglesCheckInterval","setInterval","submenuToggles","clearInterval","searchBlockButton","searchFormBlock","galleryThumbs","slidesPerView","freeMode","watchSlidesVisibility","watchSlidesProgress","scrollbar","navigation","nextEl","prevEl","thumbs","swiper","select","wp","gutenbergLoadCheck","anchors","editPost","fields","initialOffset","masonry","slider","textLoadMore","textLoading","textLoadFailed","cards","cardSliders","$hiddenInput","$emptyInput","$smartTag","cache","smart_tag","success","$select","selectedOption","selectedSmartTagLabel","ga","analyticsGTMID","resolve","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","env","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","translationNotice","cname","cvalue","exdays","expires","setCookie","loaded","default","easing","disable","throttleDelay","debounceDelay","disableMutationObserver","atob","mobile","phone","tablet","S","node","isSupported","setAttribute","ready","refresh","refreshHard","leading","maxWait","trailing","cancel","flush","valueOf","iterator","NaN","self","WebKitMutationObserver","MozMutationObserver","addedNodes","removedNodes","aos","vendor","opera","configurable","writable","substr","classList","anchorPlacement","offsetLeft","offsetTop","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","OFI","propRegex","testImg","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","setPlaceholder","placeholder","onImageReady","fixOne","parsed","fontFamily","props","getStyle","ofi","skipTest","srcset","descriptors","set","ss","keepSrcUsable","picturefill","pf","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundPosition","backgroundRepeat","backgroundOrigin","backgroundSize","fix","startAutoMode","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","buildURL","dispatchRequest","mergeConfig","buildFullPath","validator","validators","Axios","instanceConfig","interceptors","request","configOrUrl","config","transitional","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","clarifyTimeoutError","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","reject","getUri","fullPath","params","paramsSerializer","generateHTTPMethod","isForm","headers","flexBasis","isMargin","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","len2","encodeChunk","lookup","Uint8Array","code","output","thisArg","encode","encodeURIComponent","serializedParams","isURLSearchParams","isObject","hashmarkIndex","scrollbox","scrollBarWidth","setScrollbarSize","epve","getEditorWidth","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","href","protocol","host","hostname","port","charAt","requestURL","isString","containers","validateStatus","status","ERR_BAD_REQUEST","ERR_BAD_RESPONSE","msInitializeReviewSlider","Swiper","acf","config1","config2","getMergedValue","source","merge","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","normalizeHeaderName","transitionalDefaults","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","transformRequest","isFormData","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isFileList","isObjectPayload","contentType","_FormData","rawValue","parser","encoder","parse","stringifySafely","transformResponse","strictJSONParsing","responseType","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","common","ssrDocument","childNodes","createElementNS","importNode","origin","getDocument","doc","ssrWindow","CustomEvent","screen","getWindow","win","Dom7","proto","__proto__","arrayFlat","res","arrayFilter","selector","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","classes","classNames","attrs","transform","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","handleEvent","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","evt","detail","dataIndex","transitionEnd","dom","fireCallBack","includeMargins","styles","box","clientTop","clientLeft","scrollX","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","newChild","tempDiv","firstChild","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","foundElements","found","removeChild","methodName","support","deviceCached","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","time","targetPosition","side","startPosition","translate","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","progress","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","gestures","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","isWebView","calcBrowser","transitionEmit","runCallbacks","activeIndex","previousIndex","touchEventsData","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","allowThresholdMove","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","rtlTranslate","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","touchAngle","isHorizontal","atan2","touchMoveStopPropagation","nested","startTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","updateActiveIndex","updateSlidesClasses","updateProgress","setTranslate","slidesGrid","currentPos","touchEndTime","timeDiff","pathTree","composedPath","updateClickedSlide","lastClickTime","destroyed","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","rewind","isBeginning","virtual","slides","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","centeredSlides","autoplay","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","onScroll","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListeners","updateOnWindowResize","isGridEnabled","grid","initialSlide","resizeObserver","createElements","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","maxBackfaceHiddenSlides","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","priority","eventsListeners","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","_len2","_key2","eventsArray","clientHeight","getDirectionLabel","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","slideSize","gridEnabled","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","activeSlide","realIndex","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","slideFound","clickedSlide","clickedIndex","byController","translateTo","translateBounds","internal","newTranslate","isH","onTranslateToWrapperTransitionEnd","transitionStart","initial","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","prevSnapIndex","normalizedSnapGrid","prevSnap","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","point","minRatio","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","entries","resultClasses","suffixes","removeClasses","loadImage","imageEl","sizes","checkForComplete","onReady","onload","onerror","imagesLoaded","imagesToLoad","extendedDefaults","swipers","newParams","__modules__","mod","extendParams","desktop","swiperParams","passedParams","eventName","velocity","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","newDefaults","installModule","cls","slideEl","updates","getSlideClasses","view","exact","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","mounted","getWrapperSelector","getWrapper","mount","deleteInstance","cleanStyles","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","WebkitMutationObserver","mutations","observerUpdate","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","bulletSize","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","$dragEl","newPos","opacity","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","scrollbarDisabledClass","Controller","LinearSpline","maxIndex","minIndex","guess","i1","i3","binarySearch","interpolate","x2","removeSpline","controller","control","spline","inverse","by","_t","controlledTranslate","controlled","setControlledTranslate","getInterpolateFunction","setControlledTransition","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","effectInit","requireUpdateOnVirtual","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","slideShadows","effectTarget","effectParams","$slideEl","transformEl","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","swiperWidth","swiperHeight","center","centerOffset","offsetMultiplier","rotateY","rotateX","translateZ","translateY","translateX","slideTransform","zIndex","$shadowBeforeEl","$shadowAfterEl","transformData","isCancel","throwIfCancellationRequested","cancelToken","throwIfRequested","signal","aborted","reason","payload","isAxiosError","previews","link","preview","positions","positionX","positionY","imageSrc","sliderExisted","$slider","Parallax","currTime","timeToCall","bleed","iosFix","androidFix","overScrollFix","mirrorContainer","boxOffsetTop","docHeight","maxOffset","minOffset","imageHeightMin","boxHeight","imageOffsetMin","imageWidth","boxWidth","imageHeight","overScroll","scrollBottom","boxOffsetBottom","boxOffsetLeft","offsetBaseTop","mirrorTop","maxWidth","winWidth","sliders","isReady","isFresh","isBusy","$doc","$win","loadDimensions","loadScrollPosition","winScrollTop","scrollTopMax","scrollLeftMax","lastPosition","frameLoop","configure","requestRender","parallaxElement","old","$this","clamp","useNativeClamp","splitOnChars","truncationChar","truncationHTML","sty","originalText","supportsNativeClamp","clampValue","isCSSValue","re","availHeight","lineHeight","getLineHeight","lh","computeStyle","truncationHTMLContainer","splitChar","getLastChild","getMaxLines","clampedText","nodeValue","chunks","lastChunk","applyEllipsis","truncate","original","clamped","changeOption","field","toJSON","description","fileName","lineNumber","columnNumber","defineProperties","customProps","axiosError","toFlatObject","write","domain","secure","cookie","isNumber","toGMTString","read","backTop","checkBackToTop","windowTop","scrollElement","scrolling","scrollEl","currentTime","animateScroll","timestamp","final","dataElement","scrollDuration","scrollOffset","moveFocus","isAbsoluteURL","combineURLs","requestedURL","VERSION","thing","deprecatedWarnings","formatMessage","ERR_DEPRECATED","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","CancelToken","executor","resolvePromise","token","_listeners","onfulfilled","_resolve","subscribe","unsubscribe","factory","ask","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","docElem","currentElement","currentInput","currentIntent","currentTimestamp","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","keydown","keyup","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","mousePos","pointerMap","2","3","4","addListeners","setPersist","PointerEvent","setInput","setIntent","MSPointerEvent","detectWheel","setElement","clearElement","sessionStorage","getItem","doUpdate","eventKey","pointerType","ignoreMatch","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","checkClosest","fireFunctions","detectScrolling","setItem","touchIsValid","onmousewheel","tag","ElementPrototype","parentElement","objPos","clearStorage","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","Infinity","rt","LN2","settle","cookies","parseHeaders","isURLSameOrigin","parseProtocol","onCanceled","requestData","requestHeaders","done","auth","username","password","unescape","Authorization","btoa","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","onreadystatechange","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","send","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","checked","copy","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","list","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","stringtrim","base64clean","dst","wpSoupGetBlocksOnPage","blocks","wpSoupGetBlocksFromBlock","block","blockType","notDefined","wp_soup_deprecated_blocks","available_blocks","blocks_in_page","priceToggle","priceContent","extraPriceContent","priceBlock","priceBlocks","buttonWC","buttonWCHref","buttonHref","extraOptions","selectedOptionsID","selectedOptions","optionName","optionID","firstPriceNode","secondPriceNode","optionPrice","optionPrice2","firstPrice","newFirstPriceHTML","secondPrice","secondPriceHTML","optionsString","ignoreDuplicateOf","line","fns","kindOf","kindOfTest","getPrototypeOf","isFunction","TypedArray","pipe","product","assignValue","stripBOM","content","superConstructor","sourceObj","destObj","merged","getOwnPropertyNames","searchString","jQuery","normalizedName","createInstance","defaultConfig","Cancel","promises","spread"],"mappings":"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","file":"/dist/js/site/duinzicht.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 = 3);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.Macy=n()}(this,function(){\"use strict\";function t(t,n){var e=void 0;return function(){e&&clearTimeout(e),e=setTimeout(t,n)}}function n(t,n){for(var e=t.length,r=e,o=[];e--;)o.push(n(t[r-e-1]));return o}function e(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(window.Promise)return A(t,n,e);t.recalculate(!0,!0)}function r(t){for(var n=t.options,e=t.responsiveOptions,r=t.keys,o=t.docWidth,i=void 0,s=0;s=a&&(i=n.breakAt[a],O(i,e))}return e}function o(t){for(var n=t.options,e=t.responsiveOptions,r=t.keys,o=t.docWidth,i=void 0,s=r.length-1;s>=0;s--){var a=parseInt(r[s],10);o<=a&&(i=n.breakAt[a],O(i,e))}return e}function i(t){var n=t.useContainerForBreakpoints?t.container.clientWidth:window.innerWidth,e={columns:t.columns};b(t.margin)?e.margin={x:t.margin.x,y:t.margin.y}:e.margin={x:t.margin,y:t.margin};var i=Object.keys(t.breakAt);return t.mobileFirst?r({options:t,responsiveOptions:e,keys:i,docWidth:n}):o({options:t,responsiveOptions:e,keys:i,docWidth:n})}function s(t){return i(t).columns}function a(t){return i(t).margin}function c(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],e=s(t),r=a(t).x,o=100/e;if(!n)return o;if(1===e)return\"100%\";var i=\"px\";if(\"string\"==typeof r){var c=parseFloat(r);i=r.replace(c,\"\"),r=c}return r=(e-1)*r/e,\"%\"===i?o-r+\"%\":\"calc(\"+o+\"% - \"+r+i+\")\"}function u(t,n){var e=s(t.options),r=0,o=void 0,i=void 0;if(1===++n)return 0;i=a(t.options).x;var u=\"px\";if(\"string\"==typeof i){var l=parseFloat(i,10);u=i.replace(l,\"\"),i=l}return o=(i-(e-1)*i/e)*(n-1),r+=c(t.options,!1)*(n-1),\"%\"===u?r+o+\"%\":\"calc(\"+r+\"% + \"+o+u+\")\"}function l(t){var n=0,e=t.container,r=t.rows;v(r,function(t){n=t>n?t:n}),e.style.height=n+\"px\"}function p(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=s(t.options),i=a(t.options).y;M(t,o,e),v(n,function(n){var e=0,o=parseInt(n.offsetHeight,10);isNaN(o)||(t.rows.forEach(function(n,r){n2&&void 0!==arguments[2]&&arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=s(t.options),i=a(t.options).y;M(t,o,e),v(n,function(n){t.lastcol===o&&(t.lastcol=0);var e=C(n,\"height\");e=parseInt(n.offsetHeight,10),isNaN(e)||(n.style.position=\"absolute\",n.style.top=t.rows[t.lastcol]+\"px\",n.style.left=\"\"+t.cols[t.lastcol],t.rows[t.lastcol]+=isNaN(e)?0:e+i,t.lastcol+=1,r&&(n.dataset.macyComplete=1))}),r&&(t.tmpRows=null),l(t)}var h=function t(n,e){if(!(this instanceof t))return new t(n,e);if(n&&n.nodeName)return n;if(n=n.replace(/^\\s*/,\"\").replace(/\\s*$/,\"\"),e)return this.byCss(n,e);for(var r in this.selectors)if(e=r.split(\"/\"),new RegExp(e[1],e[2]).test(n))return this.selectors[r](n);return this.byCss(n)};h.prototype.byCss=function(t,n){return(n||document).querySelectorAll(t)},h.prototype.selectors={},h.prototype.selectors[/^\\.[\\w\\-]+$/]=function(t){return document.getElementsByClassName(t.substring(1))},h.prototype.selectors[/^\\w+$/]=function(t){return document.getElementsByTagName(t)},h.prototype.selectors[/^\\#[\\w\\-]+$/]=function(t){return document.getElementById(t.substring(1))};var v=function(t,n){for(var e=t.length,r=e;e--;)n(t[r-e-1])},m=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.running=!1,this.events=[],this.add(t)};m.prototype.run=function(){if(!this.running&&this.events.length>0){var t=this.events.shift();this.running=!0,t(),this.running=!1,this.run()}},m.prototype.add=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!!n&&(Array.isArray(n)?v(n,function(n){return t.add(n)}):(this.events.push(n),void this.run()))},m.prototype.clear=function(){this.events=[]};var d=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.instance=t,this.data=n,this},y=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.events={},this.instance=t};y.prototype.on=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!(!t||!n)&&(Array.isArray(this.events[t])||(this.events[t]=[]),this.events[t].push(n))},y.prototype.emit=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t||!Array.isArray(this.events[t]))return!1;var e=new d(this.instance,n);v(this.events[t],function(t){return t(e)})};var g=function(t){return!(\"naturalHeight\"in t&&t.naturalHeight+t.naturalWidth===0)||t.width+t.height!==0},E=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new Promise(function(t,e){if(n.complete)return g(n)?t(n):e(n);n.addEventListener(\"load\",function(){return g(n)?t(n):e(n)}),n.addEventListener(\"error\",function(){return e(n)})}).then(function(n){e&&t.emit(t.constants.EVENT_IMAGE_LOAD,{img:n})}).catch(function(n){return t.emit(t.constants.EVENT_IMAGE_ERROR,{img:n})})},w=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return n(e,function(n){return E(t,n,r)})},A=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return Promise.all(w(t,n,e)).then(function(){t.emit(t.constants.EVENT_IMAGE_COMPLETE)})},I=function(n){return t(function(){n.emit(n.constants.EVENT_RESIZE),n.queue.add(function(){return n.recalculate(!0,!0)})},100)},N=function(t){if(t.container=h(t.options.container),t.container instanceof h||!t.container)return!!t.options.debug&&console.error(\"Error: Container not found\");t.container.length&&(t.container=t.container[0]),t.options.container=t.container,t.container.style.position=\"relative\"},T=function(t){t.queue=new m,t.events=new y(t),t.rows=[],t.resizer=I(t)},L=function(t){var n=h(\"img\",t.container);window.addEventListener(\"resize\",t.resizer),t.on(t.constants.EVENT_IMAGE_LOAD,function(){return t.recalculate(!1,!1)}),t.on(t.constants.EVENT_IMAGE_COMPLETE,function(){return t.recalculate(!0,!0)}),t.options.useOwnImageLoader||e(t,n,!t.options.waitForImages),t.emit(t.constants.EVENT_INITIALIZED)},_=function(t){N(t),T(t),L(t)},b=function(t){return t===Object(t)&&\"[object Array]\"!==Object.prototype.toString.call(t)},O=function(t,n){b(t)||(n.columns=t),b(t)&&t.columns&&(n.columns=t.columns),b(t)&&t.margin&&!b(t.margin)&&(n.margin={x:t.margin,y:t.margin}),b(t)&&t.margin&&b(t.margin)&&t.margin.x&&(n.margin.x=t.margin.x),b(t)&&t.margin&&b(t.margin)&&t.margin.y&&(n.margin.y=t.margin.y)},C=function(t,n){return window.getComputedStyle(t,null).getPropertyValue(n)},M=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t.lastcol||(t.lastcol=0),t.rows.length<1&&(e=!0),e){t.rows=[],t.cols=[],t.lastcol=0;for(var r=n-1;r>=0;r--)t.rows[r]=0,t.cols[r]=u(t,r)}else if(t.tmpRows){t.rows=[];for(var r=n-1;r>=0;r--)t.rows[r]=t.tmpRows[r]}else{t.tmpRows=[];for(var r=n-1;r>=0;r--)t.tmpRows[r]=t.rows[r]}},V=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=n?t.container.children:h(':scope > *:not([data-macy-complete=\"1\"])',t.container);r=Array.from(r).filter(function(t){return null!==t.offsetParent});var o=c(t.options);return v(r,function(t){n&&(t.dataset.macyComplete=0),t.style.width=o}),t.options.trueOrder?(f(t,r,n,e),t.emit(t.constants.EVENT_RECALCULATED)):(p(t,r,n,e),t.emit(t.constants.EVENT_RECALCULATED))},R=function(){return!!window.Promise},x=Object.assign||function(t){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:k;if(!(this instanceof t))return new t(n);this.options={},x(this.options,k,n),this.options.cancelLegacy&&!R()||_(this)};return q.init=function(t){return console.warn(\"Depreciated: Macy.init will be removed in v3.0.0 opt to use Macy directly like so Macy({ /*options here*/ }) \"),new q(t)},q.prototype.recalculateOnImageLoad=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e(this,h(\"img\",this.container),!t)},q.prototype.runOnImageLoad=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=h(\"img\",this.container);return this.on(this.constants.EVENT_IMAGE_COMPLETE,t),n&&this.on(this.constants.EVENT_IMAGE_LOAD,t),e(this,r,n)},q.prototype.recalculate=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e&&this.queue.clear(),this.queue.add(function(){return V(t,n,e)})},q.prototype.remove=function(){window.removeEventListener(\"resize\",this.resizer),v(this.container.children,function(t){t.removeAttribute(\"data-macy-complete\"),t.removeAttribute(\"style\")}),this.container.removeAttribute(\"style\")},q.prototype.reInit=function(){this.recalculate(!0,!0),this.emit(this.constants.EVENT_INITIALIZED),window.addEventListener(\"resize\",this.resizer),this.container.style.position=\"relative\"},q.prototype.on=function(t,n){this.events.on(t,n)},q.prototype.emit=function(t,n){this.events.emit(t,n)},q.constants={EVENT_INITIALIZED:\"macy.initialized\",EVENT_RECALCULATED:\"macy.recalculated\",EVENT_IMAGE_LOAD:\"macy.image.load\",EVENT_IMAGE_ERROR:\"macy.image.error\",EVENT_IMAGE_COMPLETE:\"macy.images.complete\",EVENT_RESIZE:\"macy.resize\"},q.prototype.constants=q.constants,q});\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\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","import AOS from 'aos'\nAOS.init()\n","import $ from 'jquery';\n\n// Core Foundation Utilities, utilized in a number of places.\n\n /**\n * Returns a boolean for RTL support\n */\nfunction rtl() {\n return $('html').attr('dir') === 'rtl';\n}\n\n/**\n * returns a random base-36 uid with namespacing\n * @function\n * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.\n * @param {String} namespace - name of plugin to be incorporated in uid, optional.\n * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.\n * @returns {String} - unique id\n */\nfunction GetYoDigits(length = 6, namespace){\n let str = '';\n const chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n const charsLength = chars.length;\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * charsLength)];\n }\n return namespace ? `${str}-${namespace}` : str;\n}\n\n/**\n * Escape a string so it can be used as a regexp pattern\n * @function\n * @see https://stackoverflow.com/a/9310752/4317384\n *\n * @param {String} str - string to escape.\n * @returns {String} - escaped string\n */\nfunction RegExpEscape(str){\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction transitionend($elem){\n var transitions = {\n 'transition': 'transitionend',\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend'\n };\n var elem = document.createElement('div'),\n end;\n\n for (let transition in transitions){\n if (typeof elem.style[transition] !== 'undefined'){\n end = transitions[transition];\n }\n }\n if (end) {\n return end;\n } else {\n setTimeout(function(){\n $elem.triggerHandler('transitionend', [$elem]);\n }, 1);\n return 'transitionend';\n }\n}\n\n/**\n * Return an event type to listen for window load.\n *\n * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.\n * If `handler` is passed, attach it to the event on `$elem`.\n * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.\n * @function\n *\n * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.\n * @param {Function} [] handler - function to attach to the event.\n * @returns {String} - event type that should or will be triggered.\n */\nfunction onLoad($elem, handler) {\n const didLoad = document.readyState === 'complete';\n const eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n const cb = () => $elem.triggerHandler(eventType);\n\n if ($elem) {\n if (handler) $elem.one(eventType, handler);\n\n if (didLoad)\n setTimeout(cb);\n else\n $(window).one('load', cb);\n }\n\n return eventType;\n}\n\n/**\n * Retuns an handler for the `mouseleave` that ignore disappeared mouses.\n *\n * If the mouse \"disappeared\" from the document (like when going on a browser UI element, See https://git.io/zf-11410),\n * the event is ignored.\n * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window\n * (like by switching to an other window with [Alt]+[Tab]).\n * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document\n * outside of the element it left.\n *\n * @function\n *\n * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.\n * @param {Object} [] options - object of options:\n * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.\n * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.\n * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.\n */\nfunction ignoreMousedisappear(handler, { ignoreLeaveWindow = false, ignoreReappear = false } = {}) {\n return function leaveEventHandler(eLeave, ...rest) {\n const callback = handler.bind(this, eLeave, ...rest);\n\n // The mouse left: call the given callback if the mouse entered elsewhere\n if (eLeave.relatedTarget !== null) {\n return callback();\n }\n\n // Otherwise, check if the mouse actually left the window.\n // In firefox if the user switched between windows, the window sill have the focus by the time\n // the event is triggered. We have to debounce the event to test this case.\n setTimeout(function leaveEventDebouncer() {\n if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n return callback();\n }\n\n // Otherwise, wait for the mouse to reeapear outside of the element,\n if (!ignoreReappear) {\n $(document).one('mouseenter', function reenterEventHandler(eReenter) {\n if (!$(eLeave.currentTarget).has(eReenter.target).length) {\n // Fill where the mouse finally entered.\n eLeave.relatedTarget = eReenter.target;\n callback();\n }\n });\n }\n\n }, 0);\n };\n}\n\n\nexport { rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear };\n","import $ from 'jquery';\n\n// Default set of media queries\n// const defaultQueries = {\n// 'default' : 'only screen',\n// landscape : 'only screen and (orientation: landscape)',\n// portrait : 'only screen and (orientation: portrait)',\n// retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n// 'only screen and (min--moz-device-pixel-ratio: 2),' +\n// 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n// 'only screen and (min-device-pixel-ratio: 2),' +\n// 'only screen and (min-resolution: 192dpi),' +\n// 'only screen and (min-resolution: 2dppx)'\n// };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n \"use strict\";\n\n // For browsers that support matchMedium api such as IE 9 and webkit\n var styleMedia = (window.styleMedia || window.media);\n\n // For those that don't support matchMedium\n if (!styleMedia) {\n var style = document.createElement('style'),\n script = document.getElementsByTagName('script')[0],\n info = null;\n\n style.type = 'text/css';\n style.id = 'matchmediajs-test';\n\n if (!script) {\n document.head.appendChild(style);\n } else {\n script.parentNode.insertBefore(style, script);\n }\n\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function (media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\n // Test if media query is true or false\n return info.width === '1px';\n }\n };\n }\n\n return function(media) {\n return {\n matches: styleMedia.matchMedium(media || 'all'),\n media: media || 'all'\n };\n };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n /**\n * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n * @function\n * @private\n */\n _init() {\n\n // make sure the initialization is only done once when calling _init() several times\n if (this.isInitialized === true) {\n return this;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = $('meta.foundation-mq');\n if(!$meta.length){\n $('').appendTo(document.head);\n }\n\n var extractedStyles = $('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = []; // reset\n\n for (var key in namedQueries) {\n if(namedQueries.hasOwnProperty(key)) {\n self.queries.push({\n name: key,\n value: `only screen and (min-width: ${namedQueries[key]})`\n });\n }\n }\n\n this.current = this._getCurrentSize();\n\n this._watcher();\n },\n\n /**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */\n _reInit() {\n this.isInitialized = false;\n this._init();\n },\n\n /**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */\n atLeast(size) {\n var query = this.get(size);\n\n if (query) {\n return window.matchMedia(query).matches;\n }\n\n return false;\n },\n\n /**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */\n only(size) {\n return size === this._getCurrentSize();\n },\n\n /**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */\n upTo(size) {\n const nextSize = this.next(size);\n\n // If the next breakpoint does not match, the screen is smaller than\n // the upper limit of this breakpoint.\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n // If there is no next breakpoint, the \"size\" breakpoint does not have\n // an upper limit and the screen will always be within it or smaller.\n return true;\n },\n\n /**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */\n is(size) {\n const parts = size.trim().split(' ').filter(p => !!p.length);\n const [bpSize, bpModifier = ''] = parts;\n\n // Only the breakpont\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n // At least the breakpoint (included)\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n // Up to the breakpoint (included)\n if (bpModifier === 'down') {\n return this.upTo(bpSize);\n }\n\n throw new Error(`\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \" \", got \"${size}\".\n `);\n },\n\n /**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */\n get(size) {\n for (var i in this.queries) {\n if(this.queries.hasOwnProperty(i)) {\n var query = this.queries[i];\n if (size === query.name) return query.value;\n }\n }\n\n return null;\n },\n\n /**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */\n next(size) {\n const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n if (queryIndex === -1) {\n throw new Error(`\n Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n `);\n }\n\n const nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n\n /**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */\n _getQueryName(value) {\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object')\n return value.name;\n throw new TypeError(`\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n `);\n },\n\n /**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */\n _getCurrentSize() {\n var matched;\n\n for (var i = 0; i < this.queries.length; i++) {\n var query = this.queries[i];\n\n if (window.matchMedia(query.value).matches) {\n matched = query;\n }\n }\n\n return matched && this._getQueryName(matched);\n },\n\n /**\n * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n * @function\n * @private\n */\n _watcher() {\n $(window).on('resize.zf.trigger', () => {\n var newSize = this._getCurrentSize(), currentSize = this.current;\n\n if (newSize !== currentSize) {\n // Change the current media query\n this.current = newSize;\n\n // Broadcast the media query change on the window\n $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n if (!str) {\n return styleObject;\n }\n\n styleObject = str.split('&').reduce(function(ret, param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = parts[0];\n var val = parts[1];\n key = decodeURIComponent(key);\n\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n } else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n } else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n\n return styleObject;\n}\n\nexport {MediaQuery};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.7.5';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n /**\n * Stores initialized plugins.\n */\n _plugins: {},\n\n /**\n * Stores generated unique ids for plugin instances\n */\n _uuids: [],\n\n /**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */\n plugin: function(plugin, name) {\n // Object key to use when adding to global Foundation object\n // Examples: Foundation.Reveal, Foundation.OffCanvas\n var className = (name || functionName(plugin));\n // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n // Examples: data-reveal, data-off-canvas\n var attrName = hyphenate(className);\n\n // Add to the Foundation object and the plugins list (for reflowing)\n this._plugins[attrName] = this[className] = plugin;\n },\n /**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */\n registerPlugin: function(plugin, name){\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = GetYoDigits(6, pluginName);\n\n if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n plugin.$element.trigger(`init.zf.${pluginName}`);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n /**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */\n unregisterPlugin: function(plugin){\n var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in plugin){\n if(typeof plugin[prop] === 'function'){\n plugin[prop] = null; //clean up script to prep for garbage collection.\n }\n }\n return;\n },\n\n /**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */\n reInit: function(plugins){\n var isJQ = plugins instanceof $;\n try{\n if(isJQ){\n plugins.each(function(){\n $(this).data('zfPlugin')._init();\n });\n }else{\n var type = typeof plugins,\n _this = this,\n fns = {\n 'object': function(plgs){\n plgs.forEach(function(p){\n p = hyphenate(p);\n $('[data-'+ p +']').foundation('_init');\n });\n },\n 'string': function(){\n plugins = hyphenate(plugins);\n $('[data-'+ plugins +']').foundation('_init');\n },\n 'undefined': function(){\n this.object(Object.keys(_this._plugins));\n }\n };\n fns[type](plugins);\n }\n }catch(err){\n console.error(err);\n }finally{\n return plugins;\n }\n },\n\n /**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */\n reflow: function(elem, plugins) {\n\n // If plugins is undefined, just grab everything\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n }\n // If plugins is a string, convert it to an array with one item\n else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n // Iterate through each plugin\n $.each(plugins, function(i, name) {\n // Get the current plugin\n var plugin = _this._plugins[name];\n\n // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n return typeof $(this).data(\"zfPlugin\") === 'undefined';\n });\n\n // For each plugin found, initialize it\n $elem.each(function() {\n var $el = $(this),\n opts = { reflow: true };\n\n if($el.attr('data-options')){\n $el.attr('data-options').split(';').forEach(function(option){\n var opt = option.split(':').map(function(el){ return el.trim(); });\n if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try{\n $el.data('zfPlugin', new plugin($(this), opts));\n }catch(er){\n console.error(er);\n }finally{\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function() {\n // TODO: consider not making this a jQuery function\n // TODO: need way to reflow vs. re-initialize\n /**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */\n var foundation = function(method) {\n var type = typeof method,\n $noJS = $('.no-js');\n\n if($noJS.length){\n $noJS.removeClass('no-js');\n }\n\n if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n MediaQuery._init();\n Foundation.reflow(this);\n }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n if(this.length === 1){//if there's only one, call it directly.\n plugClass[method].apply(plugClass, args);\n }else{\n this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n plugClass[method].apply($(el).data('zfPlugin'), args);\n });\n }\n }else{//error for no class or no method\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n }else{//error for invalid argument type\n throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n }\n return this;\n };\n $.fn.foundation = foundation;\n return $;\n }\n};\n\nFoundation.util = {\n /**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */\n throttle: function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer === null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n if (!Date.now || !window.Date.now)\n window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n var vendors = ['webkit', 'moz'];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n || window[vp+'CancelRequestAnimationFrame']);\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function() { callback(lastTime = nextTime); },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n /**\n * Polyfill for performance.now, required by rAF\n */\n if(!window.performance || !window.performance.now){\n window.performance = {\n start: Date.now(),\n now: function(){ return Date.now() - this.start; }\n };\n }\n})();\nif (!Function.prototype.bind) {\n /* eslint-disable no-extend-native */\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n if (typeof Function.prototype.name === 'undefined') {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = (funcNameRegex).exec((fn).toString());\n return (results && results.length > 1) ? results[1].trim() : \"\";\n }\n else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n }\n else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str){\n if ('true' === str) return true;\n else if ('false' === str) return false;\n else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n","import { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n constructor(element, options) {\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = GetYoDigits(6, pluginName);\n\n if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n this.$element.trigger(`init.zf.${pluginName}`);\n }\n\n destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in this){\n if (this.hasOwnProperty(prop)) {\n this[prop] = null; //clean up script to prep for garbage collection.\n }\n }\n }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n return hyphenate(obj.className);\n}\n\nexport {Plugin};\n","/*******************************************\n * *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n * *\n ******************************************/\n\nimport $ from 'jquery';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst keyCodes = {\n 9: 'TAB',\n 13: 'ENTER',\n 27: 'ESCAPE',\n 32: 'SPACE',\n 35: 'END',\n 36: 'HOME',\n 37: 'ARROW_LEFT',\n 38: 'ARROW_UP',\n 39: 'ARROW_RIGHT',\n 40: 'ARROW_DOWN'\n}\n\nvar commands = {}\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n if(!$element) {return false; }\n return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {\n if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0\n return true;\n })\n .sort( function( a, b ) {\n if ($(a).attr('tabindex') === $(b).attr('tabindex')) {\n return 0;\n }\n let aTabIndex = parseInt($(a).attr('tabindex'), 10),\n bTabIndex = parseInt($(b).attr('tabindex'), 10);\n // Undefined is treated the same as 0\n if (typeof $(a).attr('tabindex') === 'undefined' && bTabIndex > 0) {\n return 1;\n }\n if (typeof $(b).attr('tabindex') === 'undefined' && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex === 0 && bTabIndex > 0) {\n return 1;\n }\n if (bTabIndex === 0 && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex < bTabIndex) {\n return -1;\n }\n if (aTabIndex > bTabIndex) {\n return 1;\n }\n });\n}\n\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n\n if (event.shiftKey) key = `SHIFT_${key}`;\n if (event.ctrlKey) key = `CTRL_${key}`;\n if (event.altKey) key = `ALT_${key}`;\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n\n register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n\n\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n\n $element.on('keydown.zf.trapfocus', function(event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n }\n else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) {\n if (kcs.hasOwnProperty(kc)) k[kcs[kc]] = kcs[kc];\n }\n return k;\n}\n\nexport {Keyboard};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\n\n/**\n * Accordion module.\n * @module foundation.accordion\n * @requires foundation.util.keyboard\n */\n\nclass Accordion extends Plugin {\n /**\n * Creates a new instance of an accordion.\n * @class\n * @name Accordion\n * @fires Accordion#init\n * @param {jQuery} element - jQuery object to make into an accordion.\n * @param {Object} options - a plain object with settings to override the default options.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);\n\n this.className = 'Accordion'; // ie9 back compat\n this._init();\n\n Keyboard.register('Accordion', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_DOWN': 'next',\n 'ARROW_UP': 'previous',\n 'HOME': 'first',\n 'END': 'last',\n });\n }\n\n /**\n * Initializes the accordion by animating the preset active pane(s).\n * @private\n */\n _init() {\n this._isInitializing = true;\n\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n\n this.$tabs.each(function(idx, el) {\n var $el = $(el),\n $content = $el.children('[data-tab-content]'),\n id = $content[0].id || GetYoDigits(6, 'accordion'),\n linkId = (el.id) ? `${el.id}-label` : `${id}-label`;\n\n $el.find('a:first').attr({\n 'aria-controls': id,\n 'id': linkId,\n 'aria-expanded': false\n });\n\n $content.attr({'role': 'region', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});\n });\n\n var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n if ($initActive.length) {\n // Save up the initial hash to return to it later when going back in history\n this._initialAnchor = $initActive.prev('a').attr('href');\n this._openSingleTab($initActive);\n }\n\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var $anchor = anchor && $(anchor);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"]`);\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, open it (if not already active)\n if ($anchor && $link && $link.length) {\n if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n this._openSingleTab($anchor);\n }\n }\n // Otherwise, close everything\n else {\n this._closeAllTabs();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n onLoad($(window), () => {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset }, this.options.deepLinkSmudgeDelay);\n });\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Accordion#deeplink\n */\n this.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the accordion.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$tabs.each(function() {\n var $elem = $(this);\n var $tabContent = $elem.children('[data-tab-content]');\n if ($tabContent.length) {\n $elem.children('a').off('click.zf.accordion keydown.zf.accordion')\n .on('click.zf.accordion', function(e) {\n e.preventDefault();\n _this.toggle($tabContent);\n }).on('keydown.zf.accordion', function(e) {\n Keyboard.handleKey(e, 'Accordion', {\n toggle: function() {\n _this.toggle($tabContent);\n },\n next: function() {\n var $a = $elem.next().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n previous: function() {\n var $a = $elem.prev().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n first: function() {\n var $a = _this.$tabs.first().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n last: function() {\n var $a = _this.$tabs.last().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n });\n if (this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Toggles the selected content pane's open/close state.\n * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).\n * @function\n */\n toggle($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot toggle an accordion that is disabled.');\n return;\n }\n if ($target.parent().hasClass('is-active')) {\n this.up($target);\n } else {\n this.down($target);\n }\n //either replace or update browser history\n if (this.options.deepLink) {\n var anchor = $target.prev('a').attr('href');\n\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n }\n\n /**\n * Opens the accordion tab defined by `$target`.\n * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n */\n down($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot call down on an accordion that is disabled.');\n return;\n }\n\n if (this.options.multiExpand)\n this._openTab($target);\n else\n this._openSingleTab($target);\n }\n\n /**\n * Closes the tab defined by `$target`.\n * It may be ignored if the Accordion options don't allow it.\n *\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n */\n up($target) {\n if (this.$element.is('[disabled]')) {\n console.info('Cannot call up on an accordion that is disabled.');\n return;\n }\n\n // Don't close the item if it is already closed\n const $targetItem = $target.parent();\n if (!$targetItem.hasClass('is-active')) return;\n\n // Don't close the item if there is no other active item (unless with `allowAllClosed`)\n const $othersItems = $targetItem.siblings();\n if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n this._closeTab($target);\n }\n\n /**\n * Make the tab defined by `$target` the only opened tab, closing all others tabs.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @function\n * @private\n */\n _openSingleTab($target) {\n // Close all the others active tabs.\n const $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeContents.length) {\n this._closeTab($activeContents.not($target));\n }\n\n // Then open the target.\n this._openTab($target);\n }\n\n /**\n * Opens the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n * @private\n */\n _openTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', false);\n $targetItem.addClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': true\n });\n\n $target.finish().slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done opening.\n * @event Accordion#down\n */\n this.$element.trigger('down.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', true)\n $targetItem.removeClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': false\n });\n\n $target.finish().slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done collapsing up.\n * @event Accordion#up\n */\n this.$element.trigger('up.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes all active tabs\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeAllTabs() {\n var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeTabs.length) {\n this._closeTab($activeTabs);\n }\n }\n\n /**\n * Destroys an instance of an accordion.\n * @fires Accordion#destroyed\n * @function\n */\n _destroy() {\n this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n this.$element.find('a').off('.zf.accordion');\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n }\n}\n\nAccordion.defaults = {\n /**\n * Amount of time to animate the opening of an accordion pane.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Allow the accordion to have multiple open panes.\n * @option\n * @type {boolean}\n * @default false\n */\n multiExpand: false,\n /**\n * Allow the accordion to close all panes.\n * @option\n * @type {boolean}\n * @default false\n */\n allowAllClosed: false,\n /**\n * Link the location hash to the open pane.\n * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n /**\n * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n /**\n * If `deepLink` is enabled, update the browser history with the open accordion\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false\n};\n\nexport { Accordion };\n","import $ from 'jquery';\n\nconst Nest = {\n Feather(menu, type = 'zf') {\n menu.attr('role', 'menubar');\n menu.find('a').attr({'role': 'menuitem'});\n\n var items = menu.find('li').attr({'role': 'none'}),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`,\n applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.\n\n items.each(function() {\n var $item = $(this),\n $sub = $item.children('ul');\n\n if ($sub.length) {\n $item.addClass(hasSubClass);\n if(applyAria) {\n const firstItem = $item.children('a:first');\n firstItem.attr({\n 'aria-haspopup': true,\n 'aria-label': firstItem.attr('aria-label') || firstItem.text()\n });\n // Note: Drilldowns behave differently in how they hide, and so need\n // additional attributes. We should look if this possibly over-generalized\n // utility (Nest) is appropriate when we rework menus in 6.4\n if(type === 'drilldown') {\n $item.attr({'aria-expanded': false});\n }\n }\n $sub\n .addClass(`submenu ${subMenuClass}`)\n .attr({\n 'data-submenu': '',\n 'role': 'menubar'\n });\n if(type === 'drilldown') {\n $sub.attr({'aria-hidden': true});\n }\n }\n\n if ($item.parent('[data-submenu]').length) {\n $item.addClass(`is-submenu-item ${subItemClass}`);\n }\n });\n\n return;\n },\n\n Burn(menu, type) {\n var //items = menu.find('li'),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`;\n\n menu\n .find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li')\n .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)\n .removeAttr('data-submenu').css('display', '');\n\n }\n}\n\nexport {Nest};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * AccordionMenu module.\n * @module foundation.accordionMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n */\n\nclass AccordionMenu extends Plugin {\n /**\n * Creates a new instance of an accordion menu.\n * @class\n * @name AccordionMenu\n * @fires AccordionMenu#init\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n this.className = 'AccordionMenu'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('AccordionMenu', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_RIGHT': 'open',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'close',\n 'ESCAPE': 'closeAll'\n });\n }\n\n\n\n /**\n * Initializes the accordion menu by hiding all nested menus.\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'accordion');\n\n var _this = this;\n\n this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');\n this.$element.attr({\n 'aria-multiselectable': this.options.multiOpen\n });\n\n this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');\n this.$menuLinks.each(function() {\n var linkId = this.id || GetYoDigits(6, 'acc-menu-link'),\n $elem = $(this),\n $sub = $elem.children('[data-submenu]'),\n subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),\n isActive = $sub.hasClass('is-active');\n\n if (_this.options.parentLink) {\n let $anchor = $elem.children('a');\n $anchor.clone().prependTo($sub).wrap('
  • ');\n }\n\n if (_this.options.submenuToggle) {\n $elem.addClass('has-submenu-toggle');\n $elem.children('a').after('');\n } else {\n $elem.attr({\n 'aria-controls': subId,\n 'aria-expanded': isActive,\n 'id': linkId\n });\n }\n $sub.attr({\n 'aria-labelledby': linkId,\n 'aria-hidden': !isActive,\n 'role': 'group',\n 'id': subId\n });\n });\n var initPanes = this.$element.find('.is-active');\n if (initPanes.length) {\n initPanes.each(function() {\n _this.down($(this));\n });\n }\n this._events();\n }\n\n /**\n * Adds event handlers for items within the menu.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.find('li').each(function() {\n var $submenu = $(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function() {\n _this.toggle($submenu);\n });\n } else {\n $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n e.preventDefault();\n _this.toggle($submenu);\n });\n }\n }\n }).on('keydown.zf.accordionMenu', function(e) {\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement,\n $target = $element.children('[data-submenu]');\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ($(this).is(':first-child')) { // is first element of sub menu\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ($(this).is(':last-child')) { // is last element of sub menu\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n Keyboard.handleKey(e, 'AccordionMenu', {\n open: function() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function() {\n if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function() {\n $prevElement.focus();\n return true;\n },\n down: function() {\n $nextElement.focus();\n return true;\n },\n toggle: function() {\n if (_this.options.submenuToggle) {\n return false;\n }\n if ($element.children('[data-submenu]').length) {\n _this.toggle($element.children('[data-submenu]'));\n return true;\n }\n },\n closeAll: function() {\n _this.hideAll();\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });//.attr('tabindex', 0);\n }\n\n /**\n * Closes all panes of the menu.\n * @function\n */\n hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Opens all panes of the menu.\n * @function\n */\n showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */\n toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n }\n else {\n this.down($target);\n }\n }\n }\n\n /**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */\n down($target) {\n // If having multiple submenus active is disabled, close all the submenus\n // that are not parents or children of the targeted submenu.\n if (!this.options.multiOpen) {\n // The \"branch\" of the targetted submenu, from the component root to\n // the active submenus nested in it.\n const $targetBranch = $target.parentsUntil(this.$element)\n .add($target)\n .add($target.find('.is-active'));\n // All the active submenus that are not in the branch.\n const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target\n .addClass('is-active')\n .attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n }\n else {\n $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n }\n\n $target.slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */\n this.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */\n up($target) {\n const $submenus = $target.find('[data-submenu]');\n const $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus\n .removeClass('is-active')\n .attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n }\n else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */\n this.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */\n _destroy() {\n this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n this.$element.find('a').off('click.zf.accordionMenu');\n this.$element.find('[data-is-parent-link]').detach();\n\n if (this.options.submenuToggle) {\n this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n this.$element.find('.submenu-toggle').remove();\n }\n\n Nest.Burn(this.$element, 'accordion');\n }\n}\n\nAccordionMenu.defaults = {\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */\n submenuToggle: false,\n /**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */\n submenuToggleText: 'Toggle menu',\n /**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */\n multiOpen: true\n};\n\nexport { AccordionMenu };\n","var Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n}\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver, bottomOver, leftOver, rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n\n bottomOver = (parDims.height + parDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = (parDims.width + parDims.offset.left) - (eleDims.offset.left + eleDims.width);\n }\n else {\n bottomOver = (eleDims.windowDims.height + eleDims.windowDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n // use sum of squares b/c we care about overlap area.\n return Math.sqrt((topOver * topOver) + (bottomOver * bottomOver) + (leftOver * leftOver) + (rightOver * rightOver));\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem){\n elem = elem.length ? elem[0] : elem;\n\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n }\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n var topVal, leftVal;\n\n if ($anchorDims !== null) {\n // set position related attribute\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n // set alignment related attribute\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)) + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset\n break;\n case 'center':\n topVal = ($anchorDims.offset.top + vOffset + ($anchorDims.height / 2)) - ($eleDims.height / 2)\n break;\n }\n break;\n }\n }\n\n return {top: topVal, left: leftVal};\n}\n\nexport {Box};\n","import { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst POSITIONS = ['left', 'right', 'top', 'bottom'];\nconst VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nconst HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nconst ALIGNMENTS = {\n 'left': VERTICAL_ALIGNMENTS,\n 'right': VERTICAL_ALIGNMENTS,\n 'top': HORIZONTAL_ALIGNMENTS,\n 'bottom': HORIZONTAL_ALIGNMENTS\n}\n\nfunction nextItem(item, array) {\n var currentIdx = array.indexOf(item);\n if(currentIdx === array.length - 1) {\n return array[0];\n } else {\n return array[currentIdx + 1];\n }\n}\n\n\nclass Positionable extends Plugin {\n /**\n * Abstract class encapsulating the tether-like explicit positioning logic\n * including repositioning based on overlap.\n * Expects classes to define defaults for vOffset, hOffset, position,\n * alignment, allowOverlap, and allowBottomOverlap. They can do this by\n * extending the defaults, or (for now recommended due to the way docs are\n * generated) by explicitly declaring them.\n *\n **/\n\n _init() {\n this.triedPositions = {};\n this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n this.originalPosition = this.position;\n this.originalAlignment = this.alignment;\n }\n\n _getDefaultPosition () {\n return 'bottom';\n }\n\n _getDefaultAlignment() {\n switch(this.position) {\n case 'bottom':\n case 'top':\n return Rtl() ? 'right' : 'left';\n case 'left':\n case 'right':\n return 'bottom';\n }\n }\n\n /**\n * Adjusts the positionable possible positions by iterating through alignments\n * and positions.\n * @function\n * @private\n */\n _reposition() {\n if(this._alignmentsExhausted(this.position)) {\n this.position = nextItem(this.position, POSITIONS);\n this.alignment = ALIGNMENTS[this.position][0];\n } else {\n this._realign();\n }\n }\n\n /**\n * Adjusts the dropdown pane possible positions by iterating through alignments\n * on the current position.\n * @function\n * @private\n */\n _realign() {\n this._addTriedPosition(this.position, this.alignment)\n this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position])\n }\n\n _addTriedPosition(position, alignment) {\n this.triedPositions[position] = this.triedPositions[position] || []\n this.triedPositions[position].push(alignment);\n }\n\n _positionsExhausted() {\n var isExhausted = true;\n for(var i = 0; i < POSITIONS.length; i++) {\n isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n }\n return isExhausted;\n }\n\n _alignmentsExhausted(position) {\n return this.triedPositions[position] && this.triedPositions[position].length === ALIGNMENTS[position].length;\n }\n\n\n // When we're trying to center, we don't want to apply offset that's going to\n // take us just off center, so wrap around to return 0 for the appropriate\n // offset in those alignments. TODO: Figure out if we want to make this\n // configurable behavior... it feels more intuitive, especially for tooltips, but\n // it's possible someone might actually want to start from center and then nudge\n // slightly off.\n _getVOffset() {\n return this.options.vOffset;\n }\n\n _getHOffset() {\n return this.options.hOffset;\n }\n\n _setPosition($anchor, $element, $parent) {\n if($anchor.attr('aria-expanded') === 'false'){ return false; }\n\n if (!this.options.allowOverlap) {\n // restore original position & alignment before checking overlap\n this.position = this.originalPosition;\n this.alignment = this.originalAlignment;\n }\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n if(!this.options.allowOverlap) {\n var minOverlap = 100000000;\n // default coordinates to how we start, in case we can't figure out better\n var minCoordinates = {position: this.position, alignment: this.alignment};\n while(!this._positionsExhausted()) {\n let overlap = Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n if(overlap === 0) {\n return;\n }\n\n if(overlap < minOverlap) {\n minOverlap = overlap;\n minCoordinates = {position: this.position, alignment: this.alignment};\n }\n\n this._reposition();\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n // If we get through the entire loop, there was no non-overlapping\n // position available. Pick the version with least overlap.\n this.position = minCoordinates.position;\n this.alignment = minCoordinates.alignment;\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n }\n\n}\n\nPositionable.defaults = {\n /**\n * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown positionable first\n * try to position as defined by data-position and data-alignment, but\n * reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Number of pixels the positionable should be separated vertically from anchor\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels the positionable should be separated horizontally from anchor\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n}\n\nexport {Positionable};\n","import $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n animateIn: function(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n}\n\nfunction Move(duration, elem, fn){\n var anim, prog, start = null;\n\n if (duration === 0) {\n fn.apply(elem);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n return;\n }\n\n function move(ts){\n if(!start) start = ts;\n prog = ts - start;\n fn.apply(elem);\n\n if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n else{\n window.cancelAnimationFrame(anim);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n }\n }\n anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n element = $(element).eq(0);\n\n if (!element.length) return;\n\n var initClass = isIn ? initClasses[0] : initClasses[1];\n var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n // Set up the animation\n reset();\n\n element\n .addClass(animation)\n .css('transition', 'none');\n\n requestAnimationFrame(() => {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n // Start the animation\n requestAnimationFrame(() => {\n // will trigger the browser to synchronously calculate the style and layout\n // also called reflow or layout thrashing\n // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n element[0].offsetWidth;\n element\n .css('transition', '')\n .addClass(activeClass);\n });\n\n // Clean up the animation when it finishes\n element.one(transitionend(element), finish);\n\n // Hides the element (for out animations), resets the element, and runs a callback\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n // Resets transitions and removes motion-specific classes\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(`${initClass} ${activeClass} ${animation}`);\n }\n}\n\nexport { Move, Motion };\n\n","import $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n})();\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).on(trigger, function() {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10); //default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener(250);\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function (__, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n // var y = e.touches[0].pageY;\n var dx = startPosX - x;\n // var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\n// function teardown() {\n// this.removeEventListener('touchstart', onTouchStart);\n// }\n\nclass SpotSwipe {\n constructor() {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this._init();\n }\n\n _init() {\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/\n\nTouch.setupSpotSwipe = function() {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function() {\n $.fn.addTouch = function(){\n this.each(function(i, el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event) {\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function () {\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { Positionable } from './foundation.positionable';\n\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Dropdown module.\n * @module foundation.dropdown\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n */\nclass Dropdown extends Positionable {\n /**\n * Creates a new instance of a dropdown.\n * @class\n * @name Dropdown\n * @param {jQuery} element - jQuery object to make into a dropdown.\n * Object should be of the dropdown panel, rather than its anchor.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);\n this.className = 'Dropdown'; // ie9 back compat\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Dropdown', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.\n * @function\n * @private\n */\n _init() {\n var $id = this.$element.attr('id');\n\n this.$anchors = $(`[data-toggle=\"${$id}\"]`).length ? $(`[data-toggle=\"${$id}\"]`) : $(`[data-open=\"${$id}\"]`);\n this.$anchors.attr({\n 'aria-controls': $id,\n 'data-is-focus': false,\n 'data-yeti-box': $id,\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n this._setCurrentAnchor(this.$anchors.first());\n\n if(this.options.parentClass){\n this.$parent = this.$element.parents('.' + this.options.parentClass);\n }else{\n this.$parent = null;\n }\n\n // Set [aria-labelledby] on the Dropdown if it is not set\n if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n // Get the anchor ID or create one\n if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n this.$currentAnchor.attr('id', GetYoDigits(6, 'dd-anchor'));\n }\n\n this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n }\n\n this.$element.attr({\n 'aria-hidden': 'true',\n 'data-yeti-box': $id,\n 'data-resize': $id,\n });\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n if(position) {\n return position[0];\n } else {\n return 'bottom'\n }\n }\n\n _getDefaultAlignment() {\n // handle legacy float approach\n var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n if(horizontalPosition) {\n return horizontalPosition[1];\n }\n\n return super._getDefaultAlignment();\n }\n\n\n\n /**\n * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.\n * Recursively calls itself if a collision is detected, with a new position class.\n * @function\n * @private\n */\n _setPosition() {\n this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n super._setPosition(this.$currentAnchor, this.$element, this.$parent);\n this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n }\n\n /**\n * Make it a current anchor.\n * Current anchor as the reference for the position of Dropdown panes.\n * @param {HTML} el - DOM element of the anchor.\n * @function\n * @private\n */\n _setCurrentAnchor(el) {\n this.$currentAnchor = $(el);\n }\n\n /**\n * Adds event listeners to the element utilizing the triggers utility library.\n * @function\n * @private\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': this._setPosition.bind(this)\n });\n\n this.$anchors.off('click.zf.trigger')\n .on('click.zf.trigger', function(e) {\n _this._setCurrentAnchor(this);\n\n if (\n // if forceFollow false, always prevent default action\n (_this.options.forceFollow === false) ||\n // if forceFollow true and hover option true, only prevent default action on 1st click\n // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed\n (hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false)\n ) {\n e.preventDefault();\n }\n });\n\n if(this.options.hover){\n this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n _this._setCurrentAnchor(this);\n\n var bodyData = $('body').data();\n if(typeof(bodyData.whatinput) === 'undefined' || bodyData.whatinput === 'mouse') {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.open();\n _this.$anchors.data('hover', true);\n }, _this.options.hoverDelay);\n }\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n if(this.options.hoverPane){\n this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n clearTimeout(_this.timeout);\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n }\n }\n this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {\n\n var $target = $(this);\n\n Keyboard.handleKey(e, 'Dropdown', {\n open: function() {\n if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n _this.open();\n _this.$element.attr('tabindex', -1).focus();\n e.preventDefault();\n }\n },\n close: function() {\n _this.close();\n _this.$anchors.focus();\n }\n });\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n var $body = $(document.body).not(this.$element),\n _this = this;\n $body.off('click.zf.dropdown tap.zf.dropdown')\n .on('click.zf.dropdown tap.zf.dropdown', function (e) {\n if(_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n return;\n }\n if(_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n return;\n }\n _this.close();\n $body.off('click.zf.dropdown tap.zf.dropdown');\n });\n }\n\n /**\n * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.\n * @function\n * @fires Dropdown#closeme\n * @fires Dropdown#show\n */\n open() {\n // var _this = this;\n /**\n * Fires to close other open dropdowns, typically when dropdown is opening\n * @event Dropdown#closeme\n */\n this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n this.$anchors.addClass('hover')\n .attr({'aria-expanded': true});\n // this.$element/*.show()*/;\n\n this.$element.addClass('is-opening');\n this._setPosition();\n this.$element.removeClass('is-opening').addClass('is-open')\n .attr({'aria-hidden': false});\n\n if(this.options.autoFocus){\n var $focusable = Keyboard.findFocusable(this.$element);\n if($focusable.length){\n $focusable.eq(0).focus();\n }\n }\n\n if(this.options.closeOnClick){ this._addBodyHandler(); }\n\n if (this.options.trapFocus) {\n Keyboard.trapFocus(this.$element);\n }\n\n /**\n * Fires once the dropdown is visible.\n * @event Dropdown#show\n */\n this.$element.trigger('show.zf.dropdown', [this.$element]);\n }\n\n /**\n * Closes the open dropdown pane.\n * @function\n * @fires Dropdown#hide\n */\n close() {\n if(!this.$element.hasClass('is-open')){\n return false;\n }\n this.$element.removeClass('is-open')\n .attr({'aria-hidden': true});\n\n this.$anchors.removeClass('hover')\n .attr('aria-expanded', false);\n\n /**\n * Fires once the dropdown is no longer visible.\n * @event Dropdown#hide\n */\n this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n if (this.options.trapFocus) {\n Keyboard.releaseFocus(this.$element);\n }\n }\n\n /**\n * Toggles the dropdown pane's visibility.\n * @function\n */\n toggle() {\n if(this.$element.hasClass('is-open')){\n if(this.$anchors.data('hover')) return;\n this.close();\n }else{\n this.open();\n }\n }\n\n /**\n * Destroys the dropdown.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger').hide();\n this.$anchors.off('.zf.dropdown');\n $(document.body).off('click.zf.dropdown tap.zf.dropdown');\n\n }\n}\n\nDropdown.defaults = {\n /**\n * Class that designates bounding container of Dropdown (default: window)\n * @option\n * @type {?string}\n * @default null\n */\n parentClass: null,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 250\n */\n hoverDelay: 250,\n /**\n * Allow submenus to open on hover events\n * @option\n * @type {boolean}\n * @default false\n */\n hover: false,\n /**\n * Don't close dropdown when hovering over dropdown pane\n * @option\n * @type {boolean}\n * @default false\n */\n hoverPane: false,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Position of dropdown. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false,\n /**\n * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n /**\n * Allows a click on the body to close the dropdown.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {Dropdown};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl, ignoreMousedisappear } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { Box } from './foundation.util.box';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * DropdownMenu module.\n * @module foundation.dropdownMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.nest\n * @requires foundation.util.touch\n */\n\nclass DropdownMenu extends Plugin {\n /**\n * Creates a new instance of DropdownMenu.\n * @class\n * @name DropdownMenu\n * @fires DropdownMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n this.className = 'DropdownMenu'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('DropdownMenu', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin, and calls _prepareMenu\n * @private\n * @function\n */\n _init() {\n Nest.Feather(this.$element, 'dropdown');\n\n var subs = this.$element.find('li.is-dropdown-submenu-parent');\n this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n this.$menuItems = this.$element.find('li[role=\"none\"]');\n this.$tabs = this.$element.children('li[role=\"none\"]');\n this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n if (this.options.alignment === 'auto') {\n if (this.$element.hasClass(this.options.rightClass) || Rtl() || this.$element.parents('.top-bar-right').is('*')) {\n this.options.alignment = 'right';\n subs.addClass('opens-left');\n } else {\n this.options.alignment = 'left';\n subs.addClass('opens-right');\n }\n } else {\n if (this.options.alignment === 'right') {\n subs.addClass('opens-left');\n } else {\n subs.addClass('opens-right');\n }\n }\n this.changed = false;\n this._events();\n };\n\n _isVertical() {\n return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n }\n\n _isRtl() {\n return this.$element.hasClass('align-right') || (Rtl() && !this.$element.hasClass('align-left'));\n }\n\n /**\n * Adds event listeners to elements within the menu\n * @private\n * @function\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),\n parClass = 'is-dropdown-submenu-parent';\n\n // used for onClick and in the keyboard handlers\n var handleClickFn = function(e) {\n var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),\n hasSub = $elem.hasClass(parClass),\n hasClicked = $elem.attr('data-is-click') === 'true',\n $sub = $elem.children('.is-dropdown-submenu');\n\n if (hasSub) {\n if (hasClicked) {\n if (!_this.options.closeOnClick\n || (!_this.options.clickOpen && !hasTouch)\n || (_this.options.forceFollow && hasTouch)) {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._hide($elem);\n }\n else {\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._show($sub);\n $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);\n }\n }\n };\n\n if (this.options.clickOpen || hasTouch) {\n this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n }\n\n // Handle Leaf element Clicks\n if(_this.options.closeOnClickInside){\n this.$menuItems.on('click.zf.dropdownMenu', function() {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if(!hasSub){\n _this._hide();\n }\n });\n }\n\n if (hasTouch && this.options.disableHoverOnTouch) this.options.disableHover = true;\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n\n if (hasSub) {\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._show($elem.children('.is-dropdown-submenu'));\n }, _this.options.hoverDelay));\n }\n }).on('mouseleave.zf.dropdownMenu', ignoreMousedisappear(function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if (hasSub && _this.options.autoclose) {\n if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; }\n\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._hide($elem);\n }, _this.options.closingTime));\n }\n }));\n }\n this.$menuItems.on('keydown.zf.dropdownMenu', function(e) {\n var $element = $(e.target).parentsUntil('ul', '[role=\"none\"]'),\n isTab = _this.$tabs.index($element) > -1,\n $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(i-1);\n $nextElement = $elements.eq(i+1);\n return;\n }\n });\n\n var nextSibling = function() {\n $nextElement.children('a:first').focus();\n e.preventDefault();\n }, prevSibling = function() {\n $prevElement.children('a:first').focus();\n e.preventDefault();\n }, openSub = function() {\n var $sub = $element.children('ul.is-dropdown-submenu');\n if ($sub.length) {\n _this._show($sub);\n $element.find('li > a:first').focus();\n e.preventDefault();\n } else { return; }\n }, closeSub = function() {\n //if ($element.is(':first-child')) {\n var close = $element.parent('ul').parent('li');\n close.children('a:first').focus();\n _this._hide(close);\n e.preventDefault();\n //}\n };\n var functions = {\n open: openSub,\n close: function() {\n _this._hide(_this.$element);\n _this.$menuItems.eq(0).children('a').focus(); // focus to first element\n e.preventDefault();\n }\n };\n\n if (isTab) {\n if (_this._isVertical()) { // vertical menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: closeSub,\n previous: openSub\n });\n } else { // left aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: openSub,\n previous: closeSub\n });\n }\n } else { // horizontal menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: prevSibling,\n previous: nextSibling,\n down: openSub,\n up: closeSub\n });\n } else { // left aligned\n $.extend(functions, {\n next: nextSibling,\n previous: prevSibling,\n down: openSub,\n up: closeSub\n });\n }\n }\n } else { // not tabs -> one sub\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: closeSub,\n previous: openSub,\n down: nextSibling,\n up: prevSibling\n });\n } else { // left aligned\n $.extend(functions, {\n next: openSub,\n previous: closeSub,\n down: nextSibling,\n up: prevSibling\n });\n }\n }\n Keyboard.handleKey(e, 'DropdownMenu', functions);\n\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n const $body = $(document.body);\n this._removeBodyHandler();\n $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', (e) => {\n var isItself = !!$(e.target).closest(this.$element).length;\n if (isItself) return;\n\n this._hide();\n this._removeBodyHandler();\n });\n }\n\n /**\n * Remove the body event handler. See `_addBodyHandler`.\n * @function\n * @private\n */\n _removeBodyHandler() {\n $(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n }\n\n /**\n * Opens a dropdown pane, and checks for collisions first.\n * @param {jQuery} $sub - ul element that is a submenu to show\n * @function\n * @private\n * @fires DropdownMenu#show\n */\n _show($sub) {\n var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {\n return $(el).find($sub).length > 0;\n }));\n var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n this._hide($sibs, idx);\n $sub.css('visibility', 'hidden').addClass('js-dropdown-active')\n .parent('li.is-dropdown-submenu-parent').addClass('is-active');\n var clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`);\n clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner');\n }\n this.changed = true;\n }\n $sub.css('visibility', '');\n if (this.options.closeOnClick) { this._addBodyHandler(); }\n /**\n * Fires when the new dropdown pane is visible.\n * @event DropdownMenu#show\n */\n this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n }\n\n /**\n * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n * @function\n * @param {jQuery} $elem - element with a submenu to hide\n * @param {Number} idx - index of the $tabs collection to hide\n * @fires DropdownMenu#hide\n * @private\n */\n _hide($elem, idx) {\n var $toClose;\n if ($elem && $elem.length) {\n $toClose = $elem;\n } else if (typeof idx !== 'undefined') {\n $toClose = this.$tabs.not(function(i) {\n return i === idx;\n });\n }\n else {\n $toClose = this.$element;\n }\n var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n if (somethingToClose) {\n var $activeItem = $toClose.find('li.is-active');\n $activeItem.add($toClose).attr({\n 'data-is-click': false\n }).removeClass('is-active');\n\n $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n if (this.changed || $toClose.find('opens-inner').length) {\n var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n $toClose.find('li.is-dropdown-submenu-parent').add($toClose)\n .removeClass(`opens-inner opens-${this.options.alignment}`)\n .addClass(`opens-${oldClass}`);\n this.changed = false;\n }\n\n clearTimeout($activeItem.data('_delay'));\n this._removeBodyHandler();\n\n /**\n * Fires when the open menus are closed.\n * @event DropdownMenu#hide\n */\n this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n }\n }\n\n /**\n * Destroys the plugin.\n * @function\n */\n _destroy() {\n this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click')\n .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n $(document.body).off('.zf.dropdownMenu');\n Nest.Burn(this.$element, 'dropdown');\n }\n}\n\n/**\n * Default settings for plugin\n */\nDropdownMenu.defaults = {\n /**\n * Disallows hover events from opening submenus\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disallows hover on touch devices\n * @option\n * @type {boolean}\n * @default true\n */\n disableHoverOnTouch: true,\n /**\n * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n * @option\n * @type {boolean}\n * @default true\n */\n autoclose: true,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 50\n */\n hoverDelay: 50,\n /**\n * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n * @option\n * @type {boolean}\n * @default false\n */\n clickOpen: false,\n /**\n * Amount of time to delay closing a submenu on a mouseleave event.\n * @option\n * @type {number}\n * @default 500\n */\n\n closingTime: 500,\n /**\n * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow clicks on the body to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allow clicks on leaf anchor links to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClickInside: true,\n /**\n * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'vertical'\n */\n verticalClass: 'vertical',\n /**\n * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'align-right'\n */\n rightClass: 'align-right',\n /**\n * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {DropdownMenu};\n","import $ from 'jquery';\n\n/**\n * Runs a callback function when images are fully loaded.\n * @param {Object} images - Image(s) to check if loaded.\n * @param {Func} callback - Function to execute when image is fully loaded.\n */\nfunction onImagesLoaded(images, callback){\n var unloaded = images.length;\n\n if (unloaded === 0) {\n callback();\n }\n\n images.each(function(){\n // Check if image is loaded\n if (this.complete && typeof this.naturalWidth !== 'undefined') {\n singleImageLoaded();\n }\n else {\n // If the above check failed, simulate loading on detached element.\n var image = new Image();\n // Still count image as loaded if it finalizes with an error.\n var events = \"load.zf.images error.zf.images\";\n $(image).one(events, function me(){\n // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.\n $(this).off(events, me);\n singleImageLoaded();\n });\n image.src = $(this).attr('src');\n }\n });\n\n function singleImageLoaded() {\n unloaded--;\n if (unloaded === 0) {\n callback();\n }\n }\n}\n\nexport { onImagesLoaded };\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Equalizer module.\n * @module foundation.equalizer\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.imageLoader if equalizer contains images\n */\n\nclass Equalizer extends Plugin {\n /**\n * Creates a new instance of Equalizer.\n * @class\n * @name Equalizer\n * @fires Equalizer#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options);\n this.className = 'Equalizer'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var eqId = this.$element.attr('data-equalizer') || '';\n var $watched = this.$element.find(`[data-equalizer-watch=\"${eqId}\"]`);\n\n MediaQuery._init();\n\n this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');\n this.$element.attr('data-resize', (eqId || GetYoDigits(6, 'eq')));\n this.$element.attr('data-mutate', (eqId || GetYoDigits(6, 'eq')));\n\n this.hasNested = this.$element.find('[data-equalizer]').length > 0;\n this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;\n this.isOn = false;\n this._bindHandler = {\n onResizeMeBound: this._onResizeMe.bind(this),\n onPostEqualizedBound: this._onPostEqualized.bind(this)\n };\n\n var imgs = this.$element.find('img');\n var tooSmall;\n if(this.options.equalizeOn){\n tooSmall = this._checkMQ();\n $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));\n }else{\n this._events();\n }\n if((typeof tooSmall !== 'undefined' && tooSmall === false) || typeof tooSmall === 'undefined'){\n if(imgs.length){\n onImagesLoaded(imgs, this._reflow.bind(this));\n }else{\n this._reflow();\n }\n }\n }\n\n /**\n * Removes event listeners if the breakpoint is too small.\n * @private\n */\n _pauseEvents() {\n this.isOn = false;\n this.$element.off({\n '.zf.equalizer': this._bindHandler.onPostEqualizedBound,\n 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,\n\t 'mutateme.zf.trigger': this._bindHandler.onResizeMeBound\n });\n }\n\n /**\n * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound\n * @private\n */\n _onResizeMe() {\n this._reflow();\n }\n\n /**\n * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound\n * @private\n */\n _onPostEqualized(e) {\n if(e.target !== this.$element[0]){ this._reflow(); }\n }\n\n /**\n * Initializes events for Equalizer.\n * @private\n */\n _events() {\n this._pauseEvents();\n if(this.hasNested){\n this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);\n }else{\n this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);\n\t this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);\n }\n this.isOn = true;\n }\n\n /**\n * Checks the current breakpoint to the minimum required size.\n * @private\n */\n _checkMQ() {\n var tooSmall = !MediaQuery.is(this.options.equalizeOn);\n if(tooSmall){\n if(this.isOn){\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n }else{\n if(!this.isOn){\n this._events();\n }\n }\n return tooSmall;\n }\n\n /**\n * A noop version for the plugin\n * @private\n */\n _killswitch() {\n return;\n }\n\n /**\n * Calls necessary functions to update Equalizer upon DOM change\n * @private\n */\n _reflow() {\n if(!this.options.equalizeOnStack){\n if(this._isStacked()){\n this.$watched.css('height', 'auto');\n return false;\n }\n }\n if (this.options.equalizeByRow) {\n this.getHeightsByRow(this.applyHeightByRow.bind(this));\n }else{\n this.getHeights(this.applyHeight.bind(this));\n }\n }\n\n /**\n * Manually determines if the first 2 elements are *NOT* stacked.\n * @private\n */\n _isStacked() {\n if (!this.$watched[0] || !this.$watched[1]) {\n return true;\n }\n return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} heights - An array of heights of children within Equalizer container\n */\n getHeights(cb) {\n var heights = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n heights.push(this.$watched[i].offsetHeight);\n }\n cb(heights);\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n */\n getHeightsByRow(cb) {\n var lastElTopOffset = (this.$watched.length ? this.$watched.first().offset().top : 0),\n groups = [],\n group = 0;\n //group by Row\n groups[group] = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n //maybe could use this.$watched[i].offsetTop\n var elOffsetTop = $(this.$watched[i]).offset().top;\n if (elOffsetTop !== lastElTopOffset) {\n group++;\n groups[group] = [];\n lastElTopOffset=elOffsetTop;\n }\n groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);\n }\n\n for (var j = 0, ln = groups.length; j < ln; j++) {\n var heights = $(groups[j]).map(function(){ return this[1]; }).get();\n var max = Math.max.apply(null, heights);\n groups[j].push(max);\n }\n cb(groups);\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest\n * @param {array} heights - An array of heights of children within Equalizer container\n * @fires Equalizer#preequalized\n * @fires Equalizer#postequalized\n */\n applyHeight(heights) {\n var max = Math.max.apply(null, heights);\n /**\n * Fires before the heights are applied\n * @event Equalizer#preequalized\n */\n this.$element.trigger('preequalized.zf.equalizer');\n\n this.$watched.css('height', max);\n\n /**\n * Fires when the heights have been applied\n * @event Equalizer#postequalized\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row\n * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n * @fires Equalizer#preequalized\n * @fires Equalizer#preequalizedrow\n * @fires Equalizer#postequalizedrow\n * @fires Equalizer#postequalized\n */\n applyHeightByRow(groups) {\n /**\n * Fires before the heights are applied\n */\n this.$element.trigger('preequalized.zf.equalizer');\n for (var i = 0, len = groups.length; i < len ; i++) {\n var groupsILength = groups[i].length,\n max = groups[i][groupsILength - 1];\n if (groupsILength<=2) {\n $(groups[i][0][0]).css({'height':'auto'});\n continue;\n }\n /**\n * Fires before the heights per row are applied\n * @event Equalizer#preequalizedrow\n */\n this.$element.trigger('preequalizedrow.zf.equalizer');\n for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {\n $(groups[i][j][0]).css({'height':max});\n }\n /**\n * Fires when the heights per row have been applied\n * @event Equalizer#postequalizedrow\n */\n this.$element.trigger('postequalizedrow.zf.equalizer');\n }\n /**\n * Fires when the heights have been applied\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Destroys an instance of Equalizer.\n * @function\n */\n _destroy() {\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n}\n\n/**\n * Default settings for plugin\n */\nEqualizer.defaults = {\n /**\n * Enable height equalization when stacked on smaller screens.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeOnStack: false,\n /**\n * Enable height equalization row by row.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeByRow: false,\n /**\n * String representing the minimum breakpoint size the plugin should equalize heights on.\n * @option\n * @type {string}\n * @default ''\n */\n equalizeOn: ''\n};\n\nexport {Equalizer};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits, transitionend } from './foundation.core.utils';\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Drilldown module.\n * @module foundation.drilldown\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n * @requires foundation.util.box\n */\n\nclass Drilldown extends Plugin {\n /**\n * Creates a new instance of a drilldown menu.\n * @class\n * @name Drilldown\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);\n this.className = 'Drilldown'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('Drilldown', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the drilldown by creating jQuery collections of elements\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'drilldown');\n\n if(this.options.autoApplyClass) {\n this.$element.addClass('drilldown');\n }\n\n this.$element.attr({\n 'aria-multiselectable': false\n });\n this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n this.$menuItems = this.$element.find('li').not('.js-drilldown-back').find('a');\n\n // Set the main menu as current by default (unless a submenu is selected)\n // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu\n this.$currentMenu = this.$element;\n\n this.$element.attr('data-mutate', (this.$element.attr('data-drilldown') || GetYoDigits(6, 'drilldown')));\n\n this._prepareMenu();\n this._registerEvents();\n\n this._keyboardEvents();\n }\n\n /**\n * prepares drilldown menu by setting attributes to links and elements\n * sets a min height to prevent content jumping\n * wraps the element if not already wrapped\n * @private\n * @function\n */\n _prepareMenu() {\n var _this = this;\n // if(!this.options.holdOpen){\n // this._menuLinkEvents();\n // }\n this.$submenuAnchors.each(function(){\n var $link = $(this);\n var $sub = $link.parent();\n if(_this.options.parentLink){\n $link.clone().prependTo($sub.children('[data-submenu]')).wrap('
  • ');\n }\n $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n $link.children('[data-submenu]')\n .attr({\n 'aria-hidden': true,\n 'tabindex': 0,\n 'role': 'group'\n });\n _this._events($link);\n });\n this.$submenus.each(function(){\n var $menu = $(this),\n $back = $menu.find('.js-drilldown-back');\n if(!$back.length) {\n switch (_this.options.backButtonPosition) {\n case \"bottom\":\n $menu.append(_this.options.backButton);\n break;\n case \"top\":\n $menu.prepend(_this.options.backButton);\n break;\n default:\n console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n }\n }\n _this._back($menu);\n });\n\n this.$submenus.addClass('invisible');\n if(!this.options.autoHeight) {\n this.$submenus.addClass('drilldown-submenu-cover-previous');\n }\n\n // create a wrapper on element if it doesn't exist.\n if(!this.$element.parent().hasClass('is-drilldown')){\n this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');\n if(this.options.animateHeight) this.$wrapper.addClass('animate-height');\n this.$element.wrap(this.$wrapper);\n }\n // set wrapper\n this.$wrapper = this.$element.parent();\n this.$wrapper.css(this._getMaxDims());\n }\n\n _resize() {\n this.$wrapper.css({'max-width': 'none', 'min-height': 'none'});\n // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\n this.$wrapper.css(this._getMaxDims());\n }\n\n /**\n * Adds event handlers to elements in the menu.\n * @function\n * @private\n * @param {jQuery} $elem - the current menu item to add handlers to.\n */\n _events($elem) {\n var _this = this;\n\n $elem.off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e) {\n if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){\n e.preventDefault();\n }\n\n // if(e.target !== e.currentTarget.firstElementChild){\n // return false;\n // }\n _this._show($elem.parent('li'));\n\n if(_this.options.closeOnClick){\n var $body = $('body');\n $body.off('.zf.drilldown').on('click.zf.drilldown', function(ev) {\n if (ev.target === _this.$element[0] || $.contains(_this.$element[0], ev.target)) { return; }\n ev.preventDefault();\n _this._hideAll();\n $body.off('.zf.drilldown');\n });\n }\n });\n }\n\n /**\n * Adds event handlers to the menu element.\n * @function\n * @private\n */\n _registerEvents() {\n if(this.options.scrollTop){\n this._bindHandler = this._scrollTop.bind(this);\n this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);\n }\n this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n }\n\n /**\n * Scroll to Top of Element or data-scroll-top-element\n * @function\n * @fires Drilldown#scrollme\n */\n _scrollTop() {\n var _this = this;\n var $scrollTopElement = _this.options.scrollTopElement !== ''?$(_this.options.scrollTopElement):_this.$element,\n scrollPos = parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset, 10);\n $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing,function(){\n /**\n * Fires after the menu has scrolled\n * @event Drilldown#scrollme\n */\n if(this===$('html')[0])_this.$element.trigger('scrollme.zf.drilldown');\n });\n }\n\n /**\n * Adds keydown event listener to `li`'s in the menu.\n * @private\n */\n _keyboardEvents() {\n var _this = this;\n\n this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e){\n var $element = $(this),\n $elements = $element.parent('li').parent('ul').children('li').children('a'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n return;\n }\n });\n\n Keyboard.handleKey(e, 'Drilldown', {\n next: function() {\n if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n previous: function() {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n },\n up: function() {\n $prevElement.focus();\n // Don't tap focus on first element in root ul\n return !$element.is(_this.$element.find('> li:first-child > a'));\n },\n down: function() {\n $nextElement.focus();\n // Don't tap focus on last element in root ul\n return !$element.is(_this.$element.find('> li:last-child > a'));\n },\n close: function() {\n // Don't close on element in root ul\n if (!$element.is(_this.$element.find('> li > a'))) {\n _this._hide($element.parent().parent());\n $element.parent().parent().siblings('a').focus();\n }\n },\n open: function() {\n if (_this.options.parentLink && $element.attr('href')) { // Link with href\n return false;\n } else if (!$element.is(_this.$menuItems)) { // not menu item means back button\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n } else if ($element.is(_this.$submenuAnchors)) { // Sub menu item\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n }); // end keyboardAccess\n }\n\n /**\n * Closes all open elements, and returns to root menu.\n * @function\n * @fires Drilldown#close\n * @fires Drilldown#closed\n */\n _hideAll() {\n var $elem = this.$element.find('.is-drilldown-submenu.is-active')\n $elem.addClass('is-closing');\n $elem.parent().closest('ul').removeClass('invisible');\n\n if (this.options.autoHeight) {\n const calcHeight = $elem.parent().closest('ul').data('calcHeight');\n this.$wrapper.css({ height: calcHeight });\n }\n\n /**\n * Fires when the menu is closing.\n * @event Drilldown#close\n */\n this.$element.trigger('close.zf.drilldown');\n\n $elem.one(transitionend($elem), () => {\n $elem.removeClass('is-active is-closing');\n\n /**\n * Fires when the menu is fully closed.\n * @event Drilldown#closed\n */\n this.$element.trigger('closed.zf.drilldown');\n });\n }\n\n /**\n * Adds event listener for each `back` button, and closes open menus.\n * @function\n * @fires Drilldown#back\n * @param {jQuery} $elem - the current sub-menu to add `back` event.\n */\n _back($elem) {\n var _this = this;\n $elem.off('click.zf.drilldown');\n $elem.children('.js-drilldown-back')\n .on('click.zf.drilldown', function() {\n _this._hide($elem);\n\n // If there is a parent submenu, call show\n let parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n if (parentSubMenu.length) {\n _this._show(parentSubMenu);\n }\n else {\n _this.$currentMenu = _this.$element;\n }\n });\n }\n\n /**\n * Adds event listener to menu items w/o submenus to close open menus on click.\n * @function\n * @private\n */\n _menuLinkEvents() {\n var _this = this;\n this.$menuItems.not('.is-drilldown-submenu-parent')\n .off('click.zf.drilldown')\n .on('click.zf.drilldown', function() {\n setTimeout(function() {\n _this._hideAll();\n }, 0);\n });\n }\n\n /**\n * Sets the CSS classes for submenu to show it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setShowSubMenuClasses($elem, trigger) {\n $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n $elem.parent('li').attr('aria-expanded', true);\n if (trigger === true) {\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Sets the CSS classes for submenu to hide it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setHideSubMenuClasses($elem, trigger) {\n $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n $elem.parent('li').attr('aria-expanded', false);\n if (trigger === true) {\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n */\n _showMenu($elem, autoFocus) {\n\n var _this = this;\n\n // Reset drilldown\n var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n $expandedSubmenus.each(function() {\n _this._setHideSubMenuClasses($(this));\n });\n\n // Save the menu as the currently displayed one.\n this.$currentMenu = $elem;\n\n // If target menu is root, focus first link & exit\n if ($elem.is('[data-drilldown]')) {\n if (autoFocus === true) $elem.find('li > a').first().focus();\n if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n return;\n }\n\n // Find all submenus on way to root incl. the element itself\n var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n // Open target menu and all submenus on its way to root\n $submenus.each(function(index) {\n\n // Update height of first child (target menu) if autoHeight option true\n if (index === 0 && _this.options.autoHeight) {\n _this.$wrapper.css('height', $(this).data('calcHeight'));\n }\n\n var isLastChild = index === $submenus.length - 1;\n\n // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n // Last child makes sure the event gets always triggered even if going through several menus\n if (isLastChild === true) {\n $(this).one(transitionend($(this)), () => {\n if (autoFocus === true) {\n $elem.find('li > a').first().focus();\n }\n });\n }\n\n _this._setShowSubMenuClasses($(this), isLastChild);\n });\n }\n\n /**\n * Opens a submenu.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n */\n _show($elem) {\n const $submenu = $elem.children('[data-submenu]');\n\n $elem.attr('aria-expanded', true);\n\n this.$currentMenu = $submenu;\n\n //hide drilldown parent menu when submenu is open\n // this removes it from the dom so that the tab key will take the user to the next visible element\n $elem.parent().closest('ul').addClass('invisible');\n\n // add visible class to submenu to override invisible class above\n $submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden', false);\n\n if (this.options.autoHeight) {\n this.$wrapper.css({ height: $submenu.data('calcHeight') });\n }\n\n /**\n * Fires when the submenu has opened.\n * @event Drilldown#open\n */\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n\n /**\n * Hides a submenu\n * @function\n * @fires Drilldown#hide\n * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n */\n _hide($elem) {\n if(this.options.autoHeight) this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});\n $elem.parent().closest('ul').removeClass('invisible');\n $elem.parent('li').attr('aria-expanded', false);\n $elem.attr('aria-hidden', true);\n $elem.addClass('is-closing')\n .one(transitionend($elem), function(){\n $elem.removeClass('is-active is-closing visible');\n $elem.blur().addClass('invisible');\n });\n /**\n * Fires when the submenu has closed.\n * @event Drilldown#hide\n */\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n\n /**\n * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n * Prevents content jumping.\n * @function\n * @private\n */\n _getMaxDims() {\n var maxHeight = 0, result = {}, _this = this;\n\n // Recalculate menu heights and total max height\n this.$submenus.add(this.$element).each(function(){\n var height = Box.GetDimensions(this).height;\n\n maxHeight = height > maxHeight ? height : maxHeight;\n\n if(_this.options.autoHeight) {\n $(this).data('calcHeight',height);\n }\n });\n\n if (this.options.autoHeight)\n result.height = this.$currentMenu.data('calcHeight');\n else\n result['min-height'] = `${maxHeight}px`;\n\n result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`;\n\n return result;\n }\n\n /**\n * Destroys the Drilldown Menu\n * @function\n */\n _destroy() {\n $('body').off('.zf.drilldown');\n if(this.options.scrollTop) this.$element.off('.zf.drilldown',this._bindHandler);\n this._hideAll();\n\t this.$element.off('mutateme.zf.trigger');\n Nest.Burn(this.$element, 'drilldown');\n this.$element.unwrap()\n .find('.js-drilldown-back, .is-submenu-parent-item').remove()\n .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd')\n .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n this.$submenuAnchors.each(function() {\n $(this).off('.zf.drilldown');\n });\n\n this.$element.find('[data-is-parent-link]').detach();\n this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n this.$element.find('a').each(function(){\n var $link = $(this);\n $link.removeAttr('tabindex');\n if($link.data('savedHref')){\n $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n }else{ return; }\n });\n };\n}\n\nDrilldown.defaults = {\n /**\n * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n * @option\n * @type {boolean}\n * @default true\n */\n autoApplyClass: true,\n /**\n * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
  • Back
  • '\n */\n backButton: '
  • Back
  • ',\n /**\n * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n * @option\n * @type {string}\n * @default top\n */\n backButtonPosition: 'top',\n /**\n * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
    '\n */\n wrapper: '
    ',\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Allow the menu to return to root list on body click.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * Allow the menu to auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n autoHeight: false,\n /**\n * Animate the auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n animateHeight: false,\n /**\n * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n * @option\n * @type {boolean}\n * @default false\n */\n scrollTop: false,\n /**\n * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n * @option\n * @type {string}\n * @default ''\n */\n scrollTopElement: '',\n /**\n * ScrollTop offset\n * @option\n * @type {number}\n * @default 0\n */\n scrollTopOffset: 0,\n /**\n * Scroll animation duration\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Scroll animation easing. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @see {@link https://api.jquery.com/animate|JQuery animate}\n * @default 'swing'\n */\n animationEasing: 'swing'\n // holdOpen: false\n};\n\nexport {Drilldown};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { DropdownMenu } from './foundation.dropdownMenu';\nimport { Drilldown } from './foundation.drilldown';\nimport { AccordionMenu } from './foundation.accordionMenu';\n\nlet MenuPlugins = {\n dropdown: {\n cssClass: 'dropdown',\n plugin: DropdownMenu\n },\n drilldown: {\n cssClass: 'drilldown',\n plugin: Drilldown\n },\n accordion: {\n cssClass: 'accordion-menu',\n plugin: AccordionMenu\n }\n};\n\n // import \"foundation.util.triggers.js\";\n\n\n/**\n * ResponsiveMenu module.\n * @module foundation.responsiveMenu\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass ResponsiveMenu extends Plugin {\n /**\n * Creates a new instance of a responsive menu.\n * @class\n * @name ResponsiveMenu\n * @fires ResponsiveMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element) {\n this.$element = $(element);\n this.rules = this.$element.data('responsive-menu');\n this.currentMq = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveMenu'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.\n * @function\n * @private\n */\n _init() {\n\n MediaQuery._init();\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n // Add data-mutate since children may need it.\n this.$element.attr('data-mutate', (this.$element.attr('data-mutate') || GetYoDigits(6, 'responsive-menu')));\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).on('changed.zf.mediaquery', function() {\n _this._checkMediaQueries();\n });\n // $(window).on('resize.zf.ResponsiveMenu', function() {\n // _this._checkMediaQueries();\n // });\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) this.currentPlugin.destroy();\n this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n this.currentPlugin.destroy();\n $(window).off('.zf.ResponsiveMenu');\n }\n}\n\nResponsiveMenu.defaults = {};\n\nexport {ResponsiveMenu};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * ResponsiveToggle module.\n * @module foundation.responsiveToggle\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion\n */\n\nclass ResponsiveToggle extends Plugin {\n /**\n * Creates a new instance of Tab Bar.\n * @class\n * @name ResponsiveToggle\n * @fires ResponsiveToggle#init\n * @param {jQuery} element - jQuery object to attach tab bar functionality to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n this.className = 'ResponsiveToggle'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the tab bar by finding the target element, toggling element, and running update().\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n var targetID = this.$element.data('responsive-toggle');\n if (!targetID) {\n console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n }\n\n this.$targetMenu = $(`#${targetID}`);\n this.$toggler = this.$element.find('[data-toggle]').filter(function() {\n var target = $(this).data('toggle');\n return (target === targetID || target === \"\");\n });\n this.options = $.extend({}, this.options, this.$targetMenu.data());\n\n // If they were set, parse the animation classes\n if(this.options.animate) {\n let input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n }\n\n this._update();\n }\n\n /**\n * Adds necessary event handlers for the tab bar to work.\n * @function\n * @private\n */\n _events() {\n this._updateMqHandler = this._update.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n }\n\n /**\n * Checks the current media query to determine if the tab bar should be visible or hidden.\n * @function\n * @private\n */\n _update() {\n // Mobile\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n this.$element.show();\n this.$targetMenu.hide();\n }\n\n // Desktop\n else {\n this.$element.hide();\n this.$targetMenu.show();\n }\n }\n\n /**\n * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.\n * @function\n * @fires ResponsiveToggle#toggled\n */\n toggleMenu() {\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n /**\n * Fires when the element attached to the tab bar toggles.\n * @event ResponsiveToggle#toggled\n */\n if(this.options.animate) {\n if (this.$targetMenu.is(':hidden')) {\n Motion.animateIn(this.$targetMenu, this.animationIn, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n this.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$targetMenu, this.animationOut, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n });\n }\n }\n else {\n this.$targetMenu.toggle(0);\n this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n this.$element.trigger('toggled.zf.responsiveToggle');\n }\n }\n };\n\n _destroy() {\n this.$element.off('.zf.responsiveToggle');\n this.$toggler.off('.zf.responsiveToggle');\n\n $(window).off('changed.zf.mediaquery', this._updateMqHandler);\n }\n}\n\nResponsiveToggle.defaults = {\n /**\n * The breakpoint after which the menu is always shown, and the tab bar is hidden.\n * @option\n * @type {string}\n * @default 'medium'\n */\n hideFor: 'medium',\n\n /**\n * To decide if the toggle should be animated or not.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport { ResponsiveToggle };\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n /**\n * Creates a new instance of Reveal.\n * @class\n * @name Reveal\n * @param {jQuery} element - jQuery object to use for the modal.\n * @param {Object} options - optional parameters.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n this.className = 'Reveal'; // ie9 back compat\n this._init();\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n Keyboard.register('Reveal', {\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the modal by adding the overlay and close buttons, (if selected).\n * @private\n */\n _init() {\n MediaQuery._init();\n this.id = this.$element.attr('id');\n this.isActive = false;\n this.cached = {mq: MediaQuery.current};\n\n this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n this.$anchor.attr({\n 'aria-controls': this.id,\n 'aria-haspopup': 'dialog',\n 'tabindex': 0\n });\n\n if (this.options.fullScreen || this.$element.hasClass('full')) {\n this.options.fullScreen = true;\n this.options.overlay = false;\n }\n if (this.options.overlay && !this.$overlay) {\n this.$overlay = this._makeOverlay(this.id);\n }\n\n this.$element.attr({\n 'role': 'dialog',\n 'aria-hidden': true,\n 'data-yeti-box': this.id,\n 'data-resize': this.id\n });\n\n if(this.$overlay) {\n this.$element.detach().appendTo(this.$overlay);\n } else {\n this.$element.detach().appendTo($(this.options.appendTo));\n this.$element.addClass('without-overlay');\n }\n this._events();\n if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n this.onLoadListener = onLoad($(window), () => this.open());\n }\n }\n\n /**\n * Creates an overlay div to display behind the modal.\n * @private\n */\n _makeOverlay() {\n var additionalOverlayClasses = '';\n\n if (this.options.additionalOverlayClasses) {\n additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n }\n\n return $('
    ')\n .addClass('reveal-overlay' + additionalOverlayClasses)\n .appendTo(this.options.appendTo);\n }\n\n /**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */\n _updatePosition() {\n var width = this.$element.outerWidth();\n var outerWidth = $(window).width();\n var height = this.$element.outerHeight();\n var outerHeight = $(window).height();\n var left, top = null;\n if (this.options.hOffset === 'auto') {\n left = parseInt((outerWidth - width) / 2, 10);\n } else {\n left = parseInt(this.options.hOffset, 10);\n }\n if (this.options.vOffset === 'auto') {\n if (height > outerHeight) {\n top = parseInt(Math.min(100, outerHeight / 10), 10);\n } else {\n top = parseInt((outerHeight - height) / 4, 10);\n }\n } else if (this.options.vOffset !== null) {\n top = parseInt(this.options.vOffset, 10);\n }\n\n if (top !== null) {\n this.$element.css({top: top + 'px'});\n }\n\n // only worry about left if we don't have an overlay or we have a horizontal offset,\n // otherwise we're perfectly in the middle\n if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n this.$element.css({left: left + 'px'});\n this.$element.css({margin: '0px'});\n }\n\n }\n\n /**\n * Adds event handlers for the modal.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': (event, $element) => {\n if ((event.target === _this.$element[0]) ||\n ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n return this.close.apply(this);\n }\n },\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': function() {\n _this._updatePosition();\n }\n });\n\n if (this.options.closeOnClick && this.options.overlay) {\n this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) {\n return;\n }\n _this.close();\n });\n }\n if (this.options.deepLink) {\n $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n }\n }\n\n /**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */\n _handleState() {\n if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n else{ this.close(); }\n }\n\n /**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */\n _disableScroll(scrollTop) {\n scrollTop = scrollTop || $(window).scrollTop();\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", -scrollTop);\n }\n }\n\n /**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */\n _enableScroll(scrollTop) {\n scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"), 10);\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", \"\");\n $(window).scrollTop(-scrollTop);\n }\n }\n\n\n /**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */\n open() {\n // either update or replace browser history\n const hash = `#${this.id}`;\n if (this.options.deepLink && window.location.hash !== hash) {\n\n if (window.history.pushState) {\n if (this.options.updateHistory) {\n window.history.pushState({}, '', hash);\n } else {\n window.history.replaceState({}, '', hash);\n }\n } else {\n window.location.hash = hash;\n }\n }\n\n // Remember anchor that opened it to set focus back later, have general anchors as fallback\n this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n this.isActive = true;\n\n // Make elements invisible, but remove display: none so we can get size and positioning\n this.$element\n .css({ 'visibility': 'hidden' })\n .show()\n .scrollTop(0);\n if (this.options.overlay) {\n this.$overlay.css({'visibility': 'hidden'}).show();\n }\n\n this._updatePosition();\n\n this.$element\n .hide()\n .css({ 'visibility': '' });\n\n if(this.$overlay) {\n this.$overlay.css({'visibility': ''}).hide();\n if(this.$element.hasClass('fast')) {\n this.$overlay.addClass('fast');\n } else if (this.$element.hasClass('slow')) {\n this.$overlay.addClass('slow');\n }\n }\n\n\n if (!this.options.multipleOpened) {\n /**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */\n this.$element.trigger('closeme.zf.reveal', this.id);\n }\n\n if ($('.reveal:visible').length === 0) {\n this._disableScroll();\n }\n\n var _this = this;\n\n // Motion UI method of reveal\n if (this.options.animationIn) {\n function afterAnimation(){\n _this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n _this._addGlobalClasses();\n Keyboard.trapFocus(_this.$element);\n }\n if (this.options.overlay) {\n Motion.animateIn(this.$overlay, 'fade-in');\n }\n Motion.animateIn(this.$element, this.options.animationIn, () => {\n if(this.$element) { // protect against object having been removed\n this.focusableElements = Keyboard.findFocusable(this.$element);\n afterAnimation();\n }\n });\n }\n // jQuery method of reveal\n else {\n if (this.options.overlay) {\n this.$overlay.show(0);\n }\n this.$element.show(this.options.showDelay);\n }\n\n // handle accessibility\n this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n Keyboard.trapFocus(this.$element);\n\n this._addGlobalClasses();\n\n this._addGlobalListeners();\n\n /**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */\n this.$element.trigger('open.zf.reveal');\n }\n\n /**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */\n _addGlobalClasses() {\n const updateScrollbarClass = () => {\n $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n };\n\n this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n updateScrollbarClass();\n $('html').addClass('is-reveal-open');\n }\n\n /**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */\n _removeGlobalClasses() {\n this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n $('html').removeClass('is-reveal-open');\n $('html').removeClass('zf-has-scroll');\n }\n\n /**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */\n _addGlobalListeners() {\n var _this = this;\n if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n this.focusableElements = Keyboard.findFocusable(this.$element);\n\n if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) { return; }\n _this.close();\n });\n }\n\n if (this.options.closeOnEsc) {\n $(window).on('keydown.zf.reveal', function(e) {\n Keyboard.handleKey(e, 'Reveal', {\n close: function() {\n if (_this.options.closeOnEsc) {\n _this.close();\n }\n }\n });\n });\n }\n }\n\n /**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */\n close() {\n if (!this.isActive || !this.$element.is(':visible')) {\n return false;\n }\n var _this = this;\n\n // Motion UI method of hiding\n if (this.options.animationOut) {\n if (this.options.overlay) {\n Motion.animateOut(this.$overlay, 'fade-out');\n }\n\n Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n }\n // jQuery method of hiding\n else {\n this.$element.hide(this.options.hideDelay);\n\n if (this.options.overlay) {\n this.$overlay.hide(0, finishUp);\n }\n else {\n finishUp();\n }\n }\n\n // Conditionals to remove extra event listeners added on open\n if (this.options.closeOnEsc) {\n $(window).off('keydown.zf.reveal');\n }\n\n if (!this.options.overlay && this.options.closeOnClick) {\n $('body').off('click.zf.dropdown tap.zf.dropdown');\n }\n\n this.$element.off('keydown.zf.reveal');\n\n function finishUp() {\n\n // Get the current top before the modal is closed and restore the scroll after.\n // TODO: use component properties instead of HTML properties\n // See https://github.com/foundation/foundation-sites/pull/10786\n var scrollTop = parseInt($(\"html\").css(\"top\"), 10);\n\n if ($('.reveal:visible').length === 0) {\n _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n\n Keyboard.releaseFocus(_this.$element);\n\n _this.$element.attr('aria-hidden', true);\n\n if ($('.reveal:visible').length === 0) {\n _this._enableScroll(scrollTop);\n }\n\n /**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */\n _this.$element.trigger('closed.zf.reveal');\n }\n\n /**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */\n if (this.options.resetOnClose) {\n this.$element.html(this.$element.html());\n }\n\n this.isActive = false;\n // If deepLink and we did not switched to an other modal...\n if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n // Remove the history hash\n if (window.history.replaceState) {\n const urlWithoutHash = window.location.pathname + window.location.search;\n if (this.options.updateHistory) {\n window.history.pushState({}, '', urlWithoutHash); // remove the hash\n } else {\n window.history.replaceState('', document.title, urlWithoutHash);\n }\n } else {\n window.location.hash = '';\n }\n }\n\n this.$activeAnchor.focus();\n }\n\n /**\n * Toggles the open/closed state of a modal.\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.close();\n } else {\n this.open();\n }\n };\n\n /**\n * Destroys an instance of a modal.\n * @function\n */\n _destroy() {\n if (this.options.overlay) {\n this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n this.$overlay.hide().off().remove();\n }\n this.$element.hide().off();\n this.$anchor.off('.zf');\n $(window).off(`.zf.reveal:${this.id}`)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n if ($('.reveal:visible').length === 0) {\n this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n };\n}\n\nReveal.defaults = {\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationIn: '',\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationOut: '',\n /**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n showDelay: 0,\n /**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n hideDelay: 0,\n /**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnEsc: true,\n /**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */\n multipleOpened: false,\n /**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n vOffset: 'auto',\n /**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n hOffset: 'auto',\n /**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */\n fullScreen: false,\n /**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */\n overlay: true,\n /**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */\n resetOnClose: false,\n /**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */\n updateHistory: false,\n /**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */\n appendTo: \"body\",\n /**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */\n additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Move } from './foundation.util.motion';\nimport { GetYoDigits, rtl as Rtl } from './foundation.core.utils';\n\nimport { Plugin } from './foundation.core.plugin';\n\nimport { Touch } from './foundation.util.touch';\n\nimport { Triggers } from './foundation.util.triggers';\n/**\n * Slider module.\n * @module foundation.slider\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n */\n\nclass Slider extends Plugin {\n /**\n * Creates a new instance of a slider control.\n * @class\n * @name Slider\n * @param {jQuery} element - jQuery object to make into a slider control.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Slider.defaults, this.$element.data(), options);\n this.className = 'Slider'; // ie9 back compat\n this.initialized = false;\n\n // Touch and Triggers inits are idempotent, we just need to make sure it's initialied.\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Slider', {\n 'ltr': {\n 'ARROW_RIGHT': 'increase',\n 'ARROW_UP': 'increase',\n 'ARROW_DOWN': 'decrease',\n 'ARROW_LEFT': 'decrease',\n 'SHIFT_ARROW_RIGHT': 'increaseFast',\n 'SHIFT_ARROW_UP': 'increaseFast',\n 'SHIFT_ARROW_DOWN': 'decreaseFast',\n 'SHIFT_ARROW_LEFT': 'decreaseFast',\n 'HOME': 'min',\n 'END': 'max'\n },\n 'rtl': {\n 'ARROW_LEFT': 'increase',\n 'ARROW_RIGHT': 'decrease',\n 'SHIFT_ARROW_LEFT': 'increaseFast',\n 'SHIFT_ARROW_RIGHT': 'decreaseFast'\n }\n });\n }\n\n /**\n * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).\n * @function\n * @private\n */\n _init() {\n this.inputs = this.$element.find('input');\n this.handles = this.$element.find('[data-slider-handle]');\n\n this.$handle = this.handles.eq(0);\n this.$input = this.inputs.length ? this.inputs.eq(0) : $(`#${this.$handle.attr('aria-controls')}`);\n this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);\n\n if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {\n this.options.disabled = true;\n this.$element.addClass(this.options.disabledClass);\n }\n if (!this.inputs.length) {\n this.inputs = $().add(this.$input);\n this.options.binding = true;\n }\n\n this._setInitAttr(0);\n\n if (this.handles[1]) {\n this.options.doubleSided = true;\n this.$handle2 = this.handles.eq(1);\n this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $(`#${this.$handle2.attr('aria-controls')}`);\n\n if (!this.inputs[1]) {\n this.inputs = this.inputs.add(this.$input2);\n }\n\n // this.$handle.triggerHandler('click.zf.slider');\n this._setInitAttr(1);\n }\n\n // Set handle positions\n this.setHandles();\n\n this._events();\n this.initialized = true;\n }\n\n setHandles() {\n if(this.handles[1]) {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val(), () => {\n this._setHandlePos(this.$handle2, this.inputs.eq(1).val());\n });\n } else {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val());\n }\n }\n\n _reflow() {\n this.setHandles();\n }\n /**\n * @function\n * @private\n * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)\n */\n _pctOfBar(value) {\n var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start)\n\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n }\n\n return pctOfBar.toFixed(2)\n }\n\n /**\n * @function\n * @private\n * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value\n */\n _value(pctOfBar) {\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n }\n\n var value\n if (this.options.vertical) {\n // linear interpolation which is working with negative values for start\n // https://math.stackexchange.com/a/1019084\n value = parseFloat(this.options.end) + pctOfBar * (this.options.start - this.options.end)\n } else {\n value = (this.options.end - this.options.start) * pctOfBar + parseFloat(this.options.start);\n }\n\n return value\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function\n */\n _logTransform(value) {\n return baseLog(this.options.nonLinearBase, ((value*(this.options.nonLinearBase-1))+1))\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function\n */\n _powTransform(value) {\n return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1)\n }\n\n /**\n * Sets the position of the selected handle and fill bar.\n * @function\n * @private\n * @param {jQuery} $hndl - the selected handle to move.\n * @param {Number} location - floating point between the start and end values of the slider bar.\n * @param {Function} cb - callback function to fire on completion.\n * @fires Slider#moved\n * @fires Slider#changed\n */\n _setHandlePos($hndl, location, cb) {\n // don't move if the slider has been disabled since its initialization\n if (this.$element.hasClass(this.options.disabledClass)) {\n return;\n }\n //might need to alter that slightly for bars that will have odd number selections.\n location = parseFloat(location);//on input change events, convert string to number...grumble.\n\n // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max\n if (location < this.options.start) { location = this.options.start; }\n else if (location > this.options.end) { location = this.options.end; }\n\n var isDbl = this.options.doubleSided;\n\n if (isDbl) { //this block is to prevent 2 handles from crossing eachother. Could/should be improved.\n if (this.handles.index($hndl) === 0) {\n var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));\n location = location >= h2Val ? h2Val - this.options.step : location;\n } else {\n var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));\n location = location <= h1Val ? h1Val + this.options.step : location;\n }\n }\n\n var _this = this,\n vert = this.options.vertical,\n hOrW = vert ? 'height' : 'width',\n lOrT = vert ? 'top' : 'left',\n handleDim = $hndl[0].getBoundingClientRect()[hOrW],\n elemDim = this.$element[0].getBoundingClientRect()[hOrW],\n //percentage of bar min/max value based on click or drag point\n pctOfBar = this._pctOfBar(location),\n //number of actual pixels to shift the handle, based on the percentage obtained above\n pxToMove = (elemDim - handleDim) * pctOfBar,\n //percentage of bar to shift the handle\n movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal);\n //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value\n location = parseFloat(location.toFixed(this.options.decimal));\n // declare empty object for css adjustments, only used with 2 handled-sliders\n var css = {};\n\n this._setValues($hndl, location);\n\n // TODO update to calculate based on values set to respective inputs??\n if (isDbl) {\n var isLeftHndl = this.handles.index($hndl) === 0,\n //empty variable, will be used for min-height/width for fill bar\n dim,\n //percentage w/h of the handle compared to the slider bar\n handlePct = Math.floor(percent(handleDim, elemDim) * 100);\n //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar\n if (isLeftHndl) {\n //left or top percentage value to apply to the fill bar.\n css[lOrT] = `${movement}%`;\n //calculate the new min-height/width for the fill bar.\n dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;\n //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider\n //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.\n if (cb && typeof cb === 'function') { cb(); }//this is only needed for the initialization of 2 handled sliders\n } else {\n //just caching the value of the left/bottom handle's left/top property\n var handlePos = parseFloat(this.$handle[0].style[lOrT]);\n //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0\n //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself\n dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start)/((this.options.end-this.options.start)/100) : handlePos) + handlePct;\n }\n // assign the min-height/width to our css object\n css[`min-${hOrW}`] = `${dim}%`;\n }\n\n //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.\n var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime;\n\n Move(moveTime, $hndl, function() {\n // adjusting the left/top property of the handle, based on the percentage calculated above\n // if movement isNaN, that is because the slider is hidden and we cannot determine handle width,\n // fall back to next best guess.\n if (isNaN(movement)) {\n $hndl.css(lOrT, `${pctOfBar * 100}%`);\n }\n else {\n $hndl.css(lOrT, `${movement}%`);\n }\n\n if (!_this.options.doubleSided) {\n //if single-handled, a simple method to expand the fill bar\n _this.$fill.css(hOrW, `${pctOfBar * 100}%`);\n } else {\n //otherwise, use the css object we created above\n _this.$fill.css(css);\n }\n });\n\n if (this.initialized) {\n this.$element.one('finished.zf.animate', function() {\n /**\n * Fires when the handle is done moving.\n * @event Slider#moved\n */\n _this.$element.trigger('moved.zf.slider', [$hndl]);\n });\n /**\n * Fires when the value has not been change for a given time.\n * @event Slider#changed\n */\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.$element.trigger('changed.zf.slider', [$hndl]);\n }, _this.options.changedDelay);\n }\n }\n\n /**\n * Sets the initial attribute for the slider element.\n * @function\n * @private\n * @param {Number} idx - index of the current handle/input to use.\n */\n _setInitAttr(idx) {\n var initVal = (idx === 0 ? this.options.initialStart : this.options.initialEnd)\n var id = this.inputs.eq(idx).attr('id') || GetYoDigits(6, 'slider');\n this.inputs.eq(idx).attr({\n 'id': id,\n 'max': this.options.end,\n 'min': this.options.start,\n 'step': this.options.step\n });\n this.inputs.eq(idx).val(initVal);\n this.handles.eq(idx).attr({\n 'role': 'slider',\n 'aria-controls': id,\n 'aria-valuemax': this.options.end,\n 'aria-valuemin': this.options.start,\n 'aria-valuenow': initVal,\n 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',\n 'tabindex': 0\n });\n }\n\n /**\n * Sets the input and `aria-valuenow` values for the slider element.\n * @function\n * @private\n * @param {jQuery} $handle - the currently selected handle.\n * @param {Number} val - floating point of the new value.\n */\n _setValues($handle, val) {\n var idx = this.options.doubleSided ? this.handles.index($handle) : 0;\n this.inputs.eq(idx).val(val);\n $handle.attr('aria-valuenow', val);\n }\n\n /**\n * Handles events on the slider element.\n * Calculates the new location of the current handle.\n * If there are two handles and the bar was clicked, it determines which handle to move.\n * @function\n * @private\n * @param {Object} e - the `event` object passed from the listener.\n * @param {jQuery} $handle - the current handle to calculate for, if selected.\n * @param {Number} val - floating point number for the new value of the slider.\n * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.\n */\n _handleEvent(e, $handle, val) {\n var value;\n if (!val) {//click or drag events\n e.preventDefault();\n var _this = this,\n vertical = this.options.vertical,\n param = vertical ? 'height' : 'width',\n direction = vertical ? 'top' : 'left',\n eventOffset = vertical ? e.pageY : e.pageX,\n barDim = this.$element[0].getBoundingClientRect()[param],\n windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft();\n\n var elemOffset = this.$element.offset()[direction];\n\n // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...\n // best way to guess this is simulated is if clientY == pageY\n if (e.clientY === e.pageY) { eventOffset = eventOffset + windowScroll; }\n var eventFromBar = eventOffset - elemOffset;\n var barXY;\n if (eventFromBar < 0) {\n barXY = 0;\n } else if (eventFromBar > barDim) {\n barXY = barDim;\n } else {\n barXY = eventFromBar;\n }\n var offsetPct = percent(barXY, barDim);\n\n value = this._value(offsetPct);\n\n // turn everything around for RTL, yay math!\n if (Rtl() && !this.options.vertical) {value = this.options.end - value;}\n\n value = _this._adjustValue(null, value);\n\n if (!$handle) {//figure out which handle it is, pass it to the next function.\n var firstHndlPos = absPosition(this.$handle, direction, barXY, param),\n secndHndlPos = absPosition(this.$handle2, direction, barXY, param);\n $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;\n }\n\n } else {//change event on input\n value = this._adjustValue(null, val);\n }\n\n this._setHandlePos($handle, value);\n }\n\n /**\n * Adjustes value for handle in regard to step value. returns adjusted value\n * @function\n * @private\n * @param {jQuery} $handle - the selected handle.\n * @param {Number} value - value to adjust. used if $handle is falsy\n */\n _adjustValue($handle, value) {\n var val,\n step = this.options.step,\n div = parseFloat(step/2),\n left, previousVal, nextVal;\n if (!!$handle) {\n val = parseFloat($handle.attr('aria-valuenow'));\n }\n else {\n val = value;\n }\n if (val >= 0) {\n left = val % step;\n } else {\n left = step + (val % step);\n }\n previousVal = val - left;\n nextVal = previousVal + step;\n if (left === 0) {\n return val;\n }\n val = val >= previousVal + div ? nextVal : previousVal;\n return val;\n }\n\n /**\n * Adds event listeners to the slider elements.\n * @function\n * @private\n */\n _events() {\n this._eventsForHandle(this.$handle);\n if(this.handles[1]) {\n this._eventsForHandle(this.$handle2);\n }\n }\n\n\n /**\n * Adds event listeners a particular handle\n * @function\n * @private\n * @param {jQuery} $handle - the current handle to apply listeners to.\n */\n _eventsForHandle($handle) {\n var _this = this,\n curHandle;\n\n const handleChangeEvent = function(e) {\n const idx = _this.inputs.index($(this));\n _this._handleEvent(e, _this.handles.eq(idx), $(this).val());\n };\n\n // IE only triggers the change event when the input loses focus which strictly follows the HTML specification\n // listen for the enter key and trigger a change\n // @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events\n this.inputs.off('keyup.zf.slider').on('keyup.zf.slider', function (e) {\n if(e.keyCode === 13) handleChangeEvent.call(this, e);\n });\n\n this.inputs.off('change.zf.slider').on('change.zf.slider', handleChangeEvent);\n\n if (this.options.clickSelect) {\n this.$element.off('click.zf.slider').on('click.zf.slider', function(e) {\n if (_this.$element.data('dragging')) { return false; }\n\n if (!$(e.target).is('[data-slider-handle]')) {\n if (_this.options.doubleSided) {\n _this._handleEvent(e);\n } else {\n _this._handleEvent(e, _this.$handle);\n }\n }\n });\n }\n\n if (this.options.draggable) {\n this.handles.addTouch();\n\n var $body = $('body');\n $handle\n .off('mousedown.zf.slider')\n .on('mousedown.zf.slider', function(e) {\n $handle.addClass('is-dragging');\n _this.$fill.addClass('is-dragging');//\n _this.$element.data('dragging', true);\n\n curHandle = $(e.currentTarget);\n\n $body.on('mousemove.zf.slider', function(ev) {\n ev.preventDefault();\n _this._handleEvent(ev, curHandle);\n\n }).on('mouseup.zf.slider', function(ev) {\n _this._handleEvent(ev, curHandle);\n\n $handle.removeClass('is-dragging');\n _this.$fill.removeClass('is-dragging');\n _this.$element.data('dragging', false);\n\n $body.off('mousemove.zf.slider mouseup.zf.slider');\n });\n })\n // prevent events triggered by touch\n .on('selectstart.zf.slider touchmove.zf.slider', function(e) {\n e.preventDefault();\n });\n }\n\n $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e) {\n var _$handle = $(this),\n idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,\n oldValue = parseFloat($handle.attr('aria-valuenow')),\n newValue;\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Slider', {\n decrease: function() {\n newValue = oldValue - _this.options.step;\n },\n increase: function() {\n newValue = oldValue + _this.options.step;\n },\n decreaseFast: function() {\n newValue = oldValue - _this.options.step * 10;\n },\n increaseFast: function() {\n newValue = oldValue + _this.options.step * 10;\n },\n min: function() {\n newValue = _this.options.start;\n },\n max: function() {\n newValue = _this.options.end;\n },\n handled: function() { // only set handle pos when event was handled specially\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }\n });\n /*if (newValue) { // if pressed key has special function, update value\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }*/\n });\n }\n\n /**\n * Destroys the slider plugin.\n */\n _destroy() {\n this.handles.off('.zf.slider');\n this.inputs.off('.zf.slider');\n this.$element.off('.zf.slider');\n\n clearTimeout(this.timeout);\n }\n}\n\nSlider.defaults = {\n /**\n * Minimum value for the slider scale.\n * @option\n * @type {number}\n * @default 0\n */\n start: 0,\n /**\n * Maximum value for the slider scale.\n * @option\n * @type {number}\n * @default 100\n */\n end: 100,\n /**\n * Minimum value change per change event.\n * @option\n * @type {number}\n * @default 1\n */\n step: 1,\n /**\n * Value at which the handle/input *(left handle/first input)* should be set to on initialization.\n * @option\n * @type {number}\n * @default 0\n */\n initialStart: 0,\n /**\n * Value at which the right handle/second input should be set to on initialization.\n * @option\n * @type {number}\n * @default 100\n */\n initialEnd: 100,\n /**\n * Allows the input to be located outside the container and visible. Set to by the JS\n * @option\n * @type {boolean}\n * @default false\n */\n binding: false,\n /**\n * Allows the user to click/tap on the slider bar to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n clickSelect: true,\n /**\n * Set to true and use the `vertical` class to change alignment to vertical.\n * @option\n * @type {boolean}\n * @default false\n */\n vertical: false,\n /**\n * Allows the user to drag the slider handle(s) to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n draggable: true,\n /**\n * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.\n * @option\n * @type {boolean}\n * @default false\n */\n disabled: false,\n /**\n * Allows the use of two handles. Double checked by the JS. Changes some logic handling.\n * @option\n * @type {boolean}\n * @default false\n */\n doubleSided: false,\n /**\n * Potential future feature.\n */\n // steps: 100,\n /**\n * Number of decimal places the plugin should go to for floating point precision.\n * @option\n * @type {number}\n * @default 2\n */\n decimal: 2,\n /**\n * Time delay for dragged elements.\n */\n // dragDelay: 0,\n /**\n * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.\n * @option\n * @type {number}\n * @default 200\n */\n moveTime: 200,//update this if changing the transition time in the sass\n /**\n * Class applied to disabled sliders.\n * @option\n * @type {string}\n * @default 'disabled'\n */\n disabledClass: 'disabled',\n /**\n * Will invert the default layout for a vertical slider.\n * @option\n * @type {boolean}\n * @default false\n */\n invertVertical: false,\n /**\n * Milliseconds before the `changed.zf-slider` event is triggered after value change.\n * @option\n * @type {number}\n * @default 500\n */\n changedDelay: 500,\n /**\n * Basevalue for non-linear sliders\n * @option\n * @type {number}\n * @default 5\n */\n nonLinearBase: 5,\n /**\n * Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.\n * @option\n * @type {string}\n * @default 'linear'\n */\n positionValueFunction: 'linear',\n};\n\nfunction percent(frac, num) {\n return (frac / num);\n}\nfunction absPosition($handle, dir, clickPos, param) {\n return Math.abs(($handle.position()[dir] + ($handle[param]() / 2)) - clickPos);\n}\nfunction baseLog(base, value) {\n return Math.log(value)/Math.log(base)\n}\n\nexport {Slider};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * SmoothScroll module.\n * @module foundation.smoothScroll\n */\nclass SmoothScroll extends Plugin {\n /**\n * Creates a new instance of SmoothScroll.\n * @class\n * @name SmoothScroll\n * @fires SmoothScroll#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, SmoothScroll.defaults, this.$element.data(), options);\n this.className = 'SmoothScroll'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initialize the SmoothScroll plugin\n * @private\n */\n _init() {\n const id = this.$element[0].id || GetYoDigits(6, 'smooth-scroll');\n this.$element.attr({ id });\n\n this._events();\n }\n\n /**\n * Initializes events for SmoothScroll.\n * @private\n */\n _events() {\n this._linkClickListener = this._handleLinkClick.bind(this);\n this.$element.on('click.zf.smoothScroll', this._linkClickListener);\n this.$element.on('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n\n /**\n * Handle the given event to smoothly scroll to the anchor pointed by the event target.\n * @param {*} e - event\n * @function\n * @private\n */\n _handleLinkClick(e) {\n // Follow the link if it does not point to an anchor.\n if (!$(e.currentTarget).is('a[href^=\"#\"]')) return;\n\n const arrival = e.currentTarget.getAttribute('href');\n\n this._inTransition = true;\n\n SmoothScroll.scrollToLoc(arrival, this.options, () => {\n this._inTransition = false;\n });\n\n e.preventDefault();\n };\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'\n * @param {Object} options - The options to use.\n * @param {Function} callback - The callback function.\n * @static\n * @function\n */\n static scrollToLoc(loc, options = SmoothScroll.defaults, callback) {\n const $loc = $(loc);\n\n // Do nothing if target does not exist to prevent errors\n if (!$loc.length) return false;\n\n var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);\n\n $('html, body').stop(true).animate(\n { scrollTop: scrollPos },\n options.animationDuration,\n options.animationEasing,\n () => {\n if (typeof callback === 'function'){\n callback();\n }\n }\n );\n }\n\n /**\n * Destroys the SmoothScroll instance.\n * @function\n */\n _destroy() {\n this.$element.off('click.zf.smoothScroll', this._linkClickListener)\n this.$element.off('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n}\n\n/**\n * Default settings for plugin.\n */\nSmoothScroll.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {SmoothScroll}\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n /**\n * Creates a new instance of a sticky thing.\n * @class\n * @name Sticky\n * @param {jQuery} element - jQuery object to make sticky.\n * @param {Object} options - options object passed when creating the element programmatically.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n this.className = 'Sticky'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var $parent = this.$element.parent('[data-sticky-container]'),\n id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n _this = this;\n\n if($parent.length){\n this.$container = $parent;\n } else {\n this.wasWrapped = true;\n this.$element.wrap(this.options.container);\n this.$container = this.$element.parent();\n }\n this.$container.addClass(this.options.containerClass);\n\n this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n if (this.options.anchor !== '') {\n $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n }\n\n this.scrollCount = this.options.checkEvery;\n this.isStuck = false;\n this.onLoadListener = onLoad($(window), function () {\n //We calculate the container height to have correct values for anchor points offset calculation.\n _this.containerHeight = _this.$element.css(\"display\") === \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n _this.$container.css('height', _this.containerHeight);\n _this.elemHeight = _this.containerHeight;\n if (_this.options.anchor !== '') {\n _this.$anchor = $('#' + _this.options.anchor);\n } else {\n _this._parsePoints();\n }\n\n _this._setSizes(function () {\n var scroll = window.pageYOffset;\n _this._calc(false, scroll);\n //Unstick the element will ensure that proper classes are set.\n if (!_this.isStuck) {\n _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n }\n });\n _this._events(id.split('-').reverse().join('-'));\n });\n }\n\n /**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */\n _parsePoints() {\n var top = this.options.topAnchor === \"\" ? 1 : this.options.topAnchor,\n btm = this.options.btmAnchor === \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n pts = [top, btm],\n breaks = {};\n for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n var pt;\n if (typeof pts[i] === 'number') {\n pt = pts[i];\n } else {\n var place = pts[i].split(':'),\n anchor = $(`#${place[0]}`);\n\n pt = anchor.offset().top;\n if (place[1] && place[1].toLowerCase() === 'bottom') {\n pt += anchor[0].getBoundingClientRect().height;\n }\n }\n breaks[i] = pt;\n }\n\n\n this.points = breaks;\n return;\n }\n\n /**\n * Adds event handlers for the scrolling element.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _events(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n if (this.isOn) { return; }\n if (this.canStick) {\n this.isOn = true;\n $(window).off(scrollListener)\n .on(scrollListener, function() {\n if (_this.scrollCount === 0) {\n _this.scrollCount = _this.options.checkEvery;\n _this._setSizes(function() {\n _this._calc(false, window.pageYOffset);\n });\n } else {\n _this.scrollCount--;\n _this._calc(false, window.pageYOffset);\n }\n });\n }\n\n this.$element.off('resizeme.zf.trigger')\n .on('resizeme.zf.trigger', function() {\n _this._eventsHandler(id);\n });\n\n this.$element.on('mutateme.zf.trigger', function () {\n _this._eventsHandler(id);\n });\n\n if(this.$anchor) {\n this.$anchor.on('mutateme.zf.trigger', function () {\n _this._eventsHandler(id);\n });\n }\n }\n\n /**\n * Handler for events.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _eventsHandler(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n _this._setSizes(function() {\n _this._calc(false);\n if (_this.canStick) {\n if (!_this.isOn) {\n _this._events(id);\n }\n } else if (_this.isOn) {\n _this._pauseListeners(scrollListener);\n }\n });\n }\n\n /**\n * Removes event handlers for scroll and change events on anchor.\n * @fires Sticky#pause\n * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n */\n _pauseListeners(scrollListener) {\n this.isOn = false;\n $(window).off(scrollListener);\n\n /**\n * Fires when the plugin is paused due to resize event shrinking the view.\n * @event Sticky#pause\n * @private\n */\n this.$element.trigger('pause.zf.sticky');\n }\n\n /**\n * Called on every `scroll` event and on `_init`\n * fires functions based on booleans and cached values\n * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n */\n _calc(checkSizes, scroll) {\n if (checkSizes) { this._setSizes(); }\n\n if (!this.canStick) {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n return false;\n }\n\n if (!scroll) { scroll = window.pageYOffset; }\n\n if (scroll >= this.topPoint) {\n if (scroll <= this.bottomPoint) {\n if (!this.isStuck) {\n this._setSticky();\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(false);\n }\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n }\n }\n\n /**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */\n _setSticky() {\n var _this = this,\n stickTo = this.options.stickTo,\n mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n css = {};\n\n css[mrgn] = `${this.options[mrgn]}em`;\n css[stickTo] = 0;\n css[notStuckTo] = 'auto';\n this.isStuck = true;\n this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n .addClass(`is-stuck is-at-${stickTo}`)\n .css(css)\n /**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */\n .trigger(`sticky.zf.stuckto:${stickTo}`);\n this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n _this._setSizes();\n });\n }\n\n /**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */\n _removeSticky(isTop) {\n var stickTo = this.options.stickTo,\n stickToTop = stickTo === 'top',\n css = {},\n anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n topOrBottom = isTop ? 'top' : 'bottom';\n\n css[mrgn] = 0;\n\n css.bottom = 'auto';\n if(isTop) {\n css.top = 0;\n } else {\n css.top = anchorPt;\n }\n\n this.isStuck = false;\n this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n .addClass(`is-anchored is-at-${topOrBottom}`)\n .css(css)\n /**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */\n .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n }\n\n /**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */\n _setSizes(cb) {\n this.canStick = MediaQuery.is(this.options.stickyOn);\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n var newElemWidth = this.$container[0].getBoundingClientRect().width,\n comp = window.getComputedStyle(this.$container[0]),\n pdngl = parseInt(comp['padding-left'], 10),\n pdngr = parseInt(comp['padding-right'], 10);\n\n if (this.$anchor && this.$anchor.length) {\n this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n } else {\n this._parsePoints();\n }\n\n this.$element.css({\n 'max-width': `${newElemWidth - pdngl - pdngr}px`\n });\n\n // Recalculate the height only if it is \"dynamic\"\n if (this.options.dynamicHeight || !this.containerHeight) {\n // Get the sticked element height and apply it to the container to \"hold the place\"\n var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n newContainerHeight = this.$element.css(\"display\") === \"none\" ? 0 : newContainerHeight;\n this.$container.css('height', newContainerHeight);\n this.containerHeight = newContainerHeight;\n }\n this.elemHeight = this.containerHeight;\n\n if (!this.isStuck) {\n if (this.$element.hasClass('is-at-bottom')) {\n var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n this.$element.css('top', anchorPt);\n }\n }\n\n this._setBreakPoints(this.containerHeight, function() {\n if (cb && typeof cb === 'function') { cb(); }\n });\n }\n\n /**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */\n _setBreakPoints(elemHeight, cb) {\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n else { return false; }\n }\n var mTop = emCalc(this.options.marginTop),\n mBtm = emCalc(this.options.marginBottom),\n topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n // topPoint = this.$anchor.offset().top || this.points[0],\n // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n winHeight = window.innerHeight;\n\n if (this.options.stickTo === 'top') {\n topPoint -= mTop;\n bottomPoint -= (elemHeight + mTop);\n } else if (this.options.stickTo === 'bottom') {\n topPoint -= (winHeight - (elemHeight + mBtm));\n bottomPoint -= (winHeight - mBtm);\n } else {\n //this would be the stickTo: both option... tricky\n }\n\n this.topPoint = topPoint;\n this.bottomPoint = bottomPoint;\n\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n /**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */\n _destroy() {\n this._removeSticky(true);\n\n this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n .css({\n height: '',\n top: '',\n bottom: '',\n 'max-width': ''\n })\n .off('resizeme.zf.trigger')\n .off('mutateme.zf.trigger');\n if (this.$anchor && this.$anchor.length) {\n this.$anchor.off('change.zf.sticky');\n }\n if (this.scrollListener) $(window).off(this.scrollListener)\n if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n if (this.wasWrapped) {\n this.$element.unwrap();\n } else {\n this.$container.removeClass(this.options.containerClass)\n .css({\n height: ''\n });\n }\n }\n}\n\nSticky.defaults = {\n /**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '<div data-sticky-container></div>'\n */\n container: '
    ',\n /**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */\n stickTo: 'top',\n /**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */\n anchor: '',\n /**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */\n topAnchor: '',\n /**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */\n btmAnchor: '',\n /**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginTop: 1,\n /**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginBottom: 1,\n /**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */\n stickyOn: 'medium',\n /**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */\n stickyClass: 'sticky',\n /**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */\n containerClass: 'sticky-container',\n /**\n * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n * @option\n * @type {boolean}\n * @default true\n */\n dynamicHeight: true,\n /**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */\n checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\n/**\n * Tabs module.\n * @module foundation.tabs\n * @requires foundation.util.keyboard\n * @requires foundation.util.imageLoader if tabs contain images\n */\n\nclass Tabs extends Plugin {\n /**\n * Creates a new instance of tabs.\n * @class\n * @name Tabs\n * @fires Tabs#init\n * @param {jQuery} element - jQuery object to make into tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);\n this.className = 'Tabs'; // ie9 back compat\n\n this._init();\n Keyboard.register('Tabs', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'previous',\n 'ARROW_DOWN': 'next',\n 'ARROW_LEFT': 'previous'\n // 'TAB': 'next',\n // 'SHIFT_TAB': 'previous'\n });\n }\n\n /**\n * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.\n * @private\n */\n _init() {\n var _this = this;\n this._isInitializing = true;\n\n this.$element.attr({'role': 'tablist'});\n this.$tabTitles = this.$element.find(`.${this.options.linkClass}`);\n this.$tabContent = $(`[data-tabs-content=\"${this.$element[0].id}\"]`);\n\n this.$tabTitles.each(function(){\n var $elem = $(this),\n $link = $elem.find('a'),\n isActive = $elem.hasClass(`${_this.options.linkActiveClass}`),\n hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),\n linkId = $link[0].id ? $link[0].id : `${hash}-label`,\n $tabContent = $(`#${hash}`);\n\n $elem.attr({'role': 'presentation'});\n\n $link.attr({\n 'role': 'tab',\n 'aria-controls': hash,\n 'aria-selected': isActive,\n 'id': linkId,\n 'tabindex': isActive ? '0' : '-1'\n });\n\n $tabContent.attr({\n 'role': 'tabpanel',\n 'aria-labelledby': linkId\n });\n\n // Save up the initial hash to return to it later when going back in history\n if (isActive) {\n _this._initialAnchor = `#${hash}`;\n }\n\n if(!isActive) {\n $tabContent.attr('aria-hidden', 'true');\n }\n\n if(isActive && _this.options.autoFocus){\n _this.onLoadListener = onLoad($(window), function() {\n $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, () => {\n $link.focus();\n });\n });\n }\n });\n\n if(this.options.matchHeight) {\n var $images = this.$tabContent.find('img');\n\n if ($images.length) {\n onImagesLoaded($images, this._setHeight.bind(this));\n } else {\n this._setHeight();\n }\n }\n\n // Current context-bound function to open tabs on page load or history hashchange\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;\n var $anchor = anchorNoHash && $(`#${anchorNoHash}`);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"],[data-tabs-target=\"${anchorNoHash}\"]`).first();\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, select it\n if ($anchor && $anchor.length && $link && $link.length) {\n this.selectTab($anchor, true);\n }\n // Otherwise, collapse everything\n else {\n this._collapse();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset}, this.options.deepLinkSmudgeDelay);\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Tabs#deeplink\n */\n this.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the tabs.\n * @private\n */\n _events() {\n this._addKeyHandler();\n this._addClickHandler();\n this._setHeightMqHandler = null;\n\n if (this.options.matchHeight) {\n this._setHeightMqHandler = this._setHeight.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n\n if(this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Adds click handlers for items within the tabs.\n * @private\n */\n _addClickHandler() {\n var _this = this;\n\n this.$element\n .off('click.zf.tabs')\n .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){\n e.preventDefault();\n _this._handleTabChange($(this));\n });\n }\n\n /**\n * Adds keyboard event handlers for items within the tabs.\n * @private\n */\n _addKeyHandler() {\n var _this = this;\n\n this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){\n if (e.which === 9) return;\n\n\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n if (_this.options.wrapOnKeys) {\n $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);\n $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);\n } else {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n }\n return;\n }\n });\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Tabs', {\n open: function() {\n $element.find('[role=\"tab\"]').focus();\n _this._handleTabChange($element);\n },\n previous: function() {\n $prevElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($prevElement);\n },\n next: function() {\n $nextElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($nextElement);\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n * @param {jQuery} $target - Tab to open.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @fires Tabs#change\n * @function\n */\n _handleTabChange($target, historyHandled) {\n\n // With `activeCollapse`, if the target is the active Tab, collapse it.\n if ($target.hasClass(`${this.options.linkActiveClass}`)) {\n if(this.options.activeCollapse) {\n this._collapse();\n }\n return;\n }\n\n var $oldTab = this.$element.\n find(`.${this.options.linkClass}.${this.options.linkActiveClass}`),\n $tabLink = $target.find('[role=\"tab\"]'),\n target = $tabLink.attr('data-tabs-target'),\n anchor = target && target.length ? `#${target}` : $tabLink[0].hash,\n $targetContent = this.$tabContent.find(anchor);\n\n //close old tab\n this._collapseTab($oldTab);\n\n //open new tab\n this._openTab($target);\n\n //either replace or update browser history\n if (this.options.deepLink && !historyHandled) {\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n\n /**\n * Fires when the plugin has successfully changed tabs.\n * @event Tabs#change\n */\n this.$element.trigger('change.zf.tabs', [$target, $targetContent]);\n\n //fire to children a mutation event\n $targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to open.\n * @function\n */\n _openTab($target) {\n var $tabLink = $target.find('[role=\"tab\"]'),\n hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),\n $targetContent = this.$tabContent.find(`#${hash}`);\n\n $target.addClass(`${this.options.linkActiveClass}`);\n\n $tabLink.attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n });\n\n $targetContent\n .addClass(`${this.options.panelActiveClass}`).removeAttr('aria-hidden');\n }\n\n /**\n * Collapses `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to collapse.\n * @function\n */\n _collapseTab($target) {\n var $targetAnchor = $target\n .removeClass(`${this.options.linkActiveClass}`)\n .find('[role=\"tab\"]')\n .attr({\n 'aria-selected': 'false',\n 'tabindex': -1\n });\n\n $(`#${$targetAnchor.attr('aria-controls')}`)\n .removeClass(`${this.options.panelActiveClass}`)\n .attr({ 'aria-hidden': 'true' })\n }\n\n /**\n * Collapses the active Tab.\n * @fires Tabs#collapse\n * @function\n */\n _collapse() {\n var $activeTab = this.$element.find(`.${this.options.linkClass}.${this.options.linkActiveClass}`);\n\n if ($activeTab.length) {\n this._collapseTab($activeTab);\n\n /**\n * Fires when the plugin has successfully collapsed tabs.\n * @event Tabs#collapse\n */\n this.$element.trigger('collapse.zf.tabs', [$activeTab]);\n }\n }\n\n /**\n * Public method for selecting a content pane to display.\n * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @function\n */\n selectTab(elem, historyHandled) {\n var idStr, hashIdStr;\n\n if (typeof elem === 'object') {\n idStr = elem[0].id;\n } else {\n idStr = elem;\n }\n\n if (idStr.indexOf('#') < 0) {\n hashIdStr = `#${idStr}`;\n } else {\n hashIdStr = idStr;\n idStr = idStr.slice(1);\n }\n\n var $target = this.$tabTitles.has(`[href$=\"${hashIdStr}\"],[data-tabs-target=\"${idStr}\"]`).first();\n\n this._handleTabChange($target, historyHandled);\n };\n\n /**\n * Sets the height of each panel to the height of the tallest panel.\n * If enabled in options, gets called on media query change.\n * If loading content via external source, can be called directly or with _reflow.\n * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n * @function\n * @private\n */\n _setHeight() {\n var max = 0,\n _this = this; // Lock down the `this` value for the root tabs object\n\n if (!this.$tabContent) {\n return;\n }\n\n this.$tabContent\n .find(`.${this.options.panelClass}`)\n .css('min-height', '')\n .each(function() {\n\n var panel = $(this),\n isActive = panel.hasClass(`${_this.options.panelActiveClass}`); // get the options from the parent instead of trying to get them from the child\n\n if (!isActive) {\n panel.css({'visibility': 'hidden', 'display': 'block'});\n }\n\n var temp = this.getBoundingClientRect().height;\n\n if (!isActive) {\n panel.css({\n 'visibility': '',\n 'display': ''\n });\n }\n\n max = temp > max ? temp : max;\n })\n .css('min-height', `${max}px`);\n }\n\n /**\n * Destroys an instance of tabs.\n * @fires Tabs#destroyed\n */\n _destroy() {\n this.$element\n .find(`.${this.options.linkClass}`)\n .off('.zf.tabs').hide().end()\n .find(`.${this.options.panelClass}`)\n .hide();\n\n if (this.options.matchHeight) {\n if (this._setHeightMqHandler != null) {\n $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n }\n\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n if (this.onLoadListener) {\n $(window).off(this.onLoadListener);\n }\n }\n}\n\nTabs.defaults = {\n /**\n * Link the location hash to the active pane.\n * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n\n /**\n * If `deepLinkSmudge` is enabled, animation offset from the top for the deep link adjustment\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n\n /**\n * If `deepLink` is enabled, update the browser history with the open tab\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n\n /**\n * Allows the window to scroll to content of active pane on load.\n * Not recommended if more than one tab panel per page.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n\n /**\n * Allows keyboard input to 'wrap' around the tab links.\n * @option\n * @type {boolean}\n * @default true\n */\n wrapOnKeys: true,\n\n /**\n * Allows the tab content panes to match heights if set to true.\n * @option\n * @type {boolean}\n * @default false\n */\n matchHeight: false,\n\n /**\n * Allows active tabs to collapse when clicked.\n * @option\n * @type {boolean}\n * @default false\n */\n activeCollapse: false,\n\n /**\n * Class applied to `li`'s in tab link list.\n * @option\n * @type {string}\n * @default 'tabs-title'\n */\n linkClass: 'tabs-title',\n\n /**\n * Class applied to the active `li` in tab link list.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n linkActiveClass: 'is-active',\n\n /**\n * Class applied to the content containers.\n * @option\n * @type {string}\n * @default 'tabs-panel'\n */\n panelClass: 'tabs-panel',\n\n /**\n * Class applied to the active content container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n panelActiveClass: 'is-active'\n};\n\nexport {Tabs};\n","import $ from 'jquery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\nimport { RegExpEscape } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Toggler module.\n * @module foundation.toggler\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n */\n\nclass Toggler extends Plugin {\n /**\n * Creates a new instance of Toggler.\n * @class\n * @name Toggler\n * @fires Toggler#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Toggler.defaults, element.data(), options);\n this.className = '';\n this.className = 'Toggler'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.\n * @function\n * @private\n */\n _init() {\n // Collect triggers to set ARIA attributes to\n var id = this.$element[0].id,\n $triggers = $(`[data-open~=\"${id}\"], [data-close~=\"${id}\"], [data-toggle~=\"${id}\"]`);\n\n var input;\n // Parse animation classes if they were set\n if (this.options.animate) {\n input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n\n // - aria-expanded: according to the element visibility.\n $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n }\n // Otherwise, parse toggle class\n else {\n input = this.options.toggler;\n if (typeof input !== 'string' || !input.length) {\n throw new Error(`The 'toggler' option containing the target class is required, got \"${input}\"`);\n }\n // Allow for a . at the beginning of the string\n this.className = input[0] === '.' ? input.slice(1) : input;\n\n // - aria-expanded: according to the elements class set.\n $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n }\n\n // - aria-controls: adding the element id to it if not already in it.\n $triggers.each((index, trigger) => {\n const $trigger = $(trigger);\n const controls = $trigger.attr('aria-controls') || '';\n\n const containsId = new RegExp(`\\\\b${RegExpEscape(id)}\\\\b`).test(controls);\n if (!containsId) $trigger.attr('aria-controls', controls ? `${controls} ${id}` : id);\n });\n }\n\n /**\n * Initializes events for the toggle trigger.\n * @function\n * @private\n */\n _events() {\n this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n }\n\n /**\n * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was \"on\" or \"off\".\n * @function\n * @fires Toggler#on\n * @fires Toggler#off\n */\n toggle() {\n this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n }\n\n _toggleClass() {\n this.$element.toggleClass(this.className);\n\n var isOn = this.$element.hasClass(this.className);\n if (isOn) {\n /**\n * Fires if the target element has the class after a toggle.\n * @event Toggler#on\n */\n this.$element.trigger('on.zf.toggler');\n }\n else {\n /**\n * Fires if the target element does not have the class after a toggle.\n * @event Toggler#off\n */\n this.$element.trigger('off.zf.toggler');\n }\n\n this._updateARIA(isOn);\n this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n }\n\n _toggleAnimate() {\n var _this = this;\n\n if (this.$element.is(':hidden')) {\n Motion.animateIn(this.$element, this.animationIn, function() {\n _this._updateARIA(true);\n this.trigger('on.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$element, this.animationOut, function() {\n _this._updateARIA(false);\n this.trigger('off.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n }\n\n _updateARIA(isOn) {\n var id = this.$element[0].id;\n $(`[data-open=\"${id}\"], [data-close=\"${id}\"], [data-toggle=\"${id}\"]`)\n .attr({\n 'aria-expanded': isOn ? true : false\n });\n }\n\n /**\n * Destroys the instance of Toggler on the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.toggler');\n }\n}\n\nToggler.defaults = {\n /**\n * Class of the element to toggle. It can be provided with or without \".\"\n * @option\n * @type {string}\n */\n toggler: undefined,\n /**\n * Tells the plugin if the element should animated when toggled.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport {Toggler};\n","import $ from 'jquery';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\nimport { Positionable } from './foundation.positionable';\n\n/**\n * Tooltip module.\n * @module foundation.tooltip\n * @requires foundation.util.box\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass Tooltip extends Positionable {\n /**\n * Creates a new instance of a Tooltip.\n * @class\n * @name Tooltip\n * @fires Tooltip#init\n * @param {jQuery} element - jQuery object to attach a tooltip to.\n * @param {Object} options - object to extend the default configuration.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options);\n this.className = 'Tooltip'; // ie9 back compat\n\n this.isActive = false;\n this.isClick = false;\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.\n * @private\n */\n _init() {\n MediaQuery._init();\n var elemId = this.$element.attr('aria-describedby') || GetYoDigits(6, 'tooltip');\n\n this.options.tipText = this.options.tipText || this.$element.attr('title');\n this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);\n\n if (this.options.allowHtml) {\n this.template.appendTo(document.body)\n .html(this.options.tipText)\n .hide();\n } else {\n this.template.appendTo(document.body)\n .text(this.options.tipText)\n .hide();\n }\n\n this.$element.attr({\n 'title': '',\n 'aria-describedby': elemId,\n 'data-yeti-box': elemId,\n 'data-toggle': elemId,\n 'data-resize': elemId\n }).addClass(this.options.triggerClass);\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var elementClassName = this.$element[0].className;\n if (this.$element[0] instanceof SVGElement) {\n elementClassName = elementClassName.baseVal;\n }\n var position = elementClassName.match(/\\b(top|left|right|bottom)\\b/g);\n return position ? position[0] : 'top';\n }\n\n _getDefaultAlignment() {\n return 'center';\n }\n\n _getHOffset() {\n if(this.position === 'left' || this.position === 'right') {\n return this.options.hOffset + this.options.tooltipWidth;\n } else {\n return this.options.hOffset\n }\n }\n\n _getVOffset() {\n if(this.position === 'top' || this.position === 'bottom') {\n return this.options.vOffset + this.options.tooltipHeight;\n } else {\n return this.options.vOffset\n }\n }\n\n /**\n * builds the tooltip element, adds attributes, and returns the template.\n * @private\n */\n _buildTemplate(id) {\n var templateClasses = (`${this.options.tooltipClass} ${this.options.templateClasses}`).trim();\n var $template = $('
    ').addClass(templateClasses).attr({\n 'role': 'tooltip',\n 'aria-hidden': true,\n 'data-is-active': false,\n 'data-is-focus': false,\n 'id': id\n });\n return $template;\n }\n\n /**\n * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.\n * if the tooltip is larger than the screen width, default to full width - any user selected margin\n * @private\n */\n _setPosition() {\n super._setPosition(this.$element, this.template);\n }\n\n /**\n * reveals the tooltip, and fires an event to close any other open tooltips on the page\n * @fires Tooltip#closeme\n * @fires Tooltip#show\n * @function\n */\n show() {\n if (this.options.showOn !== 'all' && !MediaQuery.is(this.options.showOn)) {\n // console.error('The screen is too small to display this tooltip');\n return false;\n }\n\n var _this = this;\n this.template.css('visibility', 'hidden').show();\n this._setPosition();\n this.template.removeClass('top bottom left right').addClass(this.position)\n this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-' + this.alignment);\n\n /**\n * Fires to close all other open tooltips on the page\n * @event Closeme#tooltip\n */\n this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));\n\n\n this.template.attr({\n 'data-is-active': true,\n 'aria-hidden': false\n });\n _this.isActive = true;\n this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function() {\n //maybe do stuff?\n });\n /**\n * Fires when the tooltip is shown\n * @event Tooltip#show\n */\n this.$element.trigger('show.zf.tooltip');\n }\n\n /**\n * Hides the current tooltip, and resets the positioning class if it was changed due to collision\n * @fires Tooltip#hide\n * @function\n */\n hide() {\n var _this = this;\n this.template.stop().attr({\n 'aria-hidden': true,\n 'data-is-active': false\n }).fadeOut(this.options.fadeOutDuration, function() {\n _this.isActive = false;\n _this.isClick = false;\n });\n /**\n * fires when the tooltip is hidden\n * @event Tooltip#hide\n */\n this.$element.trigger('hide.zf.tooltip');\n }\n\n /**\n * adds event listeners for the tooltip and its anchor\n * TODO combine some of the listeners like focus and mouseenter, etc.\n * @private\n */\n _events() {\n const _this = this;\n const hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n var isFocus = false;\n\n // `disableForTouch: Fully disable the tooltip on touch devices\n if (hasTouch && this.options.disableForTouch) return;\n\n if (!this.options.disableHover) {\n this.$element\n .on('mouseenter.zf.tooltip', function() {\n if (!_this.isActive) {\n _this.timeout = setTimeout(function() {\n _this.show();\n }, _this.options.hoverDelay);\n }\n })\n .on('mouseleave.zf.tooltip', ignoreMousedisappear(function() {\n clearTimeout(_this.timeout);\n if (!isFocus || (_this.isClick && !_this.options.clickOpen)) {\n _this.hide();\n }\n }));\n }\n\n if (hasTouch) {\n this.$element\n .on('tap.zf.tooltip touchend.zf.tooltip', function () {\n _this.isActive ? _this.hide() : _this.show();\n });\n }\n\n if (this.options.clickOpen) {\n this.$element.on('mousedown.zf.tooltip', function() {\n if (_this.isClick) {\n //_this.hide();\n // _this.isClick = false;\n } else {\n _this.isClick = true;\n if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {\n _this.show();\n }\n }\n });\n } else {\n this.$element.on('mousedown.zf.tooltip', function() {\n _this.isClick = true;\n });\n }\n\n this.$element.on({\n // 'toggle.zf.trigger': this.toggle.bind(this),\n // 'close.zf.trigger': this.hide.bind(this)\n 'close.zf.trigger': this.hide.bind(this)\n });\n\n this.$element\n .on('focus.zf.tooltip', function() {\n isFocus = true;\n if (_this.isClick) {\n // If we're not showing open on clicks, we need to pretend a click-launched focus isn't\n // a real focus, otherwise on hover and come back we get bad behavior\n if(!_this.options.clickOpen) { isFocus = false; }\n return false;\n } else {\n _this.show();\n }\n })\n\n .on('focusout.zf.tooltip', function() {\n isFocus = false;\n _this.isClick = false;\n _this.hide();\n })\n\n .on('resizeme.zf.trigger', function() {\n if (_this.isActive) {\n _this._setPosition();\n }\n });\n }\n\n /**\n * adds a toggle method, in addition to the static show() & hide() functions\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Destroys an instance of tooltip, removes template element from the view.\n * @function\n */\n _destroy() {\n this.$element.attr('title', this.template.text())\n .off('.zf.trigger .zf.tooltip')\n .removeClass(this.options.triggerClass)\n .removeClass('top right left bottom')\n .removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');\n\n this.template.remove();\n }\n}\n\nTooltip.defaults = {\n /**\n * Time, in ms, before a tooltip should open on hover.\n * @option\n * @type {number}\n * @default 200\n */\n hoverDelay: 200,\n /**\n * Time, in ms, a tooltip should take to fade into view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeInDuration: 150,\n /**\n * Time, in ms, a tooltip should take to fade out of view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeOutDuration: 150,\n /**\n * Disables hover events from opening the tooltip if set to true\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disable the tooltip for touch devices.\n * This can be useful to make elements with a tooltip on it trigger their\n * action on the first tap instead of displaying the tooltip.\n * @option\n * @type {booelan}\n * @default false\n */\n disableForTouch: false,\n /**\n * Optional addtional classes to apply to the tooltip template on init.\n * @option\n * @type {string}\n * @default ''\n */\n templateClasses: '',\n /**\n * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.\n * @option\n * @type {string}\n * @default 'tooltip'\n */\n tooltipClass: 'tooltip',\n /**\n * Class applied to the tooltip anchor element.\n * @option\n * @type {string}\n * @default 'has-tip'\n */\n triggerClass: 'has-tip',\n /**\n * Minimum breakpoint size at which to open the tooltip.\n * @option\n * @type {string}\n * @default 'small'\n */\n showOn: 'small',\n /**\n * Custom template to be used to generate markup for tooltip.\n * @option\n * @type {string}\n * @default ''\n */\n template: '',\n /**\n * Text displayed in the tooltip template on open.\n * @option\n * @type {string}\n * @default ''\n */\n tipText: '',\n touchCloseText: 'Tap to close.',\n /**\n * Allows the tooltip to remain open if triggered with a click or touch event.\n * @option\n * @type {boolean}\n * @default true\n */\n clickOpen: true,\n /**\n * Position of tooltip. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, tooltip will first try to\n * position as defined by data-position and data-alignment, but reposition if\n * it would cause an overflow. @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * Less common for tooltips.\n * @option\n * @type {boolean}\n * @default false\n */\n allowBottomOverlap: false,\n /**\n * Distance, in pixels, the template should push away from the anchor on the Y axis.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Distance, in pixels, the template should push away from the anchor on the X axis\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a vertical tooltip\n * @option\n * @type {number}\n * @default 14\n */\n tooltipHeight: 14,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip\n * @option\n * @type {number}\n * @default 12\n */\n tooltipWidth: 12,\n /**\n * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,\n * allowing HTML may open yourself up to XSS attacks.\n * @option\n * @type {boolean}\n * @default false\n */\n allowHtml: false\n};\n\n/**\n * TODO utilize resize event trigger\n */\n\nexport {Tooltip};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin }from './foundation.core.plugin';\n\nimport { Accordion } from './foundation.accordion';\nimport { Tabs } from './foundation.tabs';\n\n// The plugin matches the plugin classes with these plugin instances.\nvar MenuPlugins = {\n tabs: {\n cssClass: 'tabs',\n plugin: Tabs,\n open: (plugin, target) => plugin.selectTab(target),\n close: null /* not supported */,\n toggle: null /* not supported */,\n },\n accordion: {\n cssClass: 'accordion',\n plugin: Accordion,\n open: (plugin, target) => plugin.down($(target)),\n close: (plugin, target) => plugin.up($(target)),\n toggle: (plugin, target) => plugin.toggle($(target)),\n }\n};\n\n\n/**\n * ResponsiveAccordionTabs module.\n * @module foundation.responsiveAccordionTabs\n * @requires foundation.util.motion\n * @requires foundation.accordion\n * @requires foundation.tabs\n */\n\nclass ResponsiveAccordionTabs extends Plugin{\n constructor(element, options) {\n super(element, options);\n return this.options.reflow && this.storezfData || this;\n }\n\n /**\n * Creates a new instance of a responsive accordion tabs.\n * @class\n * @name ResponsiveAccordionTabs\n * @fires ResponsiveAccordionTabs#init\n * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.$element.data('zfPluginBase', this);\n this.options = $.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);\n\n this.rules = this.$element.data('responsive-accordion-tabs');\n this.currentMq = null;\n this.currentRule = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveAccordionTabs'; // ie9 back compat\n if (!this.$element.attr('id')) {\n this.$element.attr('id',GetYoDigits(6, 'responsiveaccordiontabs'));\n }\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n this._getAllOptions();\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n }\n\n _getAllOptions() {\n //get all defaults and options\n var _this = this;\n _this.allOptions = {};\n for (var key in MenuPlugins) {\n if (MenuPlugins.hasOwnProperty(key)) {\n var obj = MenuPlugins[key];\n try {\n var dummyPlugin = $('
      ');\n var tmpPlugin = new obj.plugin(dummyPlugin,_this.options);\n for (var keyKey in tmpPlugin.options) {\n if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {\n var objObj = tmpPlugin.options[keyKey];\n _this.allOptions[keyKey] = objObj;\n }\n }\n tmpPlugin.destroy();\n }\n catch(e) {\n console.warn(`Warning: Problems getting Accordion/Tab options: ${e}`);\n }\n }\n }\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);\n $(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) {\n //don't know why but on nested elements data zfPlugin get's lost\n if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin',this.storezfData);\n this.currentPlugin.destroy();\n }\n this._handleMarkup(this.rules[matchedMq].cssClass);\n this.currentRule = this.rules[matchedMq];\n this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);\n this.storezfData = this.currentPlugin.$element.data('zfPlugin');\n\n }\n\n _handleMarkup(toSet){\n var _this = this, fromString = 'accordion';\n var $panels = $('[data-tabs-content='+this.$element.attr('id')+']');\n if ($panels.length) fromString = 'tabs';\n if (fromString === toSet) {\n return;\n }\n\n var tabsTitle = _this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';\n var tabsPanel = _this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';\n\n this.$element.removeAttr('role');\n var $liHeads = this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');\n var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');\n\n if (fromString === 'tabs') {\n $panels = $panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');\n $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');\n } else {\n $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');\n }\n\n $panels.css({display:'',visibility:''});\n $liHeads.css({display:'',visibility:''});\n if (toSet === 'accordion') {\n $panels.each(function(key,value){\n $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});\n $('[data-tabs-content='+_this.$element.attr('id')+']').after('
      ').detach();\n $liHeads.addClass('accordion-item').attr('data-accordion-item','');\n $liHeadsA.addClass('accordion-title');\n });\n } else if (toSet === 'tabs') {\n var $tabsContent = $('[data-tabs-content='+_this.$element.attr('id')+']');\n var $placeholder = $('#tabs-placeholder-'+_this.$element.attr('id'));\n if ($placeholder.length) {\n $tabsContent = $('
      ').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));\n $placeholder.remove();\n } else {\n $tabsContent = $('
      ').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));\n }\n $panels.each(function(key,value){\n var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);\n var hash = $liHeadsA.get(key).hash.slice(1);\n var id = $(value).attr('id') || GetYoDigits(6, 'accordion');\n if (hash !== id) {\n if (hash !== '') {\n $(value).attr('id',hash);\n } else {\n hash = id;\n $(value).attr('id',hash);\n $($liHeadsA.get(key)).attr('href',$($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);\n }\n }\n var isActive = $($liHeads.get(key)).hasClass('is-active');\n if (isActive) {\n tempValue.addClass('is-active');\n }\n });\n $liHeads.addClass(tabsTitle);\n };\n }\n\n /**\n * Opens the plugin pane defined by `target`.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n * @see Accordion.down\n * @see Tabs.selectTab\n * @function\n */\n open() {\n if (this.currentRule && typeof this.currentRule.open === 'function') {\n return this.currentRule.open(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n * @see Accordion.up\n * @function\n */\n close() {\n if (this.currentRule && typeof this.currentRule.close === 'function') {\n return this.currentRule.close(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n * @see Accordion.toggle\n * @function\n */\n toggle() {\n if (this.currentRule && typeof this.currentRule.toggle === 'function') {\n return this.currentRule.toggle(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n if (this.currentPlugin) this.currentPlugin.destroy();\n $(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n}\n\nResponsiveAccordionTabs.defaults = {};\n\nexport {ResponsiveAccordionTabs};\n","// Import jQuery and bind it.\nimport $ from \"jquery\";\nwindow.$ = $;\n\n// Import WhatInput.\nimport whatInput from \"what-input\";\n\n// Import Foundation and utilities. DO NOT REMOVE.\nimport { Foundation } from \"foundation-sites/js/foundation.core\";\nFoundation.addToJquery($);\nimport { MediaQuery } from \"foundation-sites/js/foundation.util.mediaQuery\";\nFoundation.MediaQuery = MediaQuery;\n\n// Uncomment 'import' AND 'Foundation.plugin' for each plugin you do not want to use.\n// import { Abide } from 'foundation-sites/js/foundation.abide'\n// Foundation.plugin(Abide, 'Abide')\n\nimport { Accordion } from \"foundation-sites/js/foundation.accordion\";\nFoundation.plugin(Accordion, \"Accordion\");\n\nimport { AccordionMenu } from \"foundation-sites/js/foundation.accordionMenu\";\nFoundation.plugin(AccordionMenu, \"AccordionMenu\");\n\n// import { Drilldown } from 'foundation-sites/js/foundation.drilldown'\n// Foundation.plugin(Drilldown, 'Drilldown')\n\nimport { Dropdown } from \"foundation-sites/js/foundation.dropdown\";\nFoundation.plugin(Dropdown, \"Dropdown\");\n\nimport { DropdownMenu } from \"foundation-sites/js/foundation.dropdownMenu\";\nFoundation.plugin(DropdownMenu, \"DropdownMenu\");\n\nimport { Equalizer } from \"foundation-sites/js/foundation.equalizer\";\nFoundation.plugin(Equalizer, \"Equalizer\");\n\n// import { Interchange } from 'foundation-sites/js/foundation.interchange'\n// Foundation.plugin(Interchange, 'Interchange')\n\n// import { Magellan } from 'foundation-sites/js/foundation.magellan'\n// Foundation.plugin(Magellan, 'Magellan')\n\n// import { OffCanvas } from 'foundation-sites/js/foundation.offcanvas'\n// Foundation.plugin(OffCanvas, 'OffCanvas')\n\n// import { Orbit } from 'foundation-sites/js/foundation.orbit'\n// Foundation.plugin(Orbit, 'Orbit')\n\nimport { ResponsiveMenu } from \"foundation-sites/js/foundation.responsiveMenu\";\nFoundation.plugin(ResponsiveMenu, \"ResponsiveMenu\");\n\nimport { ResponsiveToggle } from \"foundation-sites/js/foundation.responsiveToggle\";\nFoundation.plugin(ResponsiveToggle, \"ResponsiveToggle\");\n\nimport { Reveal } from \"foundation-sites/js/foundation.reveal\";\nFoundation.plugin(Reveal, \"Reveal\");\n\nimport { Slider } from \"foundation-sites/js/foundation.slider\";\nFoundation.plugin(Slider, \"Slider\");\n\nimport { SmoothScroll } from \"foundation-sites/js/foundation.smoothScroll\";\nFoundation.plugin(SmoothScroll, \"SmoothScroll\");\n\nimport { Sticky } from \"foundation-sites/js/foundation.sticky\";\nFoundation.plugin(Sticky, \"Sticky\");\n\nimport { Tabs } from \"foundation-sites/js/foundation.tabs\";\nFoundation.plugin(Tabs, \"Tabs\");\n\nimport { Toggler } from \"foundation-sites/js/foundation.toggler\";\nFoundation.plugin(Toggler, \"Toggler\");\n\nimport { Tooltip } from \"foundation-sites/js/foundation.tooltip\";\nFoundation.plugin(Tooltip, \"Tooltip\");\n\nimport { ResponsiveAccordionTabs } from \"foundation-sites/js/foundation.responsiveAccordionTabs\";\nFoundation.plugin(ResponsiveAccordionTabs, \"ResponsiveAccordionTabs\");\n\n// Init.\nwindow.addEventListener(\n \"load\",\n () => {\n $(document).foundation();\n },\n { passive: true }\n);\n\n$(document).on(\"closed.zf.reveal\", function () {\n Foundation.reInit(\"sticky\");\n});\n","// Masonry layout.\nimport Macy from \"macy\";\n\ndocument.addEventListener(\n \"DOMContentLoaded\",\n () => {\n if (typeof masonryGrids !== \"undefined\") {\n // Loop through each registered masonry grids and initialize them.\n masonryGrids = masonryGrids.map(({ container, id }) => {\n const instance = Macy({\n container,\n columns: 1,\n trueOrder: true,\n waitForImages: true,\n mobileFirst: true,\n breakAt: {\n 640: 2,\n 1024: 3,\n },\n });\n instance.recalculate();\n\n // Return instance for usage with AJAX content.\n return {\n id,\n container,\n instance,\n };\n });\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\nimport objectFitImages from \"object-fit-images\";\n\n$(function () {\n // Adds support for 'object-fit: cover;'.\n objectFitImages();\n});\n","var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var i,n=1,s=arguments.length;ns.endVal;s.frameVal=n?s.endVal:s.frameVal,s.frameVal=Number(s.frameVal.toFixed(s.options.decimalPlaces)),s.printValue(s.frameVal),i1?s.options.decimal+o[1]:\"\",s.options.useGrouping){e=\"\";for(var l=0,h=n.length;lwindow.scrollY&&t.paused?(t.paused=!1,setTimeout(function(){return t.start()},t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):window.scrollY>s&&!t.paused&&t.reset()}},t.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);\"INPUT\"===this.el.tagName?this.el.value=i:\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();export{CountUp};","import { CountUp } from \"countup.js\";\n\nconst event = new Event(\"wpsoup.counter.completed\", {\n bubbles: true,\n cancelable: true,\n composed: false,\n});\n\nfunction registerEventListeners() {\n const elements = document.querySelectorAll(\".counter\");\n const intersectionSupported = intersectionListenerSupported();\n\n if (intersectionSupported) {\n const intersectionObserver = new IntersectionObserver(animateModern, {\n root: null,\n rootMargin: \"20px\",\n threshold: 0.5,\n });\n\n for (let i = 0; i < elements.length; i++) {\n intersectionObserver.observe(elements[i]);\n }\n } else {\n if (window.addEventListener) {\n animateLegacy(elements);\n\n window.addEventListener(\n \"scroll\",\n (e) => {\n animateLegacy(elements);\n },\n { passive: true }\n );\n }\n }\n}\n\nfunction animateLegacy(elements) {\n elements.forEach((element) => {\n if (elementIsInView(element)) {\n animateElement(element);\n }\n });\n}\n\nfunction animateModern(elements) {\n elements.forEach((element) => {\n if (element.isIntersecting) {\n animateElement(element);\n }\n });\n}\n\nfunction animateElement(element) {\n const target = element.target ? element.target : element;\n const dataset = target.dataset;\n\n const countUp = new CountUp(target, dataset.counterEnd, {\n duration: dataset.counterDuration,\n useGrouping: dataset.counterGrouping ? true : false,\n separator: dataset.counterSeparator,\n decimal: dataset.counterDecimal,\n });\n target.counter = countUp;\n countUp.start(() => {\n // Create event listener.\n target.dispatchEvent(event);\n });\n}\n\nfunction elementIsInView(element) {\n let top = element.offsetTop;\n let left = element.offsetLeft;\n const width = element.offsetWidth;\n const height = element.offsetHeight;\n\n while (element.offsetParent) {\n element = element.offsetParent;\n top += element.offsetTop;\n left += element.offsetLeft;\n }\n\n return (\n top >= window.pageYOffset &&\n left >= window.pageXOffset &&\n top + height <= window.pageYOffset + window.innerHeight &&\n left + width <= window.pageXOffset + window.innerWidth\n );\n}\n\nfunction intersectionListenerSupported() {\n return (\n \"IntersectionObserver\" in window &&\n \"IntersectionObserverEntry\" in window &&\n \"intersectionRatio\" in window.IntersectionObserverEntry.prototype\n );\n}\n\n(() => {\n registerEventListeners();\n})();\n","import axios from \"/srv/www/h/hotelduinzicht.nl/vhosts/www/htdocs/content/mu-plugins/wp-soup-plugin/node_modules/axios\";\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n () => {\n const favoriteButtons = document.querySelectorAll(\".favorite-button\");\n for (const button of favoriteButtons) {\n button.addEventListener(\n \"click\",\n function (event) {\n const postID = this.dataset.postId;\n if (!postID) {\n return;\n }\n\n const action = this.dataset.action;\n if (action === \"add\") {\n addToFavorites(postID, button);\n } else if (action === \"remove\") {\n removeFromFavorites(postID, button);\n }\n },\n { passive: true }\n );\n }\n\n function addToFavorites(postID, button) {\n let formData = new FormData();\n formData.append(\"action\", \"add_to_favorites\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"post_id\", postID);\n\n axios.post(themosis.ajaxurl, formData).then((response) => {\n if (response.data.success) {\n button.classList.add(\"is-favorited\");\n button.querySelector(\"svg\").outerHTML = themosis.wpsoup.favorites.button_icon_favorited;\n button.dataset.action = \"remove\";\n }\n });\n }\n\n function removeFromFavorites(postID, button) {\n let formData = new FormData();\n formData.append(\"action\", \"remove_from_favorites\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"post_id\", postID);\n\n axios.post(themosis.ajaxurl, formData).then((response) => {\n if (response.data.success) {\n button.classList.remove(\"is-favorited\");\n button.querySelector(\"svg\").outerHTML = themosis.wpsoup.favorites.button_icon;\n button.dataset.action = \"add\";\n }\n });\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\n\nwindow.addEventListener(\n \"load\",\n () => {\n if (Foundation.MediaQuery.atLeast(\"large\")) {\n const directions = [\"left\", \"right\"];\n directions.forEach((direction) => {\n const columns = $(`.wp-block-column.half-width-image-${direction}`);\n if (columns.length) {\n columns.each(function () {\n const column = $(this);\n const container = $(this).closest(\".wp-block-ms-container\");\n const containerId = container.attr(\"id\");\n const img = $(this).find(\"img\");\n let src = img.attr(\"src\");\n if (typeof src === \"undefined\") {\n return;\n }\n\n if (typeof LazyLoad === \"function\") {\n if (!src.includes(\"data:image/svg+xml\")) {\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n }\n\n img.on(\"load\", function () {\n src = img.attr(\"src\");\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n });\n } else {\n if (!src.includes(\"data:image/svg+xml\")) {\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n }\n }\n });\n }\n });\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n () => {\n /**\n * Add submenu toggle functionality.\n */\n const menus = document.querySelectorAll(\".js-ms-has-submenu\");\n let i = 0;\n // For every menu item with a submenu.\n for (const menu of menus) {\n // Apply id for toggling purposes.\n const randomID = \"id-\" + i++;\n const submenu = menu.querySelector(\".submenu\");\n if (submenu) {\n submenu.setAttribute(\"id\", randomID);\n }\n const toggle = menu.querySelector(\".toggle\");\n if (toggle) {\n toggle.setAttribute(\"data-toggle\", randomID);\n }\n\n // On toggling.\n $(`#${randomID}`).on(\"on.zf.toggler off.zf.toggler\", function (event) {\n if (event.target !== this) return;\n\n switch (event.type) {\n case \"on\":\n $(this).slideDown({\n start: function () {\n $(this).css({\n display: \"flex\",\n });\n },\n });\n break;\n case \"off\":\n $(this).slideUp();\n break;\n }\n\n // Recalculate sticky height if sticky exists.\n if ($(\".ms-menu .sticky\").length) {\n $(\".ms-menu .sticky\").foundation(\"_calc\", true);\n }\n });\n }\n\n // Recalculate sticky height on toggling submenu.\n $(\".menu-mobile\").on(\"on.zf.toggler off.zf.toggler\", function (event) {\n if (event.target !== this) return;\n\n switch (event.type) {\n case \"on\":\n $(this).slideDown();\n break;\n case \"off\":\n $(this).slideUp();\n break;\n }\n\n // Recalculate sticky height if sticky exists.\n if ($(\".ms-menu .sticky\").length) {\n $(\".ms-menu .sticky\").foundation(\"_calc\", true);\n }\n });\n\n // Properly update the ARIA states on focus (keyboard) and mouse over events.\n $('[role=\"menubar\"]').on(\"focus.aria mouseenter.aria\", '[aria-haspopup=\"true\"]', (event) => {\n $(event.currentTarget).attr(\"aria-expanded\", true);\n });\n\n // Properly update the ARIA states on blur (keyboard) and mouse out events.\n $('[role=\"menubar\"]').on(\"blur.aria mouseleave.aria\", '[aria-haspopup=\"true\"]', (event) => {\n $(event.currentTarget).attr(\"aria-expanded\", false);\n });\n\n const overlayToggles = document.querySelectorAll(\".trigger-overlay\");\n for (const toggle of overlayToggles) {\n toggle.addEventListener(\n \"click\",\n () => {\n const body = document.querySelector(\"body\");\n const logo = document.querySelector(\".logo-image-overlay\");\n const logoMobile = document.querySelector(\".logo-mobile-image-overlay\");\n const language = document.querySelector(\".language-block\");\n const overlay = document.querySelector(\".top-bar-overlay\");\n const overlayItems = overlay.querySelectorAll(\"li\");\n if (overlay.classList.contains(\"visible\")) {\n body.classList.remove(\"overlay-visible\");\n overlay.classList.remove(\"visible\");\n if (logo) {\n logo.classList.remove(\"fadeInUp\");\n }\n if (logoMobile) {\n logoMobile.classList.remove(\"fadeInUp\");\n }\n if (language) {\n language.classList.remove(\"fadeInUp\");\n }\n for (const li of overlayItems) {\n li.classList.remove(\"fadeInUp\");\n }\n } else {\n body.classList.add(\"overlay-visible\");\n overlay.classList.add(\"visible\");\n if (logo) {\n logo.classList.add(\"fadeInUp\");\n }\n if (logoMobile) {\n logoMobile.classList.add(\"fadeInUp\");\n }\n if (language) {\n language.classList.add(\"fadeInUp\");\n }\n for (const li of overlayItems) {\n li.classList.add(\"fadeInUp\");\n }\n }\n },\n { passive: true }\n );\n }\n\n const toggleArrow = document.querySelector(\".hide.icon-arrow\");\n if (toggleArrow) {\n const submenuTogglesCheckInterval = setInterval(function () {\n const submenuToggles = document.getElementsByClassName(\"submenu-toggle\");\n\n if (submenuToggles.length !== 0) {\n for (let toggle of submenuToggles) {\n if (toggle.getElementsByTagName(\"svg\").length === 0) {\n toggle.innerHTML += toggleArrow.innerHTML;\n }\n }\n\n clearInterval(submenuTogglesCheckInterval);\n }\n });\n }\n\n const searchBlockButton = document.querySelector(\".search-block-button\");\n const searchFormBlock = document.querySelector(\".search-form-block\");\n if (searchBlockButton) {\n searchBlockButton.addEventListener(\n \"click\",\n () => {\n searchBlockButton.classList.toggle(\"visible\");\n if (searchFormBlock) {\n searchFormBlock.classList.toggle(\"visible\");\n }\n },\n { passive: true }\n );\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\nimport Swiper from \"swiper\";\n\nif ($(\".woocommerce .product-image-slider\").length) {\n const galleryThumbs = new Swiper(\".woocommerce .product-thumbnail-slider\", {\n slidesPerView: 5,\n freeMode: true,\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n scrollbar: {\n el: \".swiper-scrollbar\",\n hide: true,\n },\n });\n\n if ($(\".woocommerce .product-thumbnail-slider\").length) {\n const galleryTop = new Swiper(\".woocommerce .product-image-slider\", {\n autoHeight: true,\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\",\n },\n thumbs: {\n swiper: galleryThumbs,\n },\n });\n }\n}\n\n$(document).on(\"change input\", \".woocommerce-cart-form .cart_item :input\", function (e) {\n $('.woocommerce-cart-form :input[name=\"update_cart\"]').prop(\"disabled\", false);\n});\n\n$(document.body).on(\"change blur\", \"form.woocommerce-cart-form .qty-field select\", function (e) {\n const select = $(this);\n const value = select.val();\n const parent = select.parent();\n parent.find(\"input\").val(value);\n});\n","import $ from \"jquery\";\n\nif (wp && wp.data) {\n if ($(window).width() > 600 && $(\"body\").hasClass(\"custom-admin-styling\")) {\n $(\"html\").css(\"padding-top\", \"50px\");\n }\n\n $(window).on(\"resize\", () => {\n if ($(\"body\").hasClass(\"custom-admin-styling\")) {\n if ($(window).width() > 600) {\n if ($(\"html\").css(\"padding-top\") != \"50px\") {\n $(\"html\").css(\"padding-top\", \"50px\");\n }\n } else {\n $(\"html\").css(\"padding-top\", \"\");\n }\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n const gutenbergLoadCheck = setInterval(() => {\n const anchors = $(\"[data-block] a\");\n if (anchors.length > 0) {\n anchors.on(\"click\", (e) => {\n e.preventDefault();\n });\n\n clearInterval(gutenbergLoadCheck);\n }\n }, 100);\n\n const editPost = wp.data.select(\"core/edit-post\");\n if (editPost) {\n editPost.isFeatureActive(\"fullscreenMode\") &&\n wp.data.dispatch(\"core/edit-post\").toggleFeature(\"fullscreenMode\");\n }\n });\n}\n","import $ from \"jquery\";\nimport axios from \"axios\";\n\n$(() => {\n $(\".load-more\").on(\"click\", function () {\n const id = $(this).data(\"id\");\n const fields = $(this).data(\"fields\");\n if (!fields) {\n return;\n }\n\n const initialOffset = $(this).data(\"initial-offset\") ?? 0;\n const offset = $(`#${id} .related-pages .related-page-card:not([class$=\"included\"])`).length ?? 0;\n const masonry = $(this).data(\"is-masonry\") ?? 0;\n const slider = $(this).data(\"is-slider\") ?? 0;\n const textLoadMore = $(this).data(\"text-load-more\");\n const textLoading = $(this).data(\"text-loading\");\n const textLoadFailed = $(this).data(\"text-load-failed\");\n\n // Data to send back to WordPress.\n const formData = new FormData();\n formData.append(\"action\", \"load_posts_by_ajax\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"offset\", initialOffset + offset);\n formData.append(\"fields\", JSON.stringify(fields));\n\n // Change button text to loading text.\n $(`#${id} .load-more`).html(textLoading);\n\n // Do request.\n axios\n .post(themosis.ajaxurl, formData)\n .then(({ data }) => {\n // Create a placeholder div to store retrieved posts.\n const cards = document.createElement(\"div\");\n cards.innerHTML = data;\n\n // If retrieved posts length is smaller than the amount to load,\n // hide the button, else replace text with initial text.\n if (cards.children.length < fields.ajax_amount_to_load) {\n $(`#${id} .load-more`).remove();\n } else {\n $(`#${id} .load-more`).html(textLoadMore);\n }\n\n // Append loaded posts to the end.\n $(`#${id} .related-pages`).append(data);\n\n // Reinit masonry or equalizer.\n if (slider) {\n const instance = cardSliders.find((x) => x.id === id).instance;\n instance.update();\n }\n\n // Reinit masonry or equalizer.\n if (masonry) {\n const instance = masonryGrids.find((x) => x.id === id).instance;\n instance.runOnImageLoad(function () {\n instance.recalculate(true);\n }, true);\n } else {\n Foundation.reInit(\"equalizer\");\n }\n })\n .catch((error) => {\n $(`#${id} .load-more`).html(textLoadFailed);\n });\n });\n});\n","import $ from \"jquery\";\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n function () {\n $(\".ms_tag-filter .smart-tags\").change(function () {\n const $hiddenInput = $(\".ms_tag-filter .hidden-input\");\n const $emptyInput = $(\".ms_tag-filter .empty-input\");\n const $smartTag = $(this).val();\n\n $.ajax({\n url: themosis.ajaxurl,\n type: \"POST\",\n cache: false,\n data: {\n action: \"populate_posts_with_tag\",\n smart_tag: $smartTag,\n },\n success: function (data) {\n const $select = $(\".ms_tag-filter .posts-with-tag\");\n if (!data || data.length === 0) {\n $select.html(``);\n } else {\n $select.html(`${data}`);\n }\n },\n });\n });\n\n $(\".ms_tag-filter .posts-with-tag\").change(function () {\n const options = this.options;\n const selectedOption = this.options[this.selectedIndex];\n const selectedSmartTagLabel =\n document.querySelector(\".ms_tag-filter .smart-tags\").options[\n document.querySelector(\".ms_tag-filter .smart-tags\").selectedIndex\n ].label;\n\n if (options && selectedOption.value !== \"\") {\n if (typeof ga !== \"undefined\" && typeof ga.getAll === \"function\") {\n new Promise((resolve, _) => {\n const analyticsGTMID = ga.getAll()[0].get(\"trackingId\");\n ga(\n `gtag_${analyticsGTMID}.send`,\n \"event\",\n \"Tag filter\",\n \"redirect\",\n selectedSmartTagLabel + \" -> \" + selectedOption.label\n );\n resolve();\n }).then(() => {\n // Redirect to the selected option.\n window.location = this.options[this.selectedIndex].value;\n });\n } else {\n // Redirect to the selected option.\n window.location = this.options[this.selectedIndex].value;\n }\n }\n });\n },\n { passive: true }\n);\n","import $ from \"jquery\";\n\nwindow.addEventListener(\n \"load\",\n () => {\n if ($(\".scrollhide-nav\").length > 0 && Foundation.MediaQuery.only(\"small\")) {\n let prev = 0;\n const height = $(\".ms_thintopbar\").outerHeight();\n\n $(window).on(\"scroll\", () => {\n const scrollTop = $(window).scrollTop();\n $(\".scrollhide-nav\").toggleClass(\"hidden\", scrollTop > prev);\n\n let offset = 0;\n if (scrollTop > prev) {\n offset = 0;\n } else {\n offset = height - 1;\n }\n\n $(\".ms-menu .sticky\").attr(\"style\", `top: ${offset}px !important`);\n\n prev = scrollTop;\n });\n\n $(\".ms-menu .sticky\").on(\"sticky.zf.unstuckfrom:top\", function () {\n $(\".ms-menu .sticky\").attr(\"style\", `margin-top: ${height - 1}px !important`);\n });\n $(\".ms-menu .sticky\").on(\"sticky.zf.stuckto:top\", function () {\n $(\".ms-menu .sticky\").attr(\"style\", `margin-top: 0px !important`);\n });\n }\n },\n { passive: true }\n);\n","import $ from \"/srv/www/h/hotelduinzicht.nl/vhosts/www/htdocs/content/mu-plugins/wp-soup-plugin/node_modules/jquery\";\n\n$(document).ready(function() {\n //\n});\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function setCookie(cname, cvalue, exdays) {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n const expires = \"expires=\" + d.toUTCString();\n document.cookie = cname + \"=\" + cvalue + \";\" + expires;\n}\n\nconst translationNotice = document.querySelector(\".automatic-translation-notice\");\nif (translationNotice) {\n translationNotice\n .querySelector(\"button\")\n .addEventListener(\"click\", (e) => setCookie(\"hide-automatic-translation-notice\", true, 7), { passive: true });\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=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, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\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","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\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');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\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(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\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(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\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","window.addEventListener(\n \"load\",\n () => {\n // Do IE stuff\n if (window.document.documentMode) {\n if (Foundation.MediaQuery.current !== \"small\") {\n const columns = document.querySelectorAll(\".wp-block-column\");\n for (const column of columns) {\n const flexBasis = column.style.flexBasis;\n const isMargin = column.parentElement.classList.contains(\"margin\");\n if (flexBasis && !isMargin) {\n column.style.setAttribute(\"width\", flexBasis);\n column.style.setProperty(\"flex-basis\", \"auto\", \"important\");\n } else if (flexBasis && isMargin) {\n column.style.setAttribute(\"width\", `calc(${flexBasis} - 2rem)`);\n column.style.setProperty(\"flex-basis\", \"auto\", \"important\");\n }\n }\n }\n } else {\n if (Foundation.MediaQuery.current !== \"small\") {\n const columns = document.querySelectorAll(\".wp-block-column\");\n for (const column of columns) {\n const flexBasis = column.style.flexBasis;\n const isMargin = column.parentElement.classList.contains(\"margin\");\n if (flexBasis && isMargin) {\n column.style.setProperty(\"flex-basis\", `calc(${flexBasis} - 2rem)`, \"important\");\n }\n }\n }\n }\n },\n { passive: true }\n);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\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\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\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","/**\n * Set scrollbar sizes\n */\ndocument.addEventListener(\n \"DOMContentLoaded\",\n () => {\n function setScrollbarSize() {\n // Add temporary box to wrapper.\n let scrollbox = document.createElement(\"div\");\n // Make box scrollable.\n scrollbox.style.overflow = \"scroll\";\n // Append box to document.\n document.body.appendChild(scrollbox);\n // Measure inner width of box.\n let scrollBarWidth = scrollbox.offsetWidth - scrollbox.clientWidth;\n // Remove box.\n document.body.removeChild(scrollbox);\n\n if (!(document.body.scrollHeight > window.innerHeight)) {\n scrollBarWidth = 0;\n }\n\n if (scrollBarWidth !== 0) {\n document.body.classList.add(\"has-scrollbar\");\n document.body.setAttribute(\"style\", `--scroll-bar: ${scrollBarWidth}px`);\n } else {\n document.body.classList.remove(\"has-scrollbar\");\n }\n }\n\n setScrollbarSize();\n window.addEventListener(\"resize\", setScrollbarSize, { passive: true });\n\n const epve = document.querySelector(\".edit-post-visual-editor\");\n if (epve !== null) {\n function getEditorWidth() {\n const width = epve.offsetWidth;\n document.body.setAttribute(\"style\", `--editor-width: ${width - 2}px`);\n }\n\n getEditorWidth();\n window.addEventListener(\"resize\", getEditorWidth, { passive: true });\n }\n\n // const adminToolbar = document.querySelector(\"#wpadminbar\");\n // if (adminToolbar !== null) {\n // const html = document.querySelector(\"html:not(.wp-toolbar)\");\n // if (html !== null) {\n // html.setAttribute(\"style\", \"margin-top: 50px !important;\");\n // }\n // }\n },\n { passive: true }\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","function iOS() {\n return (\n (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)) &&\n !window.MSStream\n );\n}\n\nwindow.addEventListener(\"load\", () => {\n if (iOS()) {\n const containers = document.querySelectorAll(\".wp-block-ms-container\");\n if (containers.length) {\n [...containers].forEach((container) =>\n container.style.setProperty(\"background-attachment\", \"scroll\", \"important\")\n );\n }\n }\n});\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\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 (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","/**\n * Dynamically intialize the `.review-slider`'s.\n */\nfunction msInitializeReviewSlider() {\n const slider = document.querySelector(`.review-slider`);\n if (slider) {\n let options = slider.dataset.sliderOptions;\n options = JSON.parse(options);\n const reviewSlider = new Swiper(`.review-slider`, options);\n }\n}\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n function () {\n msInitializeReviewSlider();\n },\n { passive: true }\n);\n\nif (typeof acf !== \"undefined\") {\n acf.addAction(`render_block_preview`, function ($el, attributes) {\n msInitializeReviewSlider();\n });\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 function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\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 if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\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\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\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 maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\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","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\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 Object.keys(src).forEach((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\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst 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() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\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 Object.keys(src).forEach((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\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst 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() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\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 for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (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 for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\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\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\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 const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\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\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\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\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\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\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\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\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\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\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\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}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\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}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\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}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\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\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\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\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\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\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\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}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\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}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\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\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\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\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\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\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\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\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\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\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\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\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\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\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\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\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\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 let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\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 {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\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\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\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(' ');\n\nfunction shortcut(name) {\n function eventHandler(...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]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\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};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\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 windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\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\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\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; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\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\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\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\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 } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n 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\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\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 (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\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 let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\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\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\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 extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\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}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\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\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 // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\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\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\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\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n 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 installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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 (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n 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 let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\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 slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\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 prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\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\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 Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\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 } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\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 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\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\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\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\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n 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\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\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;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\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\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\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}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(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}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\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';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\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\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\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\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\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 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\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\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 $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\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\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\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 emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\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\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\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\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\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 $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(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 Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
      `);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
      `);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\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 // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\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.call(\n config,\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.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","document.addEventListener(\n \"DOMContentLoaded\",\n () => {\n // Load all blocks on the page.\n const featuredMenuItems = document.querySelectorAll(\".ms_featured-menu-items\");\n for (menu of featuredMenuItems) {\n // Get all previews and menu links from current block.\n const previews = menu.querySelectorAll(\".preview\");\n const menuLinks = menu.querySelectorAll(\"a\");\n for (link of menuLinks) {\n // Get the target.\n const target = link.dataset?.target;\n link.addEventListener(\n \"mouseover\",\n (event) => {\n for (preview of previews) {\n if (preview.dataset?.content === target) {\n preview.classList.remove(\"hide\");\n } else {\n preview.classList.add(\"hide\");\n }\n }\n },\n { passive: true }\n );\n }\n }\n },\n { passive: true }\n);\n","/*!\n * parallax.js v1.5.0 (http://pixelcog.github.io/parallax.js/)\n * @copyright 2016 PixelCog, Inc.\n * @license MIT (https://github.com/pixelcog/parallax.js/blob/master/LICENSE)\n */\n\n(function ($, window, document, undefined) {\n // Polyfill for requestAnimationFrame\n // via: https://gist.github.com/paulirish/1579671\n\n (function () {\n var lastTime = 0;\n var vendors = [\"ms\", \"moz\", \"webkit\", \"o\"];\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x] + \"RequestAnimationFrame\"];\n window.cancelAnimationFrame =\n window[vendors[x] + \"CancelAnimationFrame\"] || window[vendors[x] + \"CancelRequestAnimationFrame\"];\n }\n\n if (!window.requestAnimationFrame)\n window.requestAnimationFrame = function (callback) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n if (!window.cancelAnimationFrame)\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n })();\n\n // Parallax Constructor\n\n function Parallax(element, options) {\n var self = this;\n\n if (typeof options == \"object\") {\n delete options.refresh;\n delete options.render;\n $.extend(this, options);\n }\n\n this.$element = $(element);\n\n if (!this.imageSrc && this.$element.is(\"img\")) {\n this.imageSrc = this.$element.attr(\"src\");\n }\n\n var positions = (this.position + \"\").toLowerCase().match(/\\S+/g) || [];\n\n if (positions.length < 1) {\n positions.push(\"center\");\n }\n if (positions.length == 1) {\n positions.push(positions[0]);\n }\n\n if (positions[0] == \"top\" || positions[0] == \"bottom\" || positions[1] == \"left\" || positions[1] == \"right\") {\n positions = [positions[1], positions[0]];\n }\n\n if (this.positionX !== undefined) positions[0] = this.positionX.toLowerCase();\n if (this.positionY !== undefined) positions[1] = this.positionY.toLowerCase();\n\n self.positionX = positions[0];\n self.positionY = positions[1];\n\n if (this.positionX != \"left\" && this.positionX != \"right\") {\n if (isNaN(parseInt(this.positionX))) {\n this.positionX = \"center\";\n } else {\n this.positionX = parseInt(this.positionX);\n }\n }\n\n if (this.positionY != \"top\" && this.positionY != \"bottom\") {\n if (isNaN(parseInt(this.positionY))) {\n this.positionY = \"center\";\n } else {\n this.positionY = parseInt(this.positionY);\n }\n }\n\n this.position =\n this.positionX +\n (isNaN(this.positionX) ? \"\" : \"px\") +\n \" \" +\n this.positionY +\n (isNaN(this.positionY) ? \"\" : \"px\");\n\n if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {\n if (this.imageSrc && this.iosFix && !this.$element.is(\"img\")) {\n this.$element.css({\n backgroundImage: 'url(\"' + this.imageSrc + '\")',\n backgroundSize: \"cover\",\n backgroundPosition: this.position,\n });\n }\n return this;\n }\n\n if (navigator.userAgent.match(/(Android)/)) {\n if (this.imageSrc && this.androidFix && !this.$element.is(\"img\")) {\n this.$element.css({\n backgroundImage: 'url(\"' + this.imageSrc + '\")',\n backgroundSize: \"cover\",\n backgroundPosition: this.position,\n });\n }\n return this;\n }\n\n this.$mirror = $(\"
      \").prependTo(this.mirrorContainer);\n\n var slider = this.$element.find(\">.parallax-slider\");\n var sliderExisted = false;\n\n if (slider.length == 0) this.$slider = $(\"\").prependTo(this.$mirror);\n else {\n this.$slider = slider.prependTo(this.$mirror);\n sliderExisted = true;\n }\n\n this.$mirror.addClass(\"parallax-mirror\").css({\n visibility: \"hidden\",\n zIndex: this.zIndex,\n position: \"fixed\",\n top: 0,\n left: 0,\n overflow: \"hidden\",\n });\n\n this.$slider.addClass(\"parallax-slider\").one(\"load\", function () {\n if (!self.naturalHeight || !self.naturalWidth) {\n self.naturalHeight = this.naturalHeight || this.height || 1;\n self.naturalWidth = this.naturalWidth || this.width || 1;\n }\n self.aspectRatio = self.naturalWidth / self.naturalHeight;\n\n Parallax.isSetup || Parallax.setup();\n Parallax.sliders.push(self);\n Parallax.isFresh = false;\n Parallax.requestRender();\n });\n\n if (!sliderExisted) this.$slider[0].src = this.imageSrc;\n\n if ((this.naturalHeight && this.naturalWidth) || this.$slider[0].complete || slider.length > 0) {\n this.$slider.trigger(\"load\");\n }\n }\n\n // Parallax Instance Methods\n\n $.extend(Parallax.prototype, {\n speed: 0.2,\n bleed: 0,\n zIndex: -100,\n iosFix: true,\n androidFix: true,\n position: \"center\",\n overScrollFix: false,\n mirrorContainer: \"body\",\n\n refresh: function () {\n this.boxWidth = this.$element.outerWidth();\n this.boxHeight = this.$element.outerHeight() + this.bleed * 2;\n this.boxOffsetTop = this.$element.offset().top - this.bleed;\n this.boxOffsetLeft = this.$element.offset().left;\n this.boxOffsetBottom = this.boxOffsetTop + this.boxHeight;\n\n var winHeight = Parallax.winHeight;\n var docHeight = Parallax.docHeight;\n var maxOffset = Math.min(this.boxOffsetTop, docHeight - winHeight);\n var minOffset = Math.max(this.boxOffsetTop + this.boxHeight - winHeight, 0);\n var imageHeightMin = (this.boxHeight + (maxOffset - minOffset) * (1 - this.speed)) | 0;\n var imageOffsetMin = ((this.boxOffsetTop - maxOffset) * (1 - this.speed)) | 0;\n var margin;\n\n if (imageHeightMin * this.aspectRatio >= this.boxWidth) {\n this.imageWidth = (imageHeightMin * this.aspectRatio) | 0;\n this.imageHeight = imageHeightMin;\n this.offsetBaseTop = imageOffsetMin;\n\n margin = this.imageWidth - this.boxWidth;\n\n if (this.positionX == \"left\") {\n this.offsetLeft = 0;\n } else if (this.positionX == \"right\") {\n this.offsetLeft = -margin;\n } else if (!isNaN(this.positionX)) {\n this.offsetLeft = Math.max(this.positionX, -margin);\n } else {\n this.offsetLeft = (-margin / 2) | 0;\n }\n } else {\n this.imageWidth = this.boxWidth;\n this.imageHeight = (this.boxWidth / this.aspectRatio) | 0;\n this.offsetLeft = 0;\n\n margin = this.imageHeight - imageHeightMin;\n\n if (this.positionY == \"top\") {\n this.offsetBaseTop = imageOffsetMin;\n } else if (this.positionY == \"bottom\") {\n this.offsetBaseTop = imageOffsetMin - margin;\n } else if (!isNaN(this.positionY)) {\n this.offsetBaseTop = imageOffsetMin + Math.max(this.positionY, -margin);\n } else {\n this.offsetBaseTop = (imageOffsetMin - margin / 2) | 0;\n }\n }\n },\n\n render: function () {\n var scrollTop = Parallax.scrollTop;\n var scrollLeft = Parallax.scrollLeft;\n var overScroll = this.overScrollFix ? Parallax.overScroll : 0;\n var scrollBottom = scrollTop + Parallax.winHeight;\n\n if (this.boxOffsetBottom > scrollTop && this.boxOffsetTop <= scrollBottom) {\n this.visibility = \"visible\";\n this.mirrorTop = this.boxOffsetTop - scrollTop;\n this.mirrorLeft = this.boxOffsetLeft - scrollLeft;\n this.offsetTop = this.offsetBaseTop - this.mirrorTop * (1 - this.speed);\n } else {\n this.visibility = \"hidden\";\n }\n\n this.$mirror.css({\n transform: \"translate3d(\" + this.mirrorLeft + \"px, \" + (this.mirrorTop - overScroll) + \"px, 0px)\",\n visibility: this.visibility,\n height: this.boxHeight,\n width: this.boxWidth,\n });\n\n this.$slider.css({\n transform: \"translate3d(\" + this.offsetLeft + \"px, \" + this.offsetTop + \"px, 0px)\",\n position: \"absolute\",\n height: this.imageHeight,\n width: this.imageWidth,\n maxWidth: \"none\",\n });\n },\n });\n\n // Parallax Static Methods\n\n $.extend(Parallax, {\n scrollTop: 0,\n scrollLeft: 0,\n winHeight: 0,\n winWidth: 0,\n docHeight: 1 << 30,\n docWidth: 1 << 30,\n sliders: [],\n isReady: false,\n isFresh: false,\n isBusy: false,\n\n setup: function () {\n if (this.isReady) return;\n\n var self = this;\n\n var $doc = $(document),\n $win = $(window);\n\n var loadDimensions = function () {\n Parallax.winHeight = $win.height();\n Parallax.winWidth = $win.width();\n Parallax.docHeight = $doc.height();\n Parallax.docWidth = $doc.width();\n };\n\n var loadScrollPosition = function () {\n var winScrollTop = $win.scrollTop();\n var scrollTopMax = Parallax.docHeight - Parallax.winHeight;\n var scrollLeftMax = Parallax.docWidth - Parallax.winWidth;\n Parallax.scrollTop = Math.max(0, Math.min(scrollTopMax, winScrollTop));\n Parallax.scrollLeft = Math.max(0, Math.min(scrollLeftMax, $win.scrollLeft()));\n Parallax.overScroll = Math.max(winScrollTop - scrollTopMax, Math.min(winScrollTop, 0));\n };\n\n $win.on(\"resize.px.parallax load.px.parallax\", function () {\n loadDimensions();\n self.refresh();\n Parallax.isFresh = false;\n Parallax.requestRender();\n }).on(\"scroll.px.parallax load.px.parallax\", function () {\n loadScrollPosition();\n Parallax.requestRender();\n });\n\n loadDimensions();\n loadScrollPosition();\n\n this.isReady = true;\n\n var lastPosition = -1;\n\n function frameLoop() {\n if (lastPosition == window.pageYOffset) {\n // Avoid overcalculations\n window.requestAnimationFrame(frameLoop);\n return false;\n } else lastPosition = window.pageYOffset;\n\n self.render();\n window.requestAnimationFrame(frameLoop);\n }\n\n frameLoop();\n },\n\n configure: function (options) {\n if (typeof options == \"object\") {\n delete options.refresh;\n delete options.render;\n $.extend(this.prototype, options);\n }\n },\n\n refresh: function () {\n $.each(this.sliders, function () {\n this.refresh();\n });\n this.isFresh = true;\n },\n\n render: function () {\n this.isFresh || this.refresh();\n $.each(this.sliders, function () {\n this.render();\n });\n },\n\n requestRender: function () {\n var self = this;\n self.render();\n self.isBusy = false;\n },\n destroy: function (el) {\n var i,\n parallaxElement = $(el).data(\"px.parallax\");\n parallaxElement.$mirror.remove();\n for (i = 0; i < this.sliders.length; i += 1) {\n if (this.sliders[i] == parallaxElement) {\n this.sliders.splice(i, 1);\n }\n }\n $(el).data(\"px.parallax\", false);\n if (this.sliders.length === 0) {\n $(window).off(\"scroll.px.parallax resize.px.parallax load.px.parallax\");\n this.isReady = false;\n Parallax.isSetup = false;\n }\n },\n });\n\n // Parallax Plugin Definition\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var options = typeof option == \"object\" && option;\n\n if (this == window || this == document || $this.is(\"body\")) {\n Parallax.configure(options);\n } else if (!$this.data(\"px.parallax\")) {\n options = $.extend({}, $this.data(), options);\n $this.data(\"px.parallax\", new Parallax(this, options));\n } else if (typeof option == \"object\") {\n $.extend($this.data(\"px.parallax\"), options);\n }\n if (typeof option == \"string\") {\n if (option == \"destroy\") {\n Parallax.destroy(this);\n } else {\n Parallax[option]();\n }\n }\n });\n }\n\n var old = $.fn.parallax;\n\n $.fn.parallax = Plugin;\n $.fn.parallax.Constructor = Parallax;\n\n // Parallax No Conflict\n\n $.fn.parallax.noConflict = function () {\n $.fn.parallax = old;\n return this;\n };\n\n // Parallax Data-API\n\n $(function () {\n $('[data-parallax=\"scroll\"]').parallax();\n });\n})(jQuery, window, document);\n","/*!\n * Clamp.js 0.5.1\n *\n * Copyright 2011-2013, Joseph Schmitt http://joe.sh\n * Released under the WTFPL license\n * http://sam.zoy.org/wtfpl/\n */\n\n(function() {\n /**\n * Clamps a text node.\n * @param {HTMLElement} element. Element containing the text node to clamp.\n * @param {Object} options. Options to pass to the clamper.\n */\n function clamp(element, options) {\n options = options || {};\n\n var self = this,\n win = window,\n opt = {\n clamp: options.clamp || 2,\n useNativeClamp:\n typeof options.useNativeClamp != \"undefined\"\n ? options.useNativeClamp\n : true,\n splitOnChars: options.splitOnChars || [\".\", \"-\", \"–\", \"—\", \" \"], //Split on sentences (periods), hypens, en-dashes, em-dashes, and words (spaces).\n animate: options.animate || false,\n truncationChar: options.truncationChar || \"…\",\n truncationHTML: options.truncationHTML\n },\n sty = element.style,\n originalText = element.innerHTML,\n supportsNativeClamp =\n typeof element.style.webkitLineClamp != \"undefined\",\n clampValue = opt.clamp,\n isCSSValue =\n clampValue.indexOf &&\n (clampValue.indexOf(\"px\") > -1 ||\n clampValue.indexOf(\"em\") > -1),\n truncationHTMLContainer;\n\n if (opt.truncationHTML) {\n truncationHTMLContainer = document.createElement(\"span\");\n truncationHTMLContainer.innerHTML = opt.truncationHTML;\n }\n\n // UTILITY FUNCTIONS __________________________________________________________\n\n /**\n * Return the current style for an element.\n * @param {HTMLElement} elem The element to compute.\n * @param {string} prop The style property.\n * @returns {number}\n */\n function computeStyle(elem, prop) {\n if (!win.getComputedStyle) {\n win.getComputedStyle = function(el, pseudo) {\n this.el = el;\n this.getPropertyValue = function(prop) {\n var re = /(\\-([a-z]){1})/g;\n if (prop == \"float\") prop = \"styleFloat\";\n if (re.test(prop)) {\n prop = prop.replace(re, function() {\n return arguments[2].toUpperCase();\n });\n }\n return el.currentStyle && el.currentStyle[prop]\n ? el.currentStyle[prop]\n : null;\n };\n return this;\n };\n }\n\n return win.getComputedStyle(elem, null).getPropertyValue(prop);\n }\n\n /**\n * Returns the maximum number of lines of text that should be rendered based\n * on the current height of the element and the line-height of the text.\n */\n function getMaxLines(height) {\n var availHeight = height || element.clientHeight,\n lineHeight = getLineHeight(element);\n\n return Math.max(Math.floor(availHeight / lineHeight), 0);\n }\n\n /**\n * Returns the maximum height a given element should have based on the line-\n * height of the text and the given clamp value.\n */\n function getMaxHeight(clmp) {\n var lineHeight = getLineHeight(element);\n return lineHeight * clmp;\n }\n\n /**\n * Returns the line-height of an element as an integer.\n */\n function getLineHeight(elem) {\n var lh = computeStyle(elem, \"line-height\");\n if (lh == \"normal\") {\n // Normal line heights vary from browser to browser. The spec recommends\n // a value between 1.0 and 1.2 of the font size. Using 1.1 to split the diff.\n lh = parseInt(computeStyle(elem, \"font-size\")) * 1.2;\n }\n return parseInt(lh);\n }\n\n // MEAT AND POTATOES (MMMM, POTATOES...) ______________________________________\n var splitOnChars = opt.splitOnChars.slice(0),\n splitChar = splitOnChars[0],\n chunks,\n lastChunk;\n\n /**\n * Gets an element's last child. That may be another node or a node's contents.\n */\n function getLastChild(elem) {\n //Current element has children, need to go deeper and get last child as a text node\n if (elem.lastChild.children && elem.lastChild.children.length > 0) {\n return getLastChild(\n Array.prototype.slice.call(elem.children).pop()\n );\n }\n //This is the absolute last child, a text node, but something's wrong with it. Remove it and keep trying\n else if (\n !elem.lastChild ||\n !elem.lastChild.nodeValue ||\n elem.lastChild.nodeValue == \"\" ||\n elem.lastChild.nodeValue == opt.truncationChar\n ) {\n elem.lastChild.parentNode.removeChild(elem.lastChild);\n return getLastChild(element);\n }\n //This is the last child we want, return it\n else {\n return elem.lastChild;\n }\n }\n\n /**\n * Removes one character at a time from the text until its width or\n * height is beneath the passed-in max param.\n */\n function truncate(target, maxHeight) {\n if (!maxHeight) {\n return;\n }\n\n /**\n * Resets global variables.\n */\n function reset() {\n splitOnChars = opt.splitOnChars.slice(0);\n splitChar = splitOnChars[0];\n chunks = null;\n lastChunk = null;\n }\n\n var nodeValue = target.nodeValue.replace(opt.truncationChar, \"\");\n\n //Grab the next chunks\n if (!chunks) {\n //If there are more characters to try, grab the next one\n if (splitOnChars.length > 0) {\n splitChar = splitOnChars.shift();\n }\n //No characters to chunk by. Go character-by-character\n else {\n splitChar = \"\";\n }\n\n chunks = nodeValue.split(splitChar);\n }\n\n //If there are chunks left to remove, remove the last one and see if\n // the nodeValue fits.\n if (chunks.length > 1) {\n // console.log('chunks', chunks);\n lastChunk = chunks.pop();\n // console.log('lastChunk', lastChunk);\n applyEllipsis(target, chunks.join(splitChar));\n }\n //No more chunks can be removed using this character\n else {\n chunks = null;\n }\n\n //Insert the custom HTML before the truncation character\n if (truncationHTMLContainer) {\n target.nodeValue = target.nodeValue.replace(\n opt.truncationChar,\n \"\"\n );\n element.innerHTML =\n target.nodeValue +\n \" \" +\n truncationHTMLContainer.innerHTML +\n opt.truncationChar;\n }\n\n //Search produced valid chunks\n if (chunks) {\n //It fits\n if (element.clientHeight <= maxHeight) {\n //There's still more characters to try splitting on, not quite done yet\n if (splitOnChars.length >= 0 && splitChar != \"\") {\n applyEllipsis(\n target,\n chunks.join(splitChar) + splitChar + lastChunk\n );\n chunks = null;\n }\n //Finished!\n else {\n return element.innerHTML;\n }\n }\n }\n //No valid chunks produced\n else {\n //No valid chunks even when splitting by letter, time to move\n //on to the next node\n if (splitChar == \"\") {\n applyEllipsis(target, \"\");\n target = getLastChild(element);\n\n reset();\n }\n }\n\n //If you get here it means still too big, let's keep truncating\n if (opt.animate) {\n setTimeout(\n function() {\n truncate(target, maxHeight);\n },\n opt.animate === true ? 10 : opt.animate\n );\n } else {\n return truncate(target, maxHeight);\n }\n }\n\n function applyEllipsis(elem, str) {\n elem.nodeValue = str + opt.truncationChar;\n }\n\n // CONSTRUCTOR ________________________________________________________________\n\n if (clampValue == \"auto\") {\n clampValue = getMaxLines();\n } else if (isCSSValue) {\n clampValue = getMaxLines(parseInt(clampValue));\n }\n\n var clampedText;\n if (supportsNativeClamp && opt.useNativeClamp) {\n sty.overflow = \"hidden\";\n sty.textOverflow = \"ellipsis\";\n sty.webkitBoxOrient = \"vertical\";\n sty.display = \"-webkit-box\";\n sty.webkitLineClamp = clampValue;\n\n if (isCSSValue) {\n sty.height = opt.clamp + \"px\";\n }\n } else {\n var height = getMaxHeight(clampValue);\n if (height <= element.clientHeight) {\n clampedText = truncate(getLastChild(element), height);\n }\n }\n\n return {\n original: originalText,\n clamped: clampedText\n };\n }\n\n window.$clamp = clamp;\n})();\n","document.addEventListener(\n \"DOMContentLoaded\",\n () => {\n const changeOption = (selector, label) => {\n const field = document.querySelector(selector);\n if (field) {\n const option = field.querySelector(\"option:first-child\");\n if (option) {\n option.innerHTML = label;\n option.disabled = true;\n }\n }\n };\n\n changeOption('#buddypress select[name$=\"day\"]', \"Geboortedag\");\n changeOption('#buddypress select[name$=\"month\"]', \"Geboortemaand\");\n changeOption('#buddypress select[name$=\"year\"]', \"Geboortejaar\");\n },\n { passive: true }\n);\n","'use strict';\n\nvar utils = require('../utils');\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 {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\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 status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\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","(() => {\n const backTop = document.getElementsByClassName(\"js-back-to-top\")[0];\n if (backTop) {\n const dataElement = backTop.getAttribute(\"data-element\");\n const scrollElement = dataElement ? document.querySelector(dataElement) : window;\n\n const //scroll to top duration\n scrollDuration = parseInt(backTop.getAttribute(\"data-duration\")) || 300;\n\n const //show back-to-top if scrolling > scrollOffset\n scrollOffset = parseInt(backTop.getAttribute(\"data-offset\")) || 0;\n\n let scrolling = false;\n\n //detect click on back-to-top link\n backTop.addEventListener(\"click\", (event) => {\n event.preventDefault();\n if (!window.requestAnimationFrame) {\n scrollElement.scrollTo(0, 0);\n } else {\n dataElement ? scrollTo(0, scrollDuration, false, scrollElement) : scrollTo(0, scrollDuration);\n }\n //move the focus to the #top-element - don't break keyboard navigation\n moveFocus(document.getElementById(backTop.getAttribute(\"href\").replace(\"#\", \"\")));\n });\n\n //listen to the window scroll and update back-to-top visibility\n checkBackToTop();\n if (scrollOffset > 0) {\n scrollElement.addEventListener(\n \"scroll\",\n (event) => {\n if (!scrolling) {\n scrolling = true;\n !window.requestAnimationFrame\n ? setTimeout(() => {\n checkBackToTop();\n }, 250)\n : window.requestAnimationFrame(checkBackToTop);\n }\n },\n { passive: true }\n );\n }\n\n function checkBackToTop() {\n let windowTop = scrollElement.scrollTop || document.documentElement.scrollTop;\n if (!dataElement) {\n windowTop = window.scrollY || document.documentElement.scrollTop;\n }\n if (windowTop >= scrollOffset) {\n backTop.classList.add(\"back-to-top--is-visible\");\n } else {\n backTop.classList.remove(\"back-to-top--is-visible\");\n }\n scrolling = false;\n }\n\n function scrollTo(final, duration, cb, scrollEl) {\n const element = scrollEl || window;\n let start = element.scrollTop || document.documentElement.scrollTop;\n let currentTime = null;\n\n if (!scrollEl) start = window.scrollY || document.documentElement.scrollTop;\n\n const animateScroll = (timestamp) => {\n if (!currentTime) currentTime = timestamp;\n let progress = timestamp - currentTime;\n if (progress > duration) progress = duration;\n const val = Math.easeInOutQuad(progress, start, final - start, duration);\n element.scrollTo(0, val);\n if (progress < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n cb && cb();\n }\n };\n\n window.requestAnimationFrame(animateScroll);\n }\n\n function moveFocus(element) {\n if (!element) element = document.getElementsByTagName(\"body\")[0];\n element.focus();\n if (document.activeElement !== element) {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n }\n }\n\n Math.easeInOutQuad = function (t, b, c, d) {\n t /= d / 2;\n if (t < 1) return (c / 2) * t * t + b;\n t--;\n return (-c / 2) * (t * (t - 2) - 1) + b;\n };\n }\n})();\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\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\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\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","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.12\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = false;\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true, capture: true } : true;\n\n\t document.addEventListener('DOMContentLoaded', setPersist, true);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput, true);\n\t window.addEventListener('pointermove', setIntent, true);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput, true);\n\t window.addEventListener('MSPointerMove', setIntent, true);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput, true);\n\t window.addEventListener('mousemove', setIntent, true);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput, true);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput, true);\n\t window.addEventListener('keyup', setInput, true);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement, true);\n\t window.addEventListener('focusout', clearElement, true);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') === 'false' || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\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 var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\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 ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n 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(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\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 // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\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(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, 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(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\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 // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && 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 (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\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 || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","// Add classes to blocks that normally don't have classes.\nconst addClassToBlock = (props, blockType, attributes) => {\n const notDefined = typeof props.className === \"undefined\" || !props.className ? true : false;\n\n if (blockType.name === \"core/list\") {\n return Object.assign(props, {\n className: notDefined ? `wp-block-list` : `wp-block-list ${props.className}`,\n });\n }\n\n // if (blockType.name === \"core/paragraph\") {\n // return Object.assign(props, {\n // className: notDefined\n // ? \"wp-block-paragraph\"\n // : `wp-block-paragraph ${props.className}`\n // });\n // }\n\n return props;\n};\n\nif (wp.hooks !== undefined) {\n wp.hooks.addFilter(\"blocks.getSaveContent.extraProps\", \"wp-soup/add-class-to-blocks\", addClassToBlock);\n}\n\n/**\n * returns blocks on page, all on same level (instead of innerblocks)\n * @returns [{}]\n */\nfunction wpSoupGetBlocksOnPage() {\n let blocks = [];\n // get all blocks, and call recursive function for it\n wp.data\n .select(\"core/block-editor\")\n .getBlocks()\n .forEach((block) => {\n blocks = [...blocks, ...wpSoupGetBlocksFromBlock(block)];\n });\n return blocks;\n}\n\n/**\n * recursive method for wpSoupGetBlocksOnPage()\n * @param block\n * @returns [{}]\n */\nfunction wpSoupGetBlocksFromBlock(block) {\n let blocks = [block];\n if (block.hasOwnProperty(\"innerBlocks\")) {\n block.innerBlocks.forEach((inner_block) => {\n blocks = [...blocks, ...wpSoupGetBlocksFromBlock(inner_block)];\n });\n }\n return blocks;\n}\n\nif (wp.domReady !== undefined) {\n wp.domReady(() => {\n /**\n * Deprecated blocks\n * `wp_soup_deprecated_blocks` gets shared from php, it's a constant array\n * of strings\n */\n if (typeof wp_soup_deprecated_blocks !== \"undefined\") {\n const available_blocks = wp.blocks.getBlockTypes();\n const blocks_in_page = wpSoupGetBlocksOnPage();\n\n wp_soup_deprecated_blocks.forEach((deprecated_block) => {\n // check if the deprecated block is used on this page\n const current_result = blocks_in_page.find((block) => {\n return block.name === deprecated_block;\n });\n\n // if it's on the page, set it in the deprecated blocks category\n // we do this because unregistering it would break the page.\n if (current_result !== undefined) {\n const result = available_blocks.find((block) => {\n return block.name === deprecated_block;\n });\n if (result !== undefined) {\n result.category = \"deprecated\";\n }\n }\n\n // if it's not used on the page, we can fully remove it instead\n else {\n wp.blocks.unregisterBlockType(deprecated_block);\n }\n });\n }\n });\n}\n\ndocument.addEventListener(\n \"DOMContentLoaded\",\n () => {\n for (let i = 1; i < 10; i++) {\n const clampTo = document.querySelectorAll(`.clamp-to-${i}`);\n for (c of clampTo) {\n window.$clamp(c, { clamp: i });\n }\n }\n },\n { passive: true }\n);\n","module.exports = require('./lib/axios');","document.addEventListener(\n `DOMContentLoaded`,\n () => {\n /**\n * Add change event to the price toggle switch to show/hide prices.\n */\n const priceToggle = document.querySelector(\".ms_pricing .js-time-period-switch input\");\n const priceContent = document.querySelectorAll(\".ms_pricing .price-content\");\n const extraPriceContent = document.querySelectorAll(\".ms_pricing .extra-price-content\");\n if (priceToggle) {\n priceToggle.addEventListener(\n \"change\",\n () => {\n if (priceContent) {\n for (const priceBlock of priceContent) {\n priceBlock.classList.toggle(\"hide\");\n }\n }\n if (extraPriceContent) {\n for (const priceBlock of extraPriceContent) {\n priceBlock.classList.toggle(\"hide\");\n }\n }\n Foundation.reInit(\"equalizer\");\n },\n { passive: true }\n );\n }\n\n const priceBlocks = document.querySelectorAll(\".ms_pricing .price-block\");\n if (priceBlocks) {\n for (const block of priceBlocks) {\n const title = block.querySelector(\".title\").textContent;\n const buttonWC = block.querySelector(\".cta-button.woocommerce a\");\n const buttonWCHref = buttonWC ? buttonWC.href : undefined;\n const button = block.querySelector(\".cta-button:not(.woocommerce) a\");\n const buttonHref = button ? button.href : undefined;\n const extraOptions = block.querySelectorAll(\".extra-options input\");\n let selectedOptionsID = [];\n let selectedOptions = [];\n if (extraOptions) {\n for (const [index, option] of extraOptions.entries()) {\n const optionName = option.parentElement.parentElement.textContent.trim();\n const optionID = option.parentElement.parentElement.dataset.id;\n const firstPriceNode = block.querySelector(\".price-content.first .price .number\");\n const secondPriceNode = block.querySelector(\".price-content.second .price .number\");\n option.addEventListener(\n \"change\",\n function () {\n const optionPrice = parseFloat(this.dataset.price);\n const optionPrice2 = parseFloat(this.dataset.secondPrice);\n // Apply first extra option price to \"left label price\".\n if (optionPrice) {\n // First price.\n if (firstPriceNode) {\n const firstPrice = parseFloat(\n firstPriceNode.textContent.replace(/(\\d),(?=\\d)/g, \"$1.\")\n );\n const newFirstPriceHTML = this.checked\n ? firstPrice + optionPrice\n : firstPrice - optionPrice;\n firstPriceNode.textContent = newFirstPriceHTML\n .toFixed(2)\n .replace(\".\", \",\")\n .replace(\",00\", \"\");\n }\n }\n // Apply second extra option price to \"right label price\".\n if (optionPrice2) {\n // Second price.\n if (secondPriceNode) {\n const secondPrice = parseFloat(\n secondPriceNode.textContent.replace(/(\\d),(?=\\d)/g, \"$1.\")\n );\n const secondPriceHTML = this.checked\n ? secondPrice + optionPrice2\n : secondPrice - optionPrice2;\n secondPriceNode.textContent = secondPriceHTML\n .toFixed(2)\n .replace(\".\", \",\")\n .replace(\",00\", \"\");\n }\n }\n\n // Add parameters to the URL if extra options have been selected.\n if (title && button) {\n // Add or remove selected extra option.\n this.checked\n ? selectedOptions.splice(index, 0, optionName)\n : (selectedOptions = selectedOptions.filter((value) => value !== optionName));\n // Create the query string for the button.\n const params = new URLSearchParams();\n const options = selectedOptions.join(\" & \");\n const newParams = {\n ...(options !== \"\" && { \"extra-options\": options }),\n };\n for (const [key, val] of Object.entries(newParams)) {\n params.append(key, val);\n }\n button.href = buttonHref + params.toString();\n }\n\n if (buttonWC && optionID) {\n // Add or remove selected extra option.\n this.checked\n ? selectedOptionsID.splice(index, 0, optionID)\n : (selectedOptionsID = selectedOptionsID.filter((value) => value !== optionID));\n const optionsString = selectedOptionsID.join(\",\");\n buttonWC.href =\n optionsString !== \"\" ? buttonWCHref + \",\" + optionsString : buttonWCHref;\n buttonWC.dataset.id = buttonWC.href.split(\"=\")[1];\n }\n },\n { passive: true }\n );\n }\n }\n }\n }\n },\n { passive: true }\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');\nvar defaults = require('../defaults');\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 var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\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 Array.isArray(val);\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 a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\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) && (isArrayBuffer(val.buffer));\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 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 plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\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 FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\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.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\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 (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\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\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\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 isPlainObject: isPlainObject,\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 extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","module.exports = jQuery;","'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","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\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\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 // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\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// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n"],"sourceRoot":""}