{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/macy/dist/macy.js","webpack:////srv/www/z/zeilmakerijdevriesmaritiem.nl/vhosts/www/htdocs/content/themes/maritheme/resources/marginals/header/logo_menu_overlay/script.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./assets/js/vendors/animate-on-scroll.js","webpack:///./node_modules/foundation-sites/js/foundation.core.utils.js","webpack:///./node_modules/foundation-sites/js/foundation.util.mediaQuery.js","webpack:///./node_modules/foundation-sites/js/foundation.core.js","webpack:///./node_modules/foundation-sites/js/foundation.core.plugin.js","webpack:///./node_modules/foundation-sites/js/foundation.util.keyboard.js","webpack:///./node_modules/foundation-sites/js/foundation.accordion.js","webpack:///./node_modules/foundation-sites/js/foundation.util.nest.js","webpack:///./node_modules/foundation-sites/js/foundation.accordionMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.util.box.js","webpack:///./node_modules/foundation-sites/js/foundation.positionable.js","webpack:///./node_modules/foundation-sites/js/foundation.util.motion.js","webpack:///./node_modules/foundation-sites/js/foundation.util.triggers.js","webpack:///./node_modules/foundation-sites/js/foundation.util.touch.js","webpack:///./node_modules/foundation-sites/js/foundation.dropdown.js","webpack:///./node_modules/foundation-sites/js/foundation.dropdownMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.util.imageLoader.js","webpack:///./node_modules/foundation-sites/js/foundation.equalizer.js","webpack:///./node_modules/foundation-sites/js/foundation.drilldown.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveToggle.js","webpack:///./node_modules/foundation-sites/js/foundation.reveal.js","webpack:///./node_modules/foundation-sites/js/foundation.slider.js","webpack:///./node_modules/foundation-sites/js/foundation.smoothScroll.js","webpack:///./node_modules/foundation-sites/js/foundation.sticky.js","webpack:///./node_modules/foundation-sites/js/foundation.tabs.js","webpack:///./node_modules/foundation-sites/js/foundation.toggler.js","webpack:///./node_modules/foundation-sites/js/foundation.tooltip.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveAccordionTabs.js","webpack:///./assets/js/vendors/foundation.js","webpack:///./assets/js/vendors/macy.js","webpack:///./assets/js/vendors/object-fit-images.js","webpack:///./node_modules/countup.js/dist/countUp.min.js","webpack:///./assets/js/scripts/count-on-scroll.js","webpack:///./assets/js/scripts/favorites.js","webpack:///./assets/js/scripts/images.js","webpack:///./assets/js/scripts/menu.js","webpack:///./assets/js/scripts/woocommerce.js","webpack:///./assets/js/scripts/wp-admin.js","webpack:///./src/Core/Blocks/Content/common/related_pages/script.js","webpack:///./src/Core/Blocks/Content/common/tag_filter/script.js","webpack:///./src/Core/Blocks/Marginals/header/thin_topbar_menu/script.js","webpack:////srv/www/z/zeilmakerijdevriesmaritiem.nl/vhosts/www/htdocs/content/themes/maritheme/assets/js/script.js","webpack:///./node_modules/process/browser.js","webpack:///./assets/js/scripts/cookies.js","webpack:///./node_modules/aos/dist/aos.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./assets/js/scripts/ie11.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./assets/js/scripts/resizes.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./assets/js/vendors/mobile.js","webpack:////srv/www/z/zeilmakerijdevriesmaritiem.nl/vhosts/www/htdocs/content/themes/maritheme/resources/blocks/common/home_header/script.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./src/Core/Blocks/Content/common/reviews/script.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/shared/dom.js","webpack:///./node_modules/swiper/shared/get-support.js","webpack:///./node_modules/swiper/shared/get-device.js","webpack:///./node_modules/swiper/shared/get-browser.js","webpack:///./node_modules/swiper/shared/utils.js","webpack:///./node_modules/swiper/core/transition/transitionEmit.js","webpack:///./node_modules/swiper/core/events/onTouchStart.js","webpack:///./node_modules/swiper/core/events/onTouchMove.js","webpack:///./node_modules/swiper/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/core/events/onResize.js","webpack:///./node_modules/swiper/core/events/onClick.js","webpack:///./node_modules/swiper/core/events/onScroll.js","webpack:///./node_modules/swiper/core/events/index.js","webpack:///./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/core/check-overflow/index.js","webpack:///./node_modules/swiper/core/defaults.js","webpack:///./node_modules/swiper/core/moduleExtendParams.js","webpack:///./node_modules/swiper/core/core.js","webpack:///./node_modules/swiper/core/events-emitter.js","webpack:///./node_modules/swiper/core/update/index.js","webpack:///./node_modules/swiper/core/update/updateSize.js","webpack:///./node_modules/swiper/core/update/updateSlides.js","webpack:///./node_modules/swiper/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/core/update/updateProgress.js","webpack:///./node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/core/translate/index.js","webpack:///./node_modules/swiper/core/translate/getTranslate.js","webpack:///./node_modules/swiper/core/translate/setTranslate.js","webpack:///./node_modules/swiper/core/translate/minTranslate.js","webpack:///./node_modules/swiper/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/core/translate/translateTo.js","webpack:///./node_modules/swiper/core/transition/index.js","webpack:///./node_modules/swiper/core/transition/setTransition.js","webpack:///./node_modules/swiper/core/transition/transitionStart.js","webpack:///./node_modules/swiper/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/core/slide/index.js","webpack:///./node_modules/swiper/core/slide/slideTo.js","webpack:///./node_modules/swiper/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/core/slide/slideNext.js","webpack:///./node_modules/swiper/core/slide/slidePrev.js","webpack:///./node_modules/swiper/core/slide/slideReset.js","webpack:///./node_modules/swiper/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/core/loop/index.js","webpack:///./node_modules/swiper/core/loop/loopCreate.js","webpack:///./node_modules/swiper/core/loop/loopFix.js","webpack:///./node_modules/swiper/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/core/grab-cursor/index.js","webpack:///./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/core/breakpoints/index.js","webpack:///./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/core/classes/index.js","webpack:///./node_modules/swiper/core/classes/addClasses.js","webpack:///./node_modules/swiper/core/classes/removeClasses.js","webpack:///./node_modules/swiper/core/images/index.js","webpack:///./node_modules/swiper/core/images/loadImage.js","webpack:///./node_modules/swiper/core/images/preloadImages.js","webpack:///./node_modules/swiper/core/modules/resize/resize.js","webpack:///./node_modules/swiper/core/modules/observer/observer.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///./node_modules/swiper/modules/navigation/navigation.js","webpack:///./node_modules/swiper/shared/classes-to-selector.js","webpack:///./node_modules/swiper/modules/pagination/pagination.js","webpack:///./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/modules/controller/controller.js","webpack:///./node_modules/swiper/modules/autoplay/autoplay.js","webpack:///./node_modules/swiper/modules/thumbs/thumbs.js","webpack:///./node_modules/swiper/shared/effect-init.js","webpack:///./node_modules/swiper/shared/effect-target.js","webpack:///./node_modules/swiper/shared/create-shadow.js","webpack:///./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/Core/Blocks/Content/common/featured_menu_items/script.js","webpack:///./assets/js/vendors/parallax.js","webpack:///./assets/js/vendors/clamp.js","webpack:///./assets/js/scripts/buddypress.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./assets/js/scripts/scroll-to-top.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/what-input/dist/what-input.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./assets/js/scripts/blocks.js","webpack:///./node_modules/axios/index.js","webpack:///./src/Core/Blocks/Content/common/pricing/script.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///external \"jQuery\"","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/axios.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","AxiosError","CanceledError","message","this","ERR_CANCELED","inherits","__CANCEL__","url","test","toString","Array","isArray","arr","e","length","push","arguments","window","Promise","A","recalculate","useContainerForBreakpoints","container","clientWidth","innerWidth","columns","b","margin","x","y","keys","breakAt","mobileFirst","options","responsiveOptions","docWidth","a","parseInt","O","parseFloat","replace","u","rows","v","style","height","M","offsetHeight","isNaN","forEach","position","top","left","cols","dataset","macyComplete","tmpRows","f","lastcol","C","h","nodeName","byCss","selectors","split","RegExp","document","querySelectorAll","getElementsByClassName","substring","getElementsByTagName","getElementById","running","events","add","run","shift","clear","instance","data","on","emit","g","naturalHeight","naturalWidth","width","E","complete","addEventListener","then","constants","EVENT_IMAGE_LOAD","img","catch","EVENT_IMAGE_ERROR","w","all","EVENT_IMAGE_COMPLETE","I","clearTimeout","setTimeout","EVENT_RESIZE","queue","_","debug","console","error","N","resizer","T","useOwnImageLoader","waitForImages","EVENT_INITIALIZED","L","getComputedStyle","getPropertyValue","V","children","from","filter","offsetParent","trueOrder","EVENT_RECALCULATED","R","assign","k","useImageLoader","onInit","cancelLegacy","createElement","querySelector","getAttribute","id","Math","floor","random","apply","removeAttribute","Element","q","init","warn","recalculateOnImageLoad","runOnImageLoad","remove","removeEventListener","reInit","toggle","body","logo","overlay","overlayItems","li","utils","obj","formData","FormData","stack","convertValue","isDate","toISOString","isArrayBuffer","isTypedArray","Blob","Buffer","build","parentKey","isPlainObject","indexOf","Error","isUndefined","fullKey","endsWith","JSON","stringify","toArray","el","append","pop","baseURL","relativeURL","AOS","rtl","$","attr","GetYoDigits","namespace","str","chars","charsLength","transitionend","$elem","end","transitions","elem","transition","triggerHandler","onLoad","handler","didLoad","readyState","eventType","cb","one","ignoreMousedisappear","ignoreLeaveWindow","ignoreReappear","eLeave","rest","callback","relatedTarget","hasFocus","eReenter","currentTarget","has","target","matchMedia","styleMedia","media","info","script","type","parentNode","insertBefore","head","appendChild","currentStyle","matchMedium","text","styleSheet","cssText","textContent","matches","MediaQuery","queries","current","_init","isInitialized","appendTo","namedQueries","extractedStyles","css","styleObject","trim","slice","reduce","ret","param","parts","val","decodeURIComponent","parseStyleToObject","_getCurrentSize","_watcher","_reInit","atLeast","size","query","only","upTo","nextSize","next","is","bpSize","bpModifier","queryIndex","findIndex","_getQueryName","nextQuery","TypeError","matched","newSize","currentSize","trigger","Foundation","version","_plugins","_uuids","plugin","className","functionName","attrName","hyphenate","registerPlugin","pluginName","constructor","toLowerCase","uuid","$element","unregisterPlugin","prop","splice","removeAttr","removeData","plugins","isJQ","each","_this","plgs","foundation","err","reflow","find","addBack","$el","opts","option","opt","map","parseValue","er","getFnName","addToJquery","fn","method","$noJS","removeClass","args","plugClass","ReferenceError","Function","results","exec","util","throttle","func","delay","timer","context","Date","now","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","navigator","userAgent","lastTime","nextTime","max","performance","start","oThis","aArgs","fToBind","fNOP","fBound","concat","Plugin","element","_setup","getPluginName","_destroy","keyCodes","9","13","27","32","35","36","37","38","39","40","commands","findFocusable","sort","aTabIndex","bTabIndex","parseKey","event","which","keyCode","String","fromCharCode","toUpperCase","shiftKey","ctrlKey","altKey","Keyboard","kcs","kc","getKeyCodes","handleKey","component","functions","commandList","zfIsKeyHandled","ltr","Rtl","extend","returnValue","handled","unhandled","register","componentName","cmds","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","preventDefault","focus","releaseFocus","off","Accordion","defaults","_isInitializing","$tabs","idx","$content","linkId","$initActive","_initialAnchor","prev","_openSingleTab","_checkDeepLink","anchor","location","hash","$anchor","$link","parent","hasClass","_closeAllTabs","deepLinkSmudge","offset","animate","scrollTop","deepLinkSmudgeOffset","deepLinkSmudgeDelay","deepLink","_events","$tabContent","$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","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","_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","logoMobile","language","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","funnelPartList","firstFunnelPart","firstFunnelPartInput","secondFunnelPart","secondFunnelPartInput","funnelPartHelp","funnelPartHelpInput","comments","upload","personalData","footer","interval","scrollIntoView","selectedIndex","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","env","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","translationNotice","cname","cvalue","exdays","expires","setCookie","loaded","default","easing","disable","throttleDelay","debounceDelay","disableMutationObserver","atob","mobile","phone","tablet","S","node","isSupported","setAttribute","ready","refresh","refreshHard","leading","maxWait","trailing","cancel","flush","valueOf","iterator","NaN","self","WebKitMutationObserver","MozMutationObserver","addedNodes","removedNodes","aos","vendor","opera","configurable","writable","substr","classList","anchorPlacement","offsetLeft","offsetTop","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","OFI","propRegex","testImg","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","setPlaceholder","placeholder","onImageReady","fixOne","parsed","fontFamily","props","getStyle","ofi","skipTest","srcset","descriptors","set","ss","keepSrcUsable","picturefill","pf","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundPosition","backgroundRepeat","backgroundOrigin","backgroundSize","fix","startAutoMode","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","buildURL","dispatchRequest","mergeConfig","buildFullPath","validator","validators","Axios","instanceConfig","interceptors","request","configOrUrl","config","transitional","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","clarifyTimeoutError","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","reject","getUri","fullPath","params","paramsSerializer","generateHTTPMethod","isForm","headers","flexBasis","isMargin","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","len2","encodeChunk","lookup","Uint8Array","code","output","thisArg","encode","encodeURIComponent","serializedParams","isURLSearchParams","isObject","hashmarkIndex","scrollbox","scrollBarWidth","setScrollbarSize","epve","getEditorWidth","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","href","protocol","host","hostname","port","charAt","requestURL","isString","containers","msInitializeHomeHeaderSliders","homeHeaderThumbSlider","Swiper","loop","loopedSlides","spaceBetween","breakpoints","autoplay","effect","fadeEffect","crossFade","acf","validateStatus","status","ERR_BAD_REQUEST","ERR_BAD_RESPONSE","msInitializeReviewSlider","config1","config2","getMergedValue","source","merge","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","normalizeHeaderName","transitionalDefaults","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","transformRequest","isFormData","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isFileList","isObjectPayload","contentType","_FormData","rawValue","parser","encoder","parse","stringifySafely","transformResponse","strictJSONParsing","responseType","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","common","ssrDocument","childNodes","createElementNS","importNode","origin","getDocument","doc","ssrWindow","CustomEvent","screen","getWindow","win","Dom7","proto","__proto__","arrayFlat","res","arrayFilter","selector","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","classes","classNames","attrs","transform","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","handleEvent","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","evt","detail","dataIndex","transitionEnd","dom","fireCallBack","includeMargins","styles","box","clientTop","clientLeft","scrollX","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","newChild","tempDiv","firstChild","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","foundElements","found","removeChild","methodName","support","deviceCached","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","time","targetPosition","side","startPosition","translate","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","progress","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","gestures","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","isWebView","calcBrowser","transitionEmit","runCallbacks","activeIndex","previousIndex","touchEventsData","animating","preventInteractionOnTransition","cssMode","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","setBreakpoint","snapGrid","updateSlides","centeredSlides","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","onScroll","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListeners","updateOnWindowResize","isGridEnabled","grid","initialSlide","resizeObserver","createElements","setWrapperSize","virtualTranslate","breakpointsBase","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","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","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/maritheme.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.Macy=n()}(this,function(){\"use strict\";function t(t,n){var e=void 0;return function(){e&&clearTimeout(e),e=setTimeout(t,n)}}function n(t,n){for(var e=t.length,r=e,o=[];e--;)o.push(n(t[r-e-1]));return o}function e(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(window.Promise)return A(t,n,e);t.recalculate(!0,!0)}function r(t){for(var n=t.options,e=t.responsiveOptions,r=t.keys,o=t.docWidth,i=void 0,s=0;s=a&&(i=n.breakAt[a],O(i,e))}return e}function o(t){for(var n=t.options,e=t.responsiveOptions,r=t.keys,o=t.docWidth,i=void 0,s=r.length-1;s>=0;s--){var a=parseInt(r[s],10);o<=a&&(i=n.breakAt[a],O(i,e))}return e}function i(t){var n=t.useContainerForBreakpoints?t.container.clientWidth:window.innerWidth,e={columns:t.columns};b(t.margin)?e.margin={x:t.margin.x,y:t.margin.y}:e.margin={x:t.margin,y:t.margin};var i=Object.keys(t.breakAt);return t.mobileFirst?r({options:t,responsiveOptions:e,keys:i,docWidth:n}):o({options:t,responsiveOptions:e,keys:i,docWidth:n})}function s(t){return i(t).columns}function a(t){return i(t).margin}function c(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],e=s(t),r=a(t).x,o=100/e;if(!n)return o;if(1===e)return\"100%\";var i=\"px\";if(\"string\"==typeof r){var c=parseFloat(r);i=r.replace(c,\"\"),r=c}return r=(e-1)*r/e,\"%\"===i?o-r+\"%\":\"calc(\"+o+\"% - \"+r+i+\")\"}function u(t,n){var e=s(t.options),r=0,o=void 0,i=void 0;if(1===++n)return 0;i=a(t.options).x;var u=\"px\";if(\"string\"==typeof i){var l=parseFloat(i,10);u=i.replace(l,\"\"),i=l}return o=(i-(e-1)*i/e)*(n-1),r+=c(t.options,!1)*(n-1),\"%\"===u?r+o+\"%\":\"calc(\"+r+\"% + \"+o+u+\")\"}function l(t){var n=0,e=t.container,r=t.rows;v(r,function(t){n=t>n?t:n}),e.style.height=n+\"px\"}function p(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=s(t.options),i=a(t.options).y;M(t,o,e),v(n,function(n){var e=0,o=parseInt(n.offsetHeight,10);isNaN(o)||(t.rows.forEach(function(n,r){n2&&void 0!==arguments[2]&&arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=s(t.options),i=a(t.options).y;M(t,o,e),v(n,function(n){t.lastcol===o&&(t.lastcol=0);var e=C(n,\"height\");e=parseInt(n.offsetHeight,10),isNaN(e)||(n.style.position=\"absolute\",n.style.top=t.rows[t.lastcol]+\"px\",n.style.left=\"\"+t.cols[t.lastcol],t.rows[t.lastcol]+=isNaN(e)?0:e+i,t.lastcol+=1,r&&(n.dataset.macyComplete=1))}),r&&(t.tmpRows=null),l(t)}var h=function t(n,e){if(!(this instanceof t))return new t(n,e);if(n&&n.nodeName)return n;if(n=n.replace(/^\\s*/,\"\").replace(/\\s*$/,\"\"),e)return this.byCss(n,e);for(var r in this.selectors)if(e=r.split(\"/\"),new RegExp(e[1],e[2]).test(n))return this.selectors[r](n);return this.byCss(n)};h.prototype.byCss=function(t,n){return(n||document).querySelectorAll(t)},h.prototype.selectors={},h.prototype.selectors[/^\\.[\\w\\-]+$/]=function(t){return document.getElementsByClassName(t.substring(1))},h.prototype.selectors[/^\\w+$/]=function(t){return document.getElementsByTagName(t)},h.prototype.selectors[/^\\#[\\w\\-]+$/]=function(t){return document.getElementById(t.substring(1))};var v=function(t,n){for(var e=t.length,r=e;e--;)n(t[r-e-1])},m=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.running=!1,this.events=[],this.add(t)};m.prototype.run=function(){if(!this.running&&this.events.length>0){var t=this.events.shift();this.running=!0,t(),this.running=!1,this.run()}},m.prototype.add=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!!n&&(Array.isArray(n)?v(n,function(n){return t.add(n)}):(this.events.push(n),void this.run()))},m.prototype.clear=function(){this.events=[]};var d=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.instance=t,this.data=n,this},y=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.events={},this.instance=t};y.prototype.on=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!(!t||!n)&&(Array.isArray(this.events[t])||(this.events[t]=[]),this.events[t].push(n))},y.prototype.emit=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t||!Array.isArray(this.events[t]))return!1;var e=new d(this.instance,n);v(this.events[t],function(t){return t(e)})};var g=function(t){return!(\"naturalHeight\"in t&&t.naturalHeight+t.naturalWidth===0)||t.width+t.height!==0},E=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new Promise(function(t,e){if(n.complete)return g(n)?t(n):e(n);n.addEventListener(\"load\",function(){return g(n)?t(n):e(n)}),n.addEventListener(\"error\",function(){return e(n)})}).then(function(n){e&&t.emit(t.constants.EVENT_IMAGE_LOAD,{img:n})}).catch(function(n){return t.emit(t.constants.EVENT_IMAGE_ERROR,{img:n})})},w=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return n(e,function(n){return E(t,n,r)})},A=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return Promise.all(w(t,n,e)).then(function(){t.emit(t.constants.EVENT_IMAGE_COMPLETE)})},I=function(n){return t(function(){n.emit(n.constants.EVENT_RESIZE),n.queue.add(function(){return n.recalculate(!0,!0)})},100)},N=function(t){if(t.container=h(t.options.container),t.container instanceof h||!t.container)return!!t.options.debug&&console.error(\"Error: Container not found\");t.container.length&&(t.container=t.container[0]),t.options.container=t.container,t.container.style.position=\"relative\"},T=function(t){t.queue=new m,t.events=new y(t),t.rows=[],t.resizer=I(t)},L=function(t){var n=h(\"img\",t.container);window.addEventListener(\"resize\",t.resizer),t.on(t.constants.EVENT_IMAGE_LOAD,function(){return t.recalculate(!1,!1)}),t.on(t.constants.EVENT_IMAGE_COMPLETE,function(){return t.recalculate(!0,!0)}),t.options.useOwnImageLoader||e(t,n,!t.options.waitForImages),t.emit(t.constants.EVENT_INITIALIZED)},_=function(t){N(t),T(t),L(t)},b=function(t){return t===Object(t)&&\"[object Array]\"!==Object.prototype.toString.call(t)},O=function(t,n){b(t)||(n.columns=t),b(t)&&t.columns&&(n.columns=t.columns),b(t)&&t.margin&&!b(t.margin)&&(n.margin={x:t.margin,y:t.margin}),b(t)&&t.margin&&b(t.margin)&&t.margin.x&&(n.margin.x=t.margin.x),b(t)&&t.margin&&b(t.margin)&&t.margin.y&&(n.margin.y=t.margin.y)},C=function(t,n){return window.getComputedStyle(t,null).getPropertyValue(n)},M=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t.lastcol||(t.lastcol=0),t.rows.length<1&&(e=!0),e){t.rows=[],t.cols=[],t.lastcol=0;for(var r=n-1;r>=0;r--)t.rows[r]=0,t.cols[r]=u(t,r)}else if(t.tmpRows){t.rows=[];for(var r=n-1;r>=0;r--)t.rows[r]=t.tmpRows[r]}else{t.tmpRows=[];for(var r=n-1;r>=0;r--)t.tmpRows[r]=t.rows[r]}},V=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=n?t.container.children:h(':scope > *:not([data-macy-complete=\"1\"])',t.container);r=Array.from(r).filter(function(t){return null!==t.offsetParent});var o=c(t.options);return v(r,function(t){n&&(t.dataset.macyComplete=0),t.style.width=o}),t.options.trueOrder?(f(t,r,n,e),t.emit(t.constants.EVENT_RECALCULATED)):(p(t,r,n,e),t.emit(t.constants.EVENT_RECALCULATED))},R=function(){return!!window.Promise},x=Object.assign||function(t){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:k;if(!(this instanceof t))return new t(n);this.options={},x(this.options,k,n),this.options.cancelLegacy&&!R()||_(this)};return q.init=function(t){return console.warn(\"Depreciated: Macy.init will be removed in v3.0.0 opt to use Macy directly like so Macy({ /*options here*/ }) \"),new q(t)},q.prototype.recalculateOnImageLoad=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e(this,h(\"img\",this.container),!t)},q.prototype.runOnImageLoad=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=h(\"img\",this.container);return this.on(this.constants.EVENT_IMAGE_COMPLETE,t),n&&this.on(this.constants.EVENT_IMAGE_LOAD,t),e(this,r,n)},q.prototype.recalculate=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e&&this.queue.clear(),this.queue.add(function(){return V(t,n,e)})},q.prototype.remove=function(){window.removeEventListener(\"resize\",this.resizer),v(this.container.children,function(t){t.removeAttribute(\"data-macy-complete\"),t.removeAttribute(\"style\")}),this.container.removeAttribute(\"style\")},q.prototype.reInit=function(){this.recalculate(!0,!0),this.emit(this.constants.EVENT_INITIALIZED),window.addEventListener(\"resize\",this.resizer),this.container.style.position=\"relative\"},q.prototype.on=function(t,n){this.events.on(t,n)},q.prototype.emit=function(t,n){this.events.emit(t,n)},q.constants={EVENT_INITIALIZED:\"macy.initialized\",EVENT_RECALCULATED:\"macy.recalculated\",EVENT_IMAGE_LOAD:\"macy.image.load\",EVENT_IMAGE_ERROR:\"macy.image.error\",EVENT_IMAGE_COMPLETE:\"macy.images.complete\",EVENT_RESIZE:\"macy.resize\"},q.prototype.constants=q.constants,q});\n","document.addEventListener(`DOMContentLoaded`, () => {\n const overlayToggles = document.querySelectorAll(\"[data-toggle='top-bar-overlay']\");\n for (const toggle of overlayToggles) {\n toggle.addEventListener(\"click\", () => {\n const body = document.querySelector(\"body\");\n const logo = document.querySelector(\".logo-image-overlay\");\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 logo.classList.remove(\"fadeInUp\");\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 logo.classList.add(\"fadeInUp\");\n for (const li of overlayItems) {\n li.classList.add(\"fadeInUp\");\n }\n }\n });\n }\n});\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/z/zeilmakerijdevriesmaritiem.nl/vhosts/www/htdocs/content/mu-plugins/wp-soup-plugin/node_modules/axios\";\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n () => {\n const favoriteButtons = document.querySelectorAll(\".favorite-button\");\n for (const button of favoriteButtons) {\n button.addEventListener(\n \"click\",\n function (event) {\n const postID = this.dataset.postId;\n if (!postID) {\n return;\n }\n\n const action = this.dataset.action;\n if (action === \"add\") {\n addToFavorites(postID, button);\n } else if (action === \"remove\") {\n removeFromFavorites(postID, button);\n }\n },\n { passive: true }\n );\n }\n\n function addToFavorites(postID, button) {\n let formData = new FormData();\n formData.append(\"action\", \"add_to_favorites\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"post_id\", postID);\n\n axios.post(themosis.ajaxurl, formData).then((response) => {\n if (response.data.success) {\n button.classList.add(\"is-favorited\");\n button.querySelector(\"svg\").outerHTML = themosis.wpsoup.favorites.button_icon_favorited;\n button.dataset.action = \"remove\";\n }\n });\n }\n\n function removeFromFavorites(postID, button) {\n let formData = new FormData();\n formData.append(\"action\", \"remove_from_favorites\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"post_id\", postID);\n\n axios.post(themosis.ajaxurl, formData).then((response) => {\n if (response.data.success) {\n button.classList.remove(\"is-favorited\");\n button.querySelector(\"svg\").outerHTML = themosis.wpsoup.favorites.button_icon;\n button.dataset.action = \"add\";\n }\n });\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\n\nwindow.addEventListener(\n \"load\",\n () => {\n if (Foundation.MediaQuery.atLeast(\"large\")) {\n const directions = [\"left\", \"right\"];\n directions.forEach((direction) => {\n const columns = $(`.wp-block-column.half-width-image-${direction}`);\n if (columns.length) {\n columns.each(function () {\n const column = $(this);\n const container = $(this).closest(\".wp-block-ms-container\");\n const containerId = container.attr(\"id\");\n const img = $(this).find(\"img\");\n let src = img.attr(\"src\");\n if (typeof src === \"undefined\") {\n return;\n }\n\n if (typeof LazyLoad === \"function\") {\n if (!src.includes(\"data:image/svg+xml\")) {\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n }\n\n img.on(\"load\", function () {\n src = img.attr(\"src\");\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n });\n } else {\n if (!src.includes(\"data:image/svg+xml\")) {\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n }\n }\n });\n }\n });\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n () => {\n /**\n * Add submenu toggle functionality.\n */\n const menus = document.querySelectorAll(\".js-ms-has-submenu\");\n let i = 0;\n // For every menu item with a submenu.\n for (const menu of menus) {\n // Apply id for toggling purposes.\n const randomID = \"id-\" + i++;\n const submenu = menu.querySelector(\".submenu\");\n if (submenu) {\n submenu.setAttribute(\"id\", randomID);\n }\n const toggle = menu.querySelector(\".toggle\");\n if (toggle) {\n toggle.setAttribute(\"data-toggle\", randomID);\n }\n\n // On toggling.\n $(`#${randomID}`).on(\"on.zf.toggler off.zf.toggler\", function (event) {\n if (event.target !== this) return;\n\n switch (event.type) {\n case \"on\":\n $(this).slideDown({\n start: function () {\n $(this).css({\n display: \"flex\",\n });\n },\n });\n break;\n case \"off\":\n $(this).slideUp();\n break;\n }\n\n // Recalculate sticky height if sticky exists.\n if ($(\".ms-menu .sticky\").length) {\n $(\".ms-menu .sticky\").foundation(\"_calc\", true);\n }\n });\n }\n\n // Recalculate sticky height on toggling submenu.\n $(\".menu-mobile\").on(\"on.zf.toggler off.zf.toggler\", function (event) {\n if (event.target !== this) return;\n\n switch (event.type) {\n case \"on\":\n $(this).slideDown();\n break;\n case \"off\":\n $(this).slideUp();\n break;\n }\n\n // Recalculate sticky height if sticky exists.\n if ($(\".ms-menu .sticky\").length) {\n $(\".ms-menu .sticky\").foundation(\"_calc\", true);\n }\n });\n\n // Properly update the ARIA states on focus (keyboard) and mouse over events.\n $('[role=\"menubar\"]').on(\"focus.aria mouseenter.aria\", '[aria-haspopup=\"true\"]', (event) => {\n $(event.currentTarget).attr(\"aria-expanded\", true);\n });\n\n // Properly update the ARIA states on blur (keyboard) and mouse out events.\n $('[role=\"menubar\"]').on(\"blur.aria mouseleave.aria\", '[aria-haspopup=\"true\"]', (event) => {\n $(event.currentTarget).attr(\"aria-expanded\", false);\n });\n\n const overlayToggles = document.querySelectorAll(\".trigger-overlay\");\n for (const toggle of overlayToggles) {\n toggle.addEventListener(\n \"click\",\n () => {\n const body = document.querySelector(\"body\");\n const logo = document.querySelector(\".logo-image-overlay\");\n const logoMobile = document.querySelector(\".logo-mobile-image-overlay\");\n const language = document.querySelector(\".language-block\");\n const overlay = document.querySelector(\".top-bar-overlay\");\n const overlayItems = overlay.querySelectorAll(\"li\");\n if (overlay.classList.contains(\"visible\")) {\n body.classList.remove(\"overlay-visible\");\n overlay.classList.remove(\"visible\");\n if (logo) {\n logo.classList.remove(\"fadeInUp\");\n }\n if (logoMobile) {\n logoMobile.classList.remove(\"fadeInUp\");\n }\n if (language) {\n language.classList.remove(\"fadeInUp\");\n }\n for (const li of overlayItems) {\n li.classList.remove(\"fadeInUp\");\n }\n } else {\n body.classList.add(\"overlay-visible\");\n overlay.classList.add(\"visible\");\n if (logo) {\n logo.classList.add(\"fadeInUp\");\n }\n if (logoMobile) {\n logoMobile.classList.add(\"fadeInUp\");\n }\n if (language) {\n language.classList.add(\"fadeInUp\");\n }\n for (const li of overlayItems) {\n li.classList.add(\"fadeInUp\");\n }\n }\n },\n { passive: true }\n );\n }\n\n const toggleArrow = document.querySelector(\".hide.icon-arrow\");\n if (toggleArrow) {\n const submenuTogglesCheckInterval = setInterval(function () {\n const submenuToggles = document.getElementsByClassName(\"submenu-toggle\");\n\n if (submenuToggles.length !== 0) {\n for (let toggle of submenuToggles) {\n if (toggle.getElementsByTagName(\"svg\").length === 0) {\n toggle.innerHTML += toggleArrow.innerHTML;\n }\n }\n\n clearInterval(submenuTogglesCheckInterval);\n }\n });\n }\n\n const searchBlockButton = document.querySelector(\".search-block-button\");\n const searchFormBlock = document.querySelector(\".search-form-block\");\n if (searchBlockButton) {\n searchBlockButton.addEventListener(\n \"click\",\n () => {\n searchBlockButton.classList.toggle(\"visible\");\n if (searchFormBlock) {\n searchFormBlock.classList.toggle(\"visible\");\n }\n },\n { passive: true }\n );\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\nimport Swiper from \"swiper\";\n\nif ($(\".woocommerce .product-image-slider\").length) {\n const galleryThumbs = new Swiper(\".woocommerce .product-thumbnail-slider\", {\n slidesPerView: 5,\n freeMode: true,\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n scrollbar: {\n el: \".swiper-scrollbar\",\n hide: true,\n },\n });\n\n if ($(\".woocommerce .product-thumbnail-slider\").length) {\n const galleryTop = new Swiper(\".woocommerce .product-image-slider\", {\n autoHeight: true,\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\",\n },\n thumbs: {\n swiper: galleryThumbs,\n },\n });\n }\n}\n\n$(document).on(\"change input\", \".woocommerce-cart-form .cart_item :input\", function (e) {\n $('.woocommerce-cart-form :input[name=\"update_cart\"]').prop(\"disabled\", false);\n});\n\n$(document.body).on(\"change blur\", \"form.woocommerce-cart-form .qty-field select\", function (e) {\n const select = $(this);\n const value = select.val();\n const parent = select.parent();\n parent.find(\"input\").val(value);\n});\n","import $ from \"jquery\";\n\nif (wp && wp.data) {\n if ($(window).width() > 600 && $(\"body\").hasClass(\"custom-admin-styling\")) {\n $(\"html\").css(\"padding-top\", \"50px\");\n }\n\n $(window).on(\"resize\", () => {\n if ($(\"body\").hasClass(\"custom-admin-styling\")) {\n if ($(window).width() > 600) {\n if ($(\"html\").css(\"padding-top\") != \"50px\") {\n $(\"html\").css(\"padding-top\", \"50px\");\n }\n } else {\n $(\"html\").css(\"padding-top\", \"\");\n }\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n const gutenbergLoadCheck = setInterval(() => {\n const anchors = $(\"[data-block] a\");\n if (anchors.length > 0) {\n anchors.on(\"click\", (e) => {\n e.preventDefault();\n });\n\n clearInterval(gutenbergLoadCheck);\n }\n }, 100);\n\n const editPost = wp.data.select(\"core/edit-post\");\n if (editPost) {\n editPost.isFeatureActive(\"fullscreenMode\") &&\n wp.data.dispatch(\"core/edit-post\").toggleFeature(\"fullscreenMode\");\n }\n });\n}\n","import $ from \"jquery\";\nimport axios from \"axios\";\n\n$(() => {\n $(\".load-more\").on(\"click\", function () {\n const id = $(this).data(\"id\");\n const fields = $(this).data(\"fields\");\n if (!fields) {\n return;\n }\n\n const initialOffset = $(this).data(\"initial-offset\") ?? 0;\n const offset = $(`#${id} .related-pages .related-page-card:not([class$=\"included\"])`).length ?? 0;\n const masonry = $(this).data(\"is-masonry\") ?? 0;\n const slider = $(this).data(\"is-slider\") ?? 0;\n const textLoadMore = $(this).data(\"text-load-more\");\n const textLoading = $(this).data(\"text-loading\");\n const textLoadFailed = $(this).data(\"text-load-failed\");\n\n // Data to send back to WordPress.\n const formData = new FormData();\n formData.append(\"action\", \"load_posts_by_ajax\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"offset\", initialOffset + offset);\n formData.append(\"fields\", JSON.stringify(fields));\n\n // Change button text to loading text.\n $(`#${id} .load-more`).html(textLoading);\n\n // Do request.\n axios\n .post(themosis.ajaxurl, formData)\n .then(({ data }) => {\n // Create a placeholder div to store retrieved posts.\n const cards = document.createElement(\"div\");\n cards.innerHTML = data;\n\n // If retrieved posts length is smaller than the amount to load,\n // hide the button, else replace text with initial text.\n if (cards.children.length < fields.ajax_amount_to_load) {\n $(`#${id} .load-more`).remove();\n } else {\n $(`#${id} .load-more`).html(textLoadMore);\n }\n\n // Append loaded posts to the end.\n $(`#${id} .related-pages`).append(data);\n\n // Reinit masonry or equalizer.\n if (slider) {\n const instance = cardSliders.find((x) => x.id === id).instance;\n instance.update();\n }\n\n // Reinit masonry or equalizer.\n if (masonry) {\n const instance = masonryGrids.find((x) => x.id === id).instance;\n instance.runOnImageLoad(function () {\n instance.recalculate(true);\n }, true);\n } else {\n Foundation.reInit(\"equalizer\");\n }\n })\n .catch((error) => {\n $(`#${id} .load-more`).html(textLoadFailed);\n });\n });\n});\n","import $ from \"jquery\";\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n function () {\n $(\".ms_tag-filter .smart-tags\").change(function () {\n const $hiddenInput = $(\".ms_tag-filter .hidden-input\");\n const $emptyInput = $(\".ms_tag-filter .empty-input\");\n const $smartTag = $(this).val();\n\n $.ajax({\n url: themosis.ajaxurl,\n type: \"POST\",\n cache: false,\n data: {\n action: \"populate_posts_with_tag\",\n smart_tag: $smartTag,\n },\n success: function (data) {\n const $select = $(\".ms_tag-filter .posts-with-tag\");\n if (!data || data.length === 0) {\n $select.html(``);\n } else {\n $select.html(`${data}`);\n }\n },\n });\n });\n\n $(\".ms_tag-filter .posts-with-tag\").change(function () {\n const options = this.options;\n const selectedOption = this.options[this.selectedIndex];\n const selectedSmartTagLabel =\n document.querySelector(\".ms_tag-filter .smart-tags\").options[\n document.querySelector(\".ms_tag-filter .smart-tags\").selectedIndex\n ].label;\n\n if (options && selectedOption.value !== \"\") {\n if (typeof ga !== \"undefined\" && typeof ga.getAll === \"function\") {\n new Promise((resolve, _) => {\n const analyticsGTMID = ga.getAll()[0].get(\"trackingId\");\n ga(\n `gtag_${analyticsGTMID}.send`,\n \"event\",\n \"Tag filter\",\n \"redirect\",\n selectedSmartTagLabel + \" -> \" + selectedOption.label\n );\n resolve();\n }).then(() => {\n // Redirect to the selected option.\n window.location = this.options[this.selectedIndex].value;\n });\n } else {\n // Redirect to the selected option.\n window.location = this.options[this.selectedIndex].value;\n }\n }\n });\n },\n { passive: true }\n);\n","import $ from \"jquery\";\n\nwindow.addEventListener(\n \"load\",\n () => {\n if ($(\".scrollhide-nav\").length > 0 && Foundation.MediaQuery.only(\"small\")) {\n let prev = 0;\n const height = $(\".ms_thintopbar\").outerHeight();\n\n $(window).on(\"scroll\", () => {\n const scrollTop = $(window).scrollTop();\n $(\".scrollhide-nav\").toggleClass(\"hidden\", scrollTop > prev);\n\n let offset = 0;\n if (scrollTop > prev) {\n offset = 0;\n } else {\n offset = height - 1;\n }\n\n $(\".ms-menu .sticky\").attr(\"style\", `top: ${offset}px !important`);\n\n prev = scrollTop;\n });\n\n $(\".ms-menu .sticky\").on(\"sticky.zf.unstuckfrom:top\", function () {\n $(\".ms-menu .sticky\").attr(\"style\", `margin-top: ${height - 1}px !important`);\n });\n $(\".ms-menu .sticky\").on(\"sticky.zf.stuckto:top\", function () {\n $(\".ms-menu .sticky\").attr(\"style\", `margin-top: 0px !important`);\n });\n }\n },\n { passive: true }\n);\n","import $ from \"/srv/www/z/zeilmakerijdevriesmaritiem.nl/vhosts/www/htdocs/content/mu-plugins/wp-soup-plugin/node_modules/jquery\";\n\n$(document).ready(function() {\n // Funnel\n const funnelPartList = $(\".funnel-onderdeel ul\");\n const firstFunnelPart = funnelPartList.children(\"li:nth-child(1)\");\n const firstFunnelPartInput = funnelPartList\n .children(\"li:nth-child(1)\")\n .children(\"input\");\n const secondFunnelPart = funnelPartList.children(\"li:nth-child(2)\");\n const secondFunnelPartInput = funnelPartList\n .children(\"li:nth-child(2)\")\n .children(\"input\");\n const funnelPartHelp = funnelPartList.children(\"li:last-child\");\n const funnelPartHelpInput = funnelPartHelp.children(\"input\");\n\n const comments = $(\".funnel-opmerkingen\");\n const upload = $(\".funnel-upload\");\n const personalData = $(\"[class*='funnel-persoon-']\");\n const footer = $(\".funnel-form .gform_footer\");\n\n // Initially hide fields.\n comments.hide();\n upload.hide();\n personalData.each(function() {\n $(this).hide();\n });\n footer.hide();\n\n function scrollIntoView(element) {\n var interval = setInterval(function() {\n const el = $(element).offset().top;\n if (el > 0) {\n $(\"html, body\").animate(\n {\n scrollTop: el - 300\n },\n 500\n );\n clearInterval(interval);\n }\n }, 1);\n }\n\n $(\".funnel-form\").change(function() {\n if (!$(\".funnel-omschrijving li:last-child input:checked\").length > 0) {\n if (\n $(\".funnel-onderdeel-zeilen input:checked\").length > 0 ||\n $(\".funnel-onderdeel-tuigerij input:checked\").length > 0 ||\n $(\".funnel-onderdeel-boottent input:checked\").length > 0 ||\n $(\".funnel-onderdeel-reparatie input:checked\").length > 0 ||\n $(\".funnel-onderdeel-overige input:checked\").length > 0 ||\n funnelPartHelpInput.is(\":checked\")\n ) {\n scrollIntoView(\".funnel-opmerkingen\");\n comments.show();\n upload.show();\n personalData.each(function() {\n $(this).show();\n });\n footer.show();\n } else {\n comments.hide();\n upload.hide();\n personalData.each(function() {\n $(this).hide();\n });\n footer.hide();\n }\n }\n });\n\n $(\".funnel-omschrijving li\").change(function() {\n const index = $(this).index();\n if (index === 1) {\n // Show checkbox if the second checkbox has been selected.\n funnelPartHelp.show();\n } else {\n if (funnelPartHelpInput.is(\":checked\")) {\n funnelPartHelpInput.trigger(\"click\");\n }\n // Hide checkbox.\n funnelPartHelp.hide();\n }\n\n if (index === 2) {\n scrollIntoView(\".funnel-schip\");\n } else {\n scrollIntoView(\".funnel-type-schip\");\n }\n\n // Hide on selecting a new description.\n comments.hide();\n upload.hide();\n personalData.each(function() {\n $(this).hide();\n });\n footer.hide();\n });\n\n $(\".funnel-schip li\").change(function() {\n const index = $(this).index();\n if (index === 1) {\n // Show personal data if the second radio button has been selected.\n comments.show();\n upload.show();\n personalData.each(function() {\n $(this).show();\n });\n footer.show();\n scrollIntoView(\".funnel-opmerkingen\");\n } else {\n comments.hide();\n upload.hide();\n personalData.each(function() {\n $(this).hide();\n });\n footer.hide();\n scrollIntoView(\".funnel-type-schip\");\n }\n });\n\n $(\".funnel-type-schip select\").change(function() {\n if (this.selectedIndex === 1 || this.selectedIndex === 2) {\n // Show checkboxes if the first or second checkbox has been selected.\n firstFunnelPart.show();\n secondFunnelPart.show();\n scrollIntoView(\".funnel-lengte-schip\");\n } else {\n // Uncheck checkboxes if checked.\n if (firstFunnelPartInput.is(\":checked\")) {\n firstFunnelPartInput.trigger(\"click\");\n }\n if (secondFunnelPartInput.is(\":checked\")) {\n secondFunnelPartInput.trigger(\"click\");\n }\n\n // Hide checkboxes.\n firstFunnelPart.hide();\n secondFunnelPart.hide();\n }\n });\n\n $(\".funnel-lengte-schip select\").change(function() {\n scrollIntoView(\".funnel-onderdeel\");\n if (\n $(\".funnel-omschrijving li:last-child input:checked\").length > 0 &&\n this.selectedIndex !== 0\n ) {\n comments.show();\n upload.show();\n personalData.each(function() {\n $(this).show();\n });\n footer.show();\n } else {\n comments.hide();\n upload.hide();\n personalData.each(function() {\n $(this).hide();\n });\n footer.hide();\n }\n });\n\n $(\".submit-button-1\").on(\"click\", function() {\n document.querySelectorAll(\".gfield.gform_hidden input\")[0].value =\n \"Contact\";\n });\n\n $(\".submit-button-2\").on(\"click\", function() {\n document.querySelectorAll(\".gfield.gform_hidden input\")[0].value =\n \"Offerte\";\n });\n});\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function setCookie(cname, cvalue, exdays) {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n const expires = \"expires=\" + d.toUTCString();\n document.cookie = cname + \"=\" + cvalue + \";\" + expires;\n}\n\nconst translationNotice = document.querySelector(\".automatic-translation-notice\");\nif (translationNotice) {\n translationNotice\n .querySelector(\"button\")\n .addEventListener(\"click\", (e) => setCookie(\"hide-automatic-translation-notice\", true, 7), { passive: true });\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","window.addEventListener(\n \"load\",\n () => {\n // Do IE stuff\n if (window.document.documentMode) {\n if (Foundation.MediaQuery.current !== \"small\") {\n const columns = document.querySelectorAll(\".wp-block-column\");\n for (const column of columns) {\n const flexBasis = column.style.flexBasis;\n const isMargin = column.parentElement.classList.contains(\"margin\");\n if (flexBasis && !isMargin) {\n column.style.setAttribute(\"width\", flexBasis);\n column.style.setProperty(\"flex-basis\", \"auto\", \"important\");\n } else if (flexBasis && isMargin) {\n column.style.setAttribute(\"width\", `calc(${flexBasis} - 2rem)`);\n column.style.setProperty(\"flex-basis\", \"auto\", \"important\");\n }\n }\n }\n } else {\n if (Foundation.MediaQuery.current !== \"small\") {\n const columns = document.querySelectorAll(\".wp-block-column\");\n for (const column of columns) {\n const flexBasis = column.style.flexBasis;\n const isMargin = column.parentElement.classList.contains(\"margin\");\n if (flexBasis && isMargin) {\n column.style.setProperty(\"flex-basis\", `calc(${flexBasis} - 2rem)`, \"important\");\n }\n }\n }\n }\n },\n { passive: true }\n);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","/**\n * Set scrollbar sizes\n */\ndocument.addEventListener(\n \"DOMContentLoaded\",\n () => {\n function setScrollbarSize() {\n // Add temporary box to wrapper.\n let scrollbox = document.createElement(\"div\");\n // Make box scrollable.\n scrollbox.style.overflow = \"scroll\";\n // Append box to document.\n document.body.appendChild(scrollbox);\n // Measure inner width of box.\n let scrollBarWidth = scrollbox.offsetWidth - scrollbox.clientWidth;\n // Remove box.\n document.body.removeChild(scrollbox);\n\n if (!(document.body.scrollHeight > window.innerHeight)) {\n scrollBarWidth = 0;\n }\n\n if (scrollBarWidth !== 0) {\n document.body.classList.add(\"has-scrollbar\");\n document.body.setAttribute(\"style\", `--scroll-bar: ${scrollBarWidth}px`);\n } else {\n document.body.classList.remove(\"has-scrollbar\");\n }\n }\n\n setScrollbarSize();\n window.addEventListener(\"resize\", setScrollbarSize, { passive: true });\n\n const epve = document.querySelector(\".edit-post-visual-editor\");\n if (epve !== null) {\n function getEditorWidth() {\n const width = epve.offsetWidth;\n document.body.setAttribute(\"style\", `--editor-width: ${width - 2}px`);\n }\n\n getEditorWidth();\n window.addEventListener(\"resize\", getEditorWidth, { passive: true });\n }\n\n // const adminToolbar = document.querySelector(\"#wpadminbar\");\n // if (adminToolbar !== null) {\n // const html = document.querySelector(\"html:not(.wp-toolbar)\");\n // if (html !== null) {\n // html.setAttribute(\"style\", \"margin-top: 50px !important;\");\n // }\n // }\n },\n { passive: true }\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","function iOS() {\n return (\n (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)) &&\n !window.MSStream\n );\n}\n\nwindow.addEventListener(\"load\", () => {\n if (iOS()) {\n const containers = document.querySelectorAll(\".wp-block-ms-container\");\n if (containers.length) {\n [...containers].forEach((container) =>\n container.style.setProperty(\"background-attachment\", \"scroll\", \"important\")\n );\n }\n }\n});\n","/**\n * Dynamically intialize the `home-header-slider`'s.\n * It will use the options in the `data-slider-options`.\n */\nfunction msInitializeHomeHeaderSliders() {\n const homeHeaderThumbSlider = new Swiper(`.home-header-thumb-slider`, {\n loop: false,\n loopedSlides: 0,\n slidesPerView: 3,\n spaceBetween: 0,\n breakpoints: {\n \"640\": { slidesPerView: 3, spaceBetween: 0 },\n \"1024\": { slidesPerView: 6, spaceBetween: 0}\n },\n autoplay: { delay: 5000 },\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n });\n\n const homeHeaderMainSlider = new Swiper(`.home-header-main-slider`, {\n loop: false,\n loopedSlides: 0,\n slidesPerView: 1,\n spaceBetween: 0,\n autoplay: { delay: 5000 },\n thumbs: { swiper: homeHeaderThumbSlider },\n effect: 'fade',\n fadeEffect: {\n crossFade: true\n },\n });\n}\n\ndocument.addEventListener(`DOMContentLoaded`, function() {\n if (document.querySelectorAll('.home-header-main-slider').length) {\n msInitializeHomeHeaderSliders();\n }\n});\n\nif (typeof acf !== \"undefined\") {\n acf.addAction(`render_block_preview`, function($el, attributes) {\n msInitializeHomeHeaderSliders();\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":""}