{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:////srv/www/e/europeansolar.nl/vhosts/www/htdocs/content/themes/european-solar-theme/assets/js/script.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:///./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__","defaults","locale","document","navigator","locales","notice","noticeStyle","position","dismissButton","dismissButtonStyle","learnMoreLink","learnMoreLinkStyle","now","cookieExpire","element","fade","setTimeout","properties","source","extendDefaults","window","instance","testCookie","getNoticeCookie","params","arguments","noticeText","getStringForCurrentLocale","createNotice","learnMoreLinkText","createLearnMoreLink","buttonText","createDismissButton","e","setDismissNoticeCookie","parseInt","fadeElementOut","noticeDomElement","cookieNoticeJS","url","test","toString","Array","isArray","arr","length","push","Promise","A","recalculate","useContainerForBreakpoints","container","clientWidth","innerWidth","columns","b","margin","x","y","keys","breakAt","mobileFirst","options","responsiveOptions","docWidth","a","O","parseFloat","replace","u","rows","v","style","height","M","offsetHeight","isNaN","forEach","top","left","cols","dataset","macyComplete","tmpRows","f","lastcol","C","h","nodeName","byCss","selectors","split","RegExp","querySelectorAll","getElementsByClassName","substring","getElementsByTagName","getElementById","running","events","add","run","shift","clear","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","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","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","userAgent","lastTime","nextTime","max","performance","start","oThis","aArgs","fToBind","fNOP","fBound","concat","Plugin","_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","_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","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","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/european-solar-theme.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","/**\n * Cookie Notice JS\n * @author Alessandro Benoit\n */\n;\n(function () {\n\n \"use strict\";\n\n /**\n * Store current instance\n */\n var instance;\n\n /**\n * Defaults values\n * @type object\n */\n var defaults = {\n 'messageLocales': {\n 'it': 'Utilizziamo i cookie per essere sicuri che tu possa avere la migliore esperienza sul nostro sito. Se continui ad utilizzare questo sito assumiamo che tu ne sia felice.',\n 'en': 'We use cookies to make sure you can have the best experience on our website. If you continue to use this site we assume that you will be happy with it.',\n 'de': 'Wir verwenden Cookies um sicherzustellen dass Sie das beste Erlebnis auf unserer Website haben.',\n 'fr': 'Nous utilisons des cookies afin d\\'être sûr que vous pouvez avoir la meilleure expérience sur notre site. Si vous continuez à utiliser ce site, nous supposons que vous acceptez.'\n },\n\n 'cookieNoticePosition': 'bottom',\n\n 'learnMoreLinkEnabled': false,\n\n 'learnMoreLinkHref': '/cookie-banner-information.html',\n\n 'learnMoreLinkText': {\n 'it': 'Saperne di più',\n 'en': 'Learn more',\n 'de': 'Mehr erfahren',\n 'fr': 'En savoir plus'\n },\n\n 'buttonLocales': {\n 'en': 'Ok'\n },\n\n 'expiresIn': 30,\n 'buttonBgColor': '#d35400',\n 'buttonTextColor': '#fff',\n 'noticeBgColor': '#000',\n 'noticeTextColor': '#fff',\n 'linkColor': '#009fdd'\n };\n\n /**\n * Initialize cookie notice on DOMContentLoaded\n * if not already initialized with alt params\n */\n document.addEventListener('DOMContentLoaded', function () {\n if (!instance) {\n new cookieNoticeJS();\n }\n });\n\n /**\n * Constructor\n * @constructor\n */\n window.cookieNoticeJS = function () {\n\n // If an instance is already set stop here\n if (instance !== undefined) {\n return;\n }\n\n // Set current instance\n instance = this;\n\n // If cookies are not supported or notice cookie is already set\n if (!testCookie() || getNoticeCookie()) {\n return;\n }\n\n // Extend default params\n var params = extendDefaults(defaults, arguments[0] || {});\n\n // Get current locale for notice text\n var noticeText = getStringForCurrentLocale(params.messageLocales);\n\n // Create notice\n var notice = createNotice(noticeText, params.noticeBgColor, params.noticeTextColor, params.cookieNoticePosition);\n\n var learnMoreLink;\n\n if (params.learnMoreLinkEnabled) {\n var learnMoreLinkText = getStringForCurrentLocale(params.learnMoreLinkText);\n\n learnMoreLink = createLearnMoreLink(learnMoreLinkText, params.learnMoreLinkHref, params.linkColor);\n }\n\n // Get current locale for button text\n var buttonText = getStringForCurrentLocale(params.buttonLocales);\n\n // Create dismiss button\n var dismissButton = createDismissButton(buttonText, params.buttonBgColor, params.buttonTextColor);\n\n // Dismiss button click event\n dismissButton.addEventListener('click', function (e) {\n e.preventDefault();\n setDismissNoticeCookie(parseInt(params.expiresIn + \"\", 10) * 60 * 1000 * 60 * 24);\n fadeElementOut(notice);\n });\n\n // Append notice to the DOM\n var noticeDomElement = document.body.appendChild(notice);\n\n if (!!learnMoreLink) {\n noticeDomElement.appendChild(learnMoreLink);\n }\n\n noticeDomElement.appendChild(dismissButton);\n\n };\n\n /**\n * Get the string for the current locale\n * and fallback to \"en\" if none provided\n * @param locales\n * @returns {*}\n */\n function getStringForCurrentLocale(locales) {\n var locale = (\n document.documentElement.lang ||\n navigator.language||\n navigator.userLanguage\n ).substr(0, 2);\n\n return (locales[locale]) ? locales[locale] : locales['en'];\n }\n\n /**\n * Test if cookies are enabled\n * @returns {boolean}\n */\n function testCookie() {\n document.cookie = 'testCookie=1';\n return document.cookie.indexOf('testCookie') != -1;\n }\n\n /**\n * Test if notice cookie is there\n * @returns {boolean}\n */\n function getNoticeCookie() {\n return document.cookie.indexOf('cookie_notice') != -1;\n }\n\n /**\n * Create notice\n * @param message\n * @param bgColor\n * @param textColor\n * @param position\n * @returns {HTMLElement}\n */\n function createNotice(message, bgColor, textColor, position) {\n\n var notice = document.createElement('div'),\n noticeStyle = notice.style;\n\n notice.innerHTML = message + ' ';\n notice.setAttribute('id', 'cookieNotice');\n\n noticeStyle.position = 'fixed';\n\n if (position === 'top') {\n noticeStyle.top = '0';\n } else {\n noticeStyle.bottom = '0';\n }\n\n noticeStyle.left = '0';\n noticeStyle.right = '0';\n noticeStyle.background = bgColor;\n noticeStyle.color = textColor;\n noticeStyle[\"z-index\"] = '999';\n noticeStyle.padding = '10px 5px';\n noticeStyle[\"text-align\"] = 'center';\n noticeStyle[\"font-size\"] = \"12px\";\n noticeStyle[\"line-height\"] = \"28px\";\n noticeStyle.fontFamily = 'Helvetica neue, Helvetica, sans-serif';\n\n return notice;\n }\n\n /**\n * Create dismiss button\n * @param message\n * @param buttonColor\n * @param buttonTextColor\n * @returns {HTMLElement}\n */\n function createDismissButton(message, buttonColor, buttonTextColor) {\n\n var dismissButton = document.createElement('a'),\n dismissButtonStyle = dismissButton.style;\n\n // Dismiss button\n dismissButton.href = '#';\n dismissButton.innerHTML = message;\n\n dismissButton.className = 'confirm';\n\n // Dismiss button style\n dismissButtonStyle.background = buttonColor;\n dismissButtonStyle.color = buttonTextColor;\n dismissButtonStyle['text-decoration'] = 'none';\n dismissButtonStyle.display = 'inline-block';\n dismissButtonStyle.padding = '0 15px';\n dismissButtonStyle.margin = '0 0 0 10px';\n\n return dismissButton;\n\n }\n\n /**\n * Create dismiss button\n * @param learnMoreLinkText\n * @param learnMoreLinkHref\n * @param linkColor\n * @returns {HTMLElement}\n */\n function createLearnMoreLink(learnMoreLinkText, learnMoreLinkHref, linkColor) {\n\n var learnMoreLink = document.createElement('a'),\n learnMoreLinkStyle = learnMoreLink.style;\n\n // Dismiss button\n learnMoreLink.href = learnMoreLinkHref;\n learnMoreLink.textContent = learnMoreLinkText;\n learnMoreLink.target = '_blank';\n learnMoreLink.className = 'learn-more';\n\n // Dismiss button style\n learnMoreLinkStyle.color = linkColor;\n learnMoreLinkStyle['text-decoration'] = 'none';\n learnMoreLinkStyle.display = 'inline';\n\n return learnMoreLink;\n\n }\n\n /**\n * Set sismiss notice cookie\n * @param expireIn\n */\n function setDismissNoticeCookie(expireIn) {\n var now = new Date(),\n cookieExpire = new Date();\n\n cookieExpire.setTime(now.getTime() + expireIn);\n document.cookie = \"cookie_notice=1; expires=\" + cookieExpire.toUTCString() + \"; path=/;\";\n }\n\n /**\n * Fade a given element out\n * @param element\n */\n function fadeElementOut(element) {\n element.style.opacity = 1;\n (function fade() {\n (element.style.opacity -= .1) < 0.01 ? element.parentNode.removeChild(element) : setTimeout(fade, 40)\n })();\n }\n\n /**\n * Utility method to extend defaults with user options\n * @param source\n * @param properties\n * @returns {*}\n */\n function extendDefaults(source, properties) {\n var property;\n for (property in properties) {\n if (properties.hasOwnProperty(property)) {\n if (typeof source[property] === 'object') {\n source[property] = extendDefaults(source[property], properties[property]);\n } else {\n source[property] = properties[property];\n }\n }\n }\n return source;\n }\n\n /* test-code */\n cookieNoticeJS.extendDefaults = extendDefaults;\n cookieNoticeJS.clearInstance = function () {\n instance = undefined;\n };\n /* end-test-code */\n\n}());","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","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/e/europeansolar.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","// 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":""}