{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/macy/dist/macy.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./assets/js/vendors/animate-on-scroll.js","webpack:///./node_modules/foundation-sites/js/foundation.core.utils.js","webpack:///./node_modules/foundation-sites/js/foundation.util.mediaQuery.js","webpack:///./node_modules/foundation-sites/js/foundation.core.js","webpack:///./node_modules/foundation-sites/js/foundation.core.plugin.js","webpack:///./node_modules/foundation-sites/js/foundation.util.keyboard.js","webpack:///./node_modules/foundation-sites/js/foundation.accordion.js","webpack:///./node_modules/foundation-sites/js/foundation.util.nest.js","webpack:///./node_modules/foundation-sites/js/foundation.accordionMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.util.box.js","webpack:///./node_modules/foundation-sites/js/foundation.positionable.js","webpack:///./node_modules/foundation-sites/js/foundation.util.motion.js","webpack:///./node_modules/foundation-sites/js/foundation.util.triggers.js","webpack:///./node_modules/foundation-sites/js/foundation.util.touch.js","webpack:///./node_modules/foundation-sites/js/foundation.dropdown.js","webpack:///./node_modules/foundation-sites/js/foundation.dropdownMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.util.imageLoader.js","webpack:///./node_modules/foundation-sites/js/foundation.equalizer.js","webpack:///./node_modules/foundation-sites/js/foundation.drilldown.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveToggle.js","webpack:///./node_modules/foundation-sites/js/foundation.reveal.js","webpack:///./node_modules/foundation-sites/js/foundation.slider.js","webpack:///./node_modules/foundation-sites/js/foundation.smoothScroll.js","webpack:///./node_modules/foundation-sites/js/foundation.sticky.js","webpack:///./node_modules/foundation-sites/js/foundation.tabs.js","webpack:///./node_modules/foundation-sites/js/foundation.toggler.js","webpack:///./node_modules/foundation-sites/js/foundation.tooltip.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveAccordionTabs.js","webpack:///./assets/js/vendors/foundation.js","webpack:///./assets/js/vendors/macy.js","webpack:///./assets/js/vendors/object-fit-images.js","webpack:///./node_modules/countup.js/dist/countUp.min.js","webpack:///./assets/js/scripts/count-on-scroll.js","webpack:///./assets/js/scripts/favorites.js","webpack:///./assets/js/scripts/images.js","webpack:///./assets/js/scripts/menu.js","webpack:///./assets/js/scripts/woocommerce.js","webpack:///./assets/js/scripts/wp-admin.js","webpack:///./src/Core/Blocks/Content/common/related_pages/script.js","webpack:///./src/Core/Blocks/Content/common/tag_filter/script.js","webpack:///./src/Core/Blocks/Marginals/header/thin_topbar_menu/script.js","webpack:////srv/www/c/cuttingmatsxxl.com/vhosts/www/htdocs/content/themes/cuttingmatsxxl-theme/assets/js/script.js","webpack:///./node_modules/process/browser.js","webpack:///./assets/js/scripts/cookies.js","webpack:///./node_modules/aos/dist/aos.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./assets/js/scripts/ie11.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./assets/js/scripts/resizes.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./assets/js/vendors/mobile.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./src/Core/Blocks/Content/common/reviews/script.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/shared/dom.js","webpack:///./node_modules/swiper/shared/get-support.js","webpack:///./node_modules/swiper/shared/get-device.js","webpack:///./node_modules/swiper/shared/get-browser.js","webpack:///./node_modules/swiper/shared/utils.js","webpack:///./node_modules/swiper/core/transition/transitionEmit.js","webpack:///./node_modules/swiper/core/events/onTouchStart.js","webpack:///./node_modules/swiper/core/events/onTouchMove.js","webpack:///./node_modules/swiper/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/core/events/onResize.js","webpack:///./node_modules/swiper/core/events/onClick.js","webpack:///./node_modules/swiper/core/events/onScroll.js","webpack:///./node_modules/swiper/core/events/index.js","webpack:///./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/core/check-overflow/index.js","webpack:///./node_modules/swiper/core/defaults.js","webpack:///./node_modules/swiper/core/moduleExtendParams.js","webpack:///./node_modules/swiper/core/core.js","webpack:///./node_modules/swiper/core/events-emitter.js","webpack:///./node_modules/swiper/core/update/index.js","webpack:///./node_modules/swiper/core/update/updateSize.js","webpack:///./node_modules/swiper/core/update/updateSlides.js","webpack:///./node_modules/swiper/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/core/update/updateProgress.js","webpack:///./node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/core/translate/index.js","webpack:///./node_modules/swiper/core/translate/getTranslate.js","webpack:///./node_modules/swiper/core/translate/setTranslate.js","webpack:///./node_modules/swiper/core/translate/minTranslate.js","webpack:///./node_modules/swiper/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/core/translate/translateTo.js","webpack:///./node_modules/swiper/core/transition/index.js","webpack:///./node_modules/swiper/core/transition/setTransition.js","webpack:///./node_modules/swiper/core/transition/transitionStart.js","webpack:///./node_modules/swiper/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/core/slide/index.js","webpack:///./node_modules/swiper/core/slide/slideTo.js","webpack:///./node_modules/swiper/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/core/slide/slideNext.js","webpack:///./node_modules/swiper/core/slide/slidePrev.js","webpack:///./node_modules/swiper/core/slide/slideReset.js","webpack:///./node_modules/swiper/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/core/loop/index.js","webpack:///./node_modules/swiper/core/loop/loopCreate.js","webpack:///./node_modules/swiper/core/loop/loopFix.js","webpack:///./node_modules/swiper/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/core/grab-cursor/index.js","webpack:///./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/core/breakpoints/index.js","webpack:///./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/core/classes/index.js","webpack:///./node_modules/swiper/core/classes/addClasses.js","webpack:///./node_modules/swiper/core/classes/removeClasses.js","webpack:///./node_modules/swiper/core/images/index.js","webpack:///./node_modules/swiper/core/images/loadImage.js","webpack:///./node_modules/swiper/core/images/preloadImages.js","webpack:///./node_modules/swiper/core/modules/resize/resize.js","webpack:///./node_modules/swiper/core/modules/observer/observer.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///./node_modules/swiper/modules/navigation/navigation.js","webpack:///./node_modules/swiper/shared/classes-to-selector.js","webpack:///./node_modules/swiper/modules/pagination/pagination.js","webpack:///./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/modules/controller/controller.js","webpack:///./node_modules/swiper/modules/autoplay/autoplay.js","webpack:///./node_modules/swiper/modules/thumbs/thumbs.js","webpack:///./node_modules/swiper/shared/effect-init.js","webpack:///./node_modules/swiper/shared/effect-target.js","webpack:///./node_modules/swiper/shared/create-shadow.js","webpack:///./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/Core/Blocks/Content/common/featured_menu_items/script.js","webpack:///./assets/js/vendors/parallax.js","webpack:///./assets/js/vendors/clamp.js","webpack:///./assets/js/scripts/buddypress.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./assets/js/scripts/scroll-to-top.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/what-input/dist/what-input.js","webpack:///./node_modules/ieee754/index.js","webpack:////srv/www/c/cuttingmatsxxl.com/vhosts/www/htdocs/content/themes/cuttingmatsxxl-theme/node_modules/bs-stepper/dist/js/bs-stepper.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./assets/js/scripts/blocks.js","webpack:///./node_modules/axios/index.js","webpack:///./src/Core/Blocks/Content/common/pricing/script.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///external \"jQuery\"","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/axios.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","AxiosError","CanceledError","message","this","ERR_CANCELED","inherits","__CANCEL__","url","test","toString","Array","isArray","arr","e","length","push","arguments","window","Promise","A","recalculate","useContainerForBreakpoints","container","clientWidth","innerWidth","columns","b","margin","x","y","keys","breakAt","mobileFirst","options","responsiveOptions","docWidth","a","parseInt","O","parseFloat","replace","u","rows","v","style","height","M","offsetHeight","isNaN","forEach","position","top","left","cols","dataset","macyComplete","tmpRows","f","lastcol","C","h","nodeName","byCss","selectors","split","RegExp","document","querySelectorAll","getElementsByClassName","substring","getElementsByTagName","getElementById","running","events","add","run","shift","clear","instance","data","on","emit","g","naturalHeight","naturalWidth","width","E","complete","addEventListener","then","constants","EVENT_IMAGE_LOAD","img","catch","EVENT_IMAGE_ERROR","w","all","EVENT_IMAGE_COMPLETE","I","clearTimeout","setTimeout","EVENT_RESIZE","queue","_","debug","console","error","N","resizer","T","useOwnImageLoader","waitForImages","EVENT_INITIALIZED","L","getComputedStyle","getPropertyValue","V","children","from","filter","offsetParent","trueOrder","EVENT_RECALCULATED","R","assign","k","useImageLoader","onInit","cancelLegacy","createElement","querySelector","getAttribute","id","Math","floor","random","apply","removeAttribute","Element","q","init","warn","recalculateOnImageLoad","runOnImageLoad","remove","removeEventListener","reInit","utils","obj","formData","FormData","stack","convertValue","isDate","toISOString","isArrayBuffer","isTypedArray","Blob","Buffer","build","parentKey","isPlainObject","indexOf","Error","isUndefined","fullKey","endsWith","JSON","stringify","toArray","el","append","pop","baseURL","relativeURL","AOS","rtl","$","attr","GetYoDigits","namespace","str","chars","charsLength","transitionend","$elem","end","transitions","elem","transition","triggerHandler","onLoad","handler","didLoad","readyState","eventType","cb","one","ignoreMousedisappear","ignoreLeaveWindow","ignoreReappear","eLeave","rest","callback","relatedTarget","hasFocus","eReenter","currentTarget","has","target","matchMedia","styleMedia","media","info","script","type","parentNode","insertBefore","head","appendChild","currentStyle","matchMedium","text","styleSheet","cssText","textContent","matches","MediaQuery","queries","current","_init","isInitialized","appendTo","namedQueries","extractedStyles","css","styleObject","trim","slice","reduce","ret","param","parts","val","decodeURIComponent","parseStyleToObject","_getCurrentSize","_watcher","_reInit","atLeast","size","query","only","upTo","nextSize","next","is","bpSize","bpModifier","queryIndex","findIndex","_getQueryName","nextQuery","TypeError","matched","newSize","currentSize","trigger","Foundation","version","_plugins","_uuids","plugin","className","functionName","attrName","hyphenate","registerPlugin","pluginName","constructor","toLowerCase","uuid","$element","unregisterPlugin","prop","splice","removeAttr","removeData","plugins","isJQ","each","_this","plgs","foundation","err","reflow","find","addBack","$el","opts","option","opt","map","parseValue","er","getFnName","addToJquery","fn","method","$noJS","removeClass","args","plugClass","ReferenceError","Function","results","exec","util","throttle","func","delay","timer","context","Date","now","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","navigator","userAgent","lastTime","nextTime","max","performance","start","oThis","aArgs","fToBind","fNOP","fBound","concat","Plugin","element","_setup","getPluginName","_destroy","keyCodes","9","13","27","32","35","36","37","38","39","40","commands","findFocusable","sort","aTabIndex","bTabIndex","parseKey","event","which","keyCode","String","fromCharCode","toUpperCase","shiftKey","ctrlKey","altKey","Keyboard","kcs","kc","getKeyCodes","handleKey","component","functions","commandList","zfIsKeyHandled","ltr","Rtl","extend","returnValue","handled","unhandled","register","componentName","cmds","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","preventDefault","focus","releaseFocus","off","Accordion","defaults","_isInitializing","$tabs","idx","$content","linkId","$initActive","_initialAnchor","prev","_openSingleTab","_checkDeepLink","anchor","location","hash","$anchor","$link","parent","hasClass","_closeAllTabs","deepLinkSmudge","offset","animate","scrollTop","deepLinkSmudgeOffset","deepLinkSmudgeDelay","deepLink","_events","$tabContent","toggle","$a","multiExpand","previous","first","last","$target","closest","up","down","updateHistory","history","pushState","replaceState","_openTab","$targetItem","$othersItems","siblings","allowAllClosed","_closeTab","$activeContents","not","targetContentId","addClass","finish","slideDown","slideSpeed","slideUp","$activeTabs","stop","Nest","menu","items","subMenuClass","subItemClass","hasSubClass","applyAria","$item","$sub","firstItem","AccordionMenu","multiOpen","$menuLinks","subId","isActive","parentLink","clone","prependTo","wrap","submenuToggle","after","submenuToggleText","initPanes","$submenu","$prevElement","$nextElement","$elements","min","parents","open","close","closeAll","hideAll","$targetBranch","parentsUntil","$othersActiveSubmenus","$submenus","$allmenus","detach","Box","ImNotTouchingYou","lrOnly","tbOnly","ignoreBottom","OverlapArea","GetDimensions","GetExplicitOffsets","alignment","vOffset","hOffset","isOverflow","topVal","leftVal","$eleDims","$anchorDims","topOver","bottomOver","leftOver","rightOver","eleDims","parDims","windowDims","sqrt","rect","getBoundingClientRect","parRect","winRect","body","winY","pageYOffset","winX","pageXOffset","parentDims","POSITIONS","VERTICAL_ALIGNMENTS","HORIZONTAL_ALIGNMENTS","ALIGNMENTS","nextItem","item","array","currentIdx","Positionable","triedPositions","_getDefaultPosition","_getDefaultAlignment","originalPosition","originalAlignment","_alignmentsExhausted","_realign","_addTriedPosition","isExhausted","$parent","allowOverlap","_getVOffset","_getHOffset","minOverlap","minCoordinates","_positionsExhausted","overlap","allowBottomOverlap","_reposition","initClasses","activeClasses","Motion","animation","isIn","initClass","activeClass","reset","show","offsetWidth","hide","transitionDuration","MutationObserver","prefixes","triggers","Triggers","Listeners","Basic","Global","Initializers","debounceGlobalListener","debounce","listener","openListener","closeListener","toggleListener","closeableListener","stopPropagation","fadeOut","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","addClosemeListener","yetiBoxes","plugNames","listeners","join","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","attributeName","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","__","triggersInitialized","IHearYou","startPosX","startTime","elapsedTime","startEvent","Touch","isMoving","didMoved","onTouchEnd","onTouchMove","tapEvent","Event","spotSwipe","dir","touches","pageX","dx","abs","moveThreshold","timeThreshold","onTouchStart","passive","SpotSwipe","enabled","documentElement","special","swipe","setup","tap","noop","setupSpotSwipe","setupTouchHandler","addTouch","handleTouch","simulatedEvent","changedTouches","touchstart","touchmove","touchend","MouseEvent","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","dispatchEvent","Dropdown","$id","$anchors","_setCurrentAnchor","parentClass","$currentAnchor","match","horizontalPosition","hasTouch","ontouchstart","_setPosition","forceFollow","hover","bodyData","whatinput","timeout","hoverDelay","hoverPane","$body","autoFocus","closeOnClick","_addBodyHandler","DropdownMenu","subs","$menuItems","verticalClass","rightClass","changed","parClass","clickOpen","hasSub","hasClicked","stopImmediatePropagation","_hide","_show","closeOnClickInside","disableHoverOnTouch","disableHover","autoclose","closingTime","isTab","index","nextSibling","prevSibling","openSub","closeSub","_isVertical","_isRtl","_removeBodyHandler","$sibs","oldClass","$parentLi","$toClose","$activeItem","onImagesLoaded","images","unloaded","singleImageLoaded","image","Image","me","src","Equalizer","eqId","$watched","hasNested","isNested","isOn","_bindHandler","onResizeMeBound","_onResizeMe","onPostEqualizedBound","_onPostEqualized","tooSmall","imgs","equalizeOn","_checkMQ","_reflow","_pauseEvents","equalizeOnStack","_isStacked","equalizeByRow","getHeightsByRow","applyHeightByRow","getHeights","applyHeight","heights","len","lastElTopOffset","groups","group","elOffsetTop","j","ln","groupsILength","lenJ","Drilldown","autoApplyClass","$submenuAnchors","$currentMenu","_prepareMenu","_registerEvents","_keyboardEvents","$menu","backButtonPosition","backButton","prepend","_back","autoHeight","$wrapper","wrapper","animateHeight","_getMaxDims","ev","contains","_hideAll","_scrollTop","_resize","$scrollTopElement","scrollTopElement","scrollPos","scrollTopOffset","animationDuration","animationEasing","calcHeight","parentSubMenu","_setHideSubMenuClasses","isLastChild","_setShowSubMenuClasses","blur","maxHeight","result","unwrap","MenuPlugins","dropdown","cssClass","drilldown","accordion","ResponsiveMenu","rules","currentMq","currentPlugin","rulesTree","rule","ruleSize","rulePlugin","isEmptyObject","_checkMediaQueries","matchedMq","destroy","ResponsiveToggle","targetID","$targetMenu","$toggler","input","animationIn","animationOut","_update","_updateMqHandler","toggleMenu","hideFor","Reveal","cached","mq","fullScreen","overlay","$overlay","_makeOverlay","onLoadListener","additionalOverlayClasses","outerWidth","outerHeight","_updatePosition","_handleState","$activeAnchor","activeElement","multipleOpened","_disableScroll","focusableElements","_addGlobalClasses","showDelay","_addGlobalListeners","updateScrollbarClass","toggleClass","closeOnEsc","finishUp","_removeGlobalClasses","_enableScroll","hideDelay","resetOnClose","html","urlWithoutHash","pathname","search","title","Slider","initialized","inputs","handles","$handle","$input","$fill","vertical","disabled","disabledClass","binding","_setInitAttr","doubleSided","$handle2","$input2","setHandles","_setHandlePos","pctOfBar","percent","positionValueFunction","_logTransform","_powTransform","toFixed","base","log","baseLog","nonLinearBase","pow","$hndl","isDbl","h2Val","step","h1Val","vert","hOrW","lOrT","handleDim","elemDim","_pctOfBar","movement","decimal","_setValues","dim","isLeftHndl","handlePct","handlePos","initialStart","duration","anim","prog","move","ts","Move","moveTime","changedDelay","initVal","initialEnd","_adjustValue","direction","eventOffset","pageY","barDim","windowScroll","scrollLeft","elemOffset","barXY","eventFromBar","offsetPct","_value","absPosition","previousVal","div","_eventsForHandle","curHandle","handleChangeEvent","_handleEvent","clickSelect","draggable","newValue","_$handle","oldValue","decrease","increase","decreaseFast","increaseFast","frac","num","clickPos","invertVertical","SmoothScroll","loc","$loc","round","threshold","_linkClickListener","_handleLinkClick","arrival","_inTransition","scrollToLoc","Sticky","$container","wasWrapped","containerClass","stickyClass","scrollCount","checkEvery","isStuck","containerHeight","elemHeight","_parsePoints","_setSizes","scroll","_calc","_removeSticky","topPoint","reverse","pts","topAnchor","btmAnchor","scrollHeight","breaks","pt","place","points","canStick","_eventsHandler","_pauseListeners","checkSizes","bottomPoint","_setSticky","stickTo","mrgn","notStuckTo","isTop","stickToTop","anchorPt","anchorHeight","topOrBottom","bottom","stickyOn","newElemWidth","comp","pdngl","pdngr","dynamicHeight","newContainerHeight","_setBreakPoints","mTop","emCalc","marginTop","mBtm","marginBottom","winHeight","innerHeight","em","fontSize","Tabs","$tabTitles","linkClass","linkActiveClass","matchHeight","$images","_setHeight","anchorNoHash","selectTab","_collapse","_addKeyHandler","_addClickHandler","_setHeightMqHandler","_handleTabChange","wrapOnKeys","historyHandled","activeCollapse","$oldTab","$tabLink","$targetContent","_collapseTab","panelActiveClass","$targetAnchor","$activeTab","idStr","hashIdStr","panelClass","panel","temp","Toggler","$triggers","toggler","$trigger","controls","_updateARIA","undefined","Tooltip","isClick","elemId","tipText","template","_buildTemplate","allowHtml","triggerClass","elementClassName","SVGElement","baseVal","tooltipWidth","tooltipHeight","templateClasses","tooltipClass","showOn","fadeIn","fadeInDuration","fadeOutDuration","isFocus","disableForTouch","touchCloseText","tabs","ResponsiveAccordionTabs","storezfData","currentRule","_getAllOptions","allOptions","dummyPlugin","tmpPlugin","keyKey","objObj","_changedZfMediaQueryHandler","_handleMarkup","toSet","fromString","$panels","tabsTitle","tabsPanel","$liHeads","$liHeadsA","display","visibility","$tabsContent","$placeholder","insertAfter","tempValue","masonryGrids","Macy","640","1024","objectFitImages","__assign","CountUp","endVal","startVal","decimalPlaces","useEasing","useGrouping","smartEasingThreshold","smartEasingAmount","separator","prefix","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","paused","once","count","remaining","frameVal","easingFn","Number","printValue","rAF","update","formatNumber","numerals","easeOutExpo","formattingFn","validateValue","resetDuration","onScrollFns","handleScroll","onscroll","scrollY","determineDirectionAndSmartEasing","pauseResume","tagName","innerHTML","ensureNumber","bubbles","cancelable","composed","registerEventListeners","elements","intersectionObserver","IntersectionObserver","animateModern","root","rootMargin","animateLegacy","elementIsInView","animateElement","countUp","counterDecimal","button","postID","action","themosis","axios","response","addToFavorites","removeFromFavorites","directions","column","containerId","LazyLoad","randomID","submenu","logo","logoMobile","language","overlayItems","li","toggleArrow","submenuTogglesCheckInterval","setInterval","submenuToggles","clearInterval","searchBlockButton","searchFormBlock","galleryThumbs","slidesPerView","freeMode","watchSlidesVisibility","watchSlidesProgress","scrollbar","navigation","nextEl","prevEl","thumbs","swiper","select","wp","gutenbergLoadCheck","anchors","editPost","fields","initialOffset","masonry","slider","textLoadMore","textLoading","textLoadFailed","cards","cardSliders","$hiddenInput","$emptyInput","$smartTag","cache","smart_tag","success","$select","selectedOption","selectedSmartTagLabel","ga","analyticsGTMID","resolve","quickCaltranslate","wpCuttingMatData","quick_cal_info_menuItem","checkouValues","step4","csrfTokenMeta","csrfInterval","csrfInputs","stepperEl","stepper","nextButton","previousButton","cuttingmatsXXLPopup","cname","cvalue","exdays","expires","setCookie","methods","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","loaded","default","easing","disable","throttleDelay","debounceDelay","disableMutationObserver","atob","mobile","phone","tablet","S","node","isSupported","setAttribute","ready","refresh","refreshHard","leading","maxWait","trailing","cancel","flush","valueOf","iterator","NaN","self","WebKitMutationObserver","MozMutationObserver","addedNodes","removedNodes","aos","vendor","opera","configurable","writable","substr","classList","anchorPlacement","offsetLeft","offsetTop","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","OFI","propRegex","testImg","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","setPlaceholder","placeholder","onImageReady","fixOne","parsed","fontFamily","props","getStyle","ofi","skipTest","srcset","descriptors","set","ss","keepSrcUsable","picturefill","pf","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundPosition","backgroundRepeat","backgroundOrigin","backgroundSize","fix","startAutoMode","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","buildURL","dispatchRequest","mergeConfig","buildFullPath","validator","validators","Axios","instanceConfig","interceptors","request","configOrUrl","config","transitional","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","clarifyTimeoutError","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","reject","getUri","fullPath","params","paramsSerializer","generateHTTPMethod","isForm","headers","flexBasis","isMargin","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","len2","encodeChunk","lookup","Uint8Array","code","output","thisArg","encode","encodeURIComponent","serializedParams","isURLSearchParams","isObject","hashmarkIndex","scrollbox","scrollBarWidth","setScrollbarSize","epve","getEditorWidth","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","href","protocol","host","hostname","port","charAt","requestURL","isString","containers","validateStatus","status","ERR_BAD_REQUEST","ERR_BAD_RESPONSE","msInitializeReviewSlider","Swiper","acf","config1","config2","getMergedValue","source","merge","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","normalizeHeaderName","transitionalDefaults","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","transformRequest","isFormData","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isFileList","isObjectPayload","contentType","_FormData","rawValue","parser","encoder","parse","stringifySafely","transformResponse","strictJSONParsing","responseType","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","common","ssrDocument","childNodes","createElementNS","importNode","origin","getDocument","doc","ssrWindow","CustomEvent","screen","getWindow","win","Dom7","proto","__proto__","arrayFlat","res","arrayFilter","selector","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","classes","classNames","attrs","transform","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","handleEvent","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","evt","detail","dataIndex","transitionEnd","dom","fireCallBack","includeMargins","styles","box","clientTop","clientLeft","scrollX","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","newChild","tempDiv","firstChild","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","foundElements","found","removeChild","methodName","support","deviceCached","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","time","targetPosition","side","startPosition","translate","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","progress","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","gestures","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","isWebView","calcBrowser","transitionEmit","runCallbacks","activeIndex","previousIndex","touchEventsData","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","allowThresholdMove","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","rtlTranslate","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","touchAngle","isHorizontal","atan2","touchMoveStopPropagation","nested","startTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","updateActiveIndex","updateSlidesClasses","updateProgress","setTranslate","slidesGrid","currentPos","touchEndTime","timeDiff","pathTree","composedPath","updateClickedSlide","lastClickTime","destroyed","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","rewind","isBeginning","virtual","slides","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","centeredSlides","autoplay","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","onScroll","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListeners","updateOnWindowResize","isGridEnabled","grid","initialSlide","resizeObserver","createElements","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","maxBackfaceHiddenSlides","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","priority","eventsListeners","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","_len2","_key2","eventsArray","clientHeight","getDirectionLabel","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","slideSize","gridEnabled","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","activeSlide","realIndex","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","slideFound","clickedSlide","clickedIndex","byController","translateTo","translateBounds","internal","newTranslate","isH","onTranslateToWrapperTransitionEnd","transitionStart","initial","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","prevSnapIndex","normalizedSnapGrid","prevSnap","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","point","minRatio","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","entries","resultClasses","suffixes","removeClasses","loadImage","imageEl","sizes","checkForComplete","onReady","onload","onerror","imagesLoaded","imagesToLoad","extendedDefaults","swipers","newParams","__modules__","mod","extendParams","desktop","swiperParams","passedParams","eventName","velocity","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","newDefaults","installModule","cls","slideEl","updates","getSlideClasses","view","exact","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","mounted","getWrapperSelector","getWrapper","mount","deleteInstance","cleanStyles","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","WebkitMutationObserver","mutations","observerUpdate","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","bulletSize","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","$dragEl","newPos","opacity","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","scrollbarDisabledClass","Controller","LinearSpline","maxIndex","minIndex","guess","i1","i3","binarySearch","interpolate","x2","removeSpline","controller","control","spline","inverse","by","_t","controlledTranslate","controlled","setControlledTranslate","getInterpolateFunction","setControlledTransition","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","effectInit","requireUpdateOnVirtual","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","slideShadows","effectTarget","effectParams","$slideEl","transformEl","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","swiperWidth","swiperHeight","center","centerOffset","offsetMultiplier","rotateY","rotateX","translateZ","translateY","translateX","slideTransform","zIndex","$shadowBeforeEl","$shadowAfterEl","transformData","isCancel","throwIfCancellationRequested","cancelToken","throwIfRequested","signal","aborted","reason","payload","isAxiosError","previews","link","preview","positions","positionX","positionY","imageSrc","sliderExisted","$slider","Parallax","currTime","timeToCall","bleed","iosFix","androidFix","overScrollFix","mirrorContainer","boxOffsetTop","docHeight","maxOffset","minOffset","imageHeightMin","boxHeight","imageOffsetMin","imageWidth","boxWidth","imageHeight","overScroll","scrollBottom","boxOffsetBottom","boxOffsetLeft","offsetBaseTop","mirrorTop","maxWidth","winWidth","sliders","isReady","isFresh","isBusy","$doc","$win","loadDimensions","loadScrollPosition","winScrollTop","scrollTopMax","scrollLeftMax","lastPosition","frameLoop","configure","requestRender","parallaxElement","old","$this","clamp","useNativeClamp","splitOnChars","truncationChar","truncationHTML","sty","originalText","supportsNativeClamp","clampValue","isCSSValue","re","availHeight","lineHeight","getLineHeight","lh","computeStyle","truncationHTMLContainer","splitChar","getLastChild","getMaxLines","clampedText","nodeValue","chunks","lastChunk","applyEllipsis","truncate","original","clamped","changeOption","field","toJSON","description","fileName","lineNumber","columnNumber","defineProperties","customProps","axiosError","toFlatObject","write","domain","secure","cookie","isNumber","toGMTString","read","backTop","checkBackToTop","windowTop","scrollElement","scrolling","scrollEl","currentTime","animateScroll","timestamp","final","dataElement","scrollDuration","scrollOffset","moveFocus","isAbsoluteURL","combineURLs","requestedURL","VERSION","thing","deprecatedWarnings","formatMessage","ERR_DEPRECATED","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","CancelToken","executor","resolvePromise","token","_listeners","onfulfilled","_resolve","subscribe","unsubscribe","factory","ask","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","docElem","currentElement","currentInput","currentIntent","currentTimestamp","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","keydown","keyup","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","mousePos","pointerMap","2","3","4","addListeners","setPersist","PointerEvent","setInput","setIntent","MSPointerEvent","detectWheel","setElement","clearElement","sessionStorage","getItem","doUpdate","eventKey","pointerType","ignoreMatch","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","checkClosest","fireFunctions","detectScrolling","setItem","touchIsValid","onmousewheel","tag","ElementPrototype","parentElement","objPos","clearStorage","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","Infinity","rt","LN2","_extends","WinEvent","inType","createCustomEvent","initEvent","Boolean","originPreventDefault","initCustomEvent","polyfill","ClassName","stepperNode","indexStep","done","_steps","_stepsContents","showEvent","_currentIndex","activeStep","activeContent","content","defaultPrevented","showStep","showContent","stepList","currentTrigger","contentList","toIndex","shownEvent","getTransitionDurationFromElement","emulateTransitionEnd","called","emulatedDuration","DEFAULT_OPTIONS","linear","steps","Stepper","_options","_element","hasAttribute","_setLinkListeners","_proto","_this2","_clickStepLinearListener","_clickStepNonLinearListener","stepIndex","_this3","nextStep","_this4","previousStep","stepNumber","_this5","tempIndex","_this6","_this7","settle","cookies","parseHeaders","isURLSameOrigin","parseProtocol","onCanceled","requestData","requestHeaders","auth","username","password","unescape","Authorization","btoa","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","onreadystatechange","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","send","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","checked","copy","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","list","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","stringtrim","base64clean","dst","wpSoupGetBlocksOnPage","blocks","wpSoupGetBlocksFromBlock","block","blockType","notDefined","wp_soup_deprecated_blocks","available_blocks","blocks_in_page","priceToggle","priceContent","extraPriceContent","priceBlock","priceBlocks","buttonWC","buttonWCHref","buttonHref","extraOptions","selectedOptionsID","selectedOptions","optionName","optionID","firstPriceNode","secondPriceNode","optionPrice","optionPrice2","firstPrice","newFirstPriceHTML","secondPrice","secondPriceHTML","optionsString","ignoreDuplicateOf","line","fns","kindOf","kindOfTest","getPrototypeOf","isFunction","TypedArray","pipe","product","assignValue","stripBOM","superConstructor","sourceObj","destObj","merged","getOwnPropertyNames","searchString","jQuery","normalizedName","createInstance","defaultConfig","Cancel","promises","spread"],"mappings":"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","file":"/dist/js/site/cuttingmatsxxl-theme.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.Macy=n()}(this,function(){\"use strict\";function t(t,n){var e=void 0;return function(){e&&clearTimeout(e),e=setTimeout(t,n)}}function n(t,n){for(var e=t.length,r=e,o=[];e--;)o.push(n(t[r-e-1]));return o}function e(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(window.Promise)return A(t,n,e);t.recalculate(!0,!0)}function r(t){for(var n=t.options,e=t.responsiveOptions,r=t.keys,o=t.docWidth,i=void 0,s=0;s=a&&(i=n.breakAt[a],O(i,e))}return e}function o(t){for(var n=t.options,e=t.responsiveOptions,r=t.keys,o=t.docWidth,i=void 0,s=r.length-1;s>=0;s--){var a=parseInt(r[s],10);o<=a&&(i=n.breakAt[a],O(i,e))}return e}function i(t){var n=t.useContainerForBreakpoints?t.container.clientWidth:window.innerWidth,e={columns:t.columns};b(t.margin)?e.margin={x:t.margin.x,y:t.margin.y}:e.margin={x:t.margin,y:t.margin};var i=Object.keys(t.breakAt);return t.mobileFirst?r({options:t,responsiveOptions:e,keys:i,docWidth:n}):o({options:t,responsiveOptions:e,keys:i,docWidth:n})}function s(t){return i(t).columns}function a(t){return i(t).margin}function c(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],e=s(t),r=a(t).x,o=100/e;if(!n)return o;if(1===e)return\"100%\";var i=\"px\";if(\"string\"==typeof r){var c=parseFloat(r);i=r.replace(c,\"\"),r=c}return r=(e-1)*r/e,\"%\"===i?o-r+\"%\":\"calc(\"+o+\"% - \"+r+i+\")\"}function u(t,n){var e=s(t.options),r=0,o=void 0,i=void 0;if(1===++n)return 0;i=a(t.options).x;var u=\"px\";if(\"string\"==typeof i){var l=parseFloat(i,10);u=i.replace(l,\"\"),i=l}return o=(i-(e-1)*i/e)*(n-1),r+=c(t.options,!1)*(n-1),\"%\"===u?r+o+\"%\":\"calc(\"+r+\"% + \"+o+u+\")\"}function l(t){var n=0,e=t.container,r=t.rows;v(r,function(t){n=t>n?t:n}),e.style.height=n+\"px\"}function p(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=s(t.options),i=a(t.options).y;M(t,o,e),v(n,function(n){var e=0,o=parseInt(n.offsetHeight,10);isNaN(o)||(t.rows.forEach(function(n,r){n2&&void 0!==arguments[2]&&arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=s(t.options),i=a(t.options).y;M(t,o,e),v(n,function(n){t.lastcol===o&&(t.lastcol=0);var e=C(n,\"height\");e=parseInt(n.offsetHeight,10),isNaN(e)||(n.style.position=\"absolute\",n.style.top=t.rows[t.lastcol]+\"px\",n.style.left=\"\"+t.cols[t.lastcol],t.rows[t.lastcol]+=isNaN(e)?0:e+i,t.lastcol+=1,r&&(n.dataset.macyComplete=1))}),r&&(t.tmpRows=null),l(t)}var h=function t(n,e){if(!(this instanceof t))return new t(n,e);if(n&&n.nodeName)return n;if(n=n.replace(/^\\s*/,\"\").replace(/\\s*$/,\"\"),e)return this.byCss(n,e);for(var r in this.selectors)if(e=r.split(\"/\"),new RegExp(e[1],e[2]).test(n))return this.selectors[r](n);return this.byCss(n)};h.prototype.byCss=function(t,n){return(n||document).querySelectorAll(t)},h.prototype.selectors={},h.prototype.selectors[/^\\.[\\w\\-]+$/]=function(t){return document.getElementsByClassName(t.substring(1))},h.prototype.selectors[/^\\w+$/]=function(t){return document.getElementsByTagName(t)},h.prototype.selectors[/^\\#[\\w\\-]+$/]=function(t){return document.getElementById(t.substring(1))};var v=function(t,n){for(var e=t.length,r=e;e--;)n(t[r-e-1])},m=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.running=!1,this.events=[],this.add(t)};m.prototype.run=function(){if(!this.running&&this.events.length>0){var t=this.events.shift();this.running=!0,t(),this.running=!1,this.run()}},m.prototype.add=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!!n&&(Array.isArray(n)?v(n,function(n){return t.add(n)}):(this.events.push(n),void this.run()))},m.prototype.clear=function(){this.events=[]};var d=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.instance=t,this.data=n,this},y=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.events={},this.instance=t};y.prototype.on=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!(!t||!n)&&(Array.isArray(this.events[t])||(this.events[t]=[]),this.events[t].push(n))},y.prototype.emit=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t||!Array.isArray(this.events[t]))return!1;var e=new d(this.instance,n);v(this.events[t],function(t){return t(e)})};var g=function(t){return!(\"naturalHeight\"in t&&t.naturalHeight+t.naturalWidth===0)||t.width+t.height!==0},E=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new Promise(function(t,e){if(n.complete)return g(n)?t(n):e(n);n.addEventListener(\"load\",function(){return g(n)?t(n):e(n)}),n.addEventListener(\"error\",function(){return e(n)})}).then(function(n){e&&t.emit(t.constants.EVENT_IMAGE_LOAD,{img:n})}).catch(function(n){return t.emit(t.constants.EVENT_IMAGE_ERROR,{img:n})})},w=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return n(e,function(n){return E(t,n,r)})},A=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return Promise.all(w(t,n,e)).then(function(){t.emit(t.constants.EVENT_IMAGE_COMPLETE)})},I=function(n){return t(function(){n.emit(n.constants.EVENT_RESIZE),n.queue.add(function(){return n.recalculate(!0,!0)})},100)},N=function(t){if(t.container=h(t.options.container),t.container instanceof h||!t.container)return!!t.options.debug&&console.error(\"Error: Container not found\");t.container.length&&(t.container=t.container[0]),t.options.container=t.container,t.container.style.position=\"relative\"},T=function(t){t.queue=new m,t.events=new y(t),t.rows=[],t.resizer=I(t)},L=function(t){var n=h(\"img\",t.container);window.addEventListener(\"resize\",t.resizer),t.on(t.constants.EVENT_IMAGE_LOAD,function(){return t.recalculate(!1,!1)}),t.on(t.constants.EVENT_IMAGE_COMPLETE,function(){return t.recalculate(!0,!0)}),t.options.useOwnImageLoader||e(t,n,!t.options.waitForImages),t.emit(t.constants.EVENT_INITIALIZED)},_=function(t){N(t),T(t),L(t)},b=function(t){return t===Object(t)&&\"[object Array]\"!==Object.prototype.toString.call(t)},O=function(t,n){b(t)||(n.columns=t),b(t)&&t.columns&&(n.columns=t.columns),b(t)&&t.margin&&!b(t.margin)&&(n.margin={x:t.margin,y:t.margin}),b(t)&&t.margin&&b(t.margin)&&t.margin.x&&(n.margin.x=t.margin.x),b(t)&&t.margin&&b(t.margin)&&t.margin.y&&(n.margin.y=t.margin.y)},C=function(t,n){return window.getComputedStyle(t,null).getPropertyValue(n)},M=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t.lastcol||(t.lastcol=0),t.rows.length<1&&(e=!0),e){t.rows=[],t.cols=[],t.lastcol=0;for(var r=n-1;r>=0;r--)t.rows[r]=0,t.cols[r]=u(t,r)}else if(t.tmpRows){t.rows=[];for(var r=n-1;r>=0;r--)t.rows[r]=t.tmpRows[r]}else{t.tmpRows=[];for(var r=n-1;r>=0;r--)t.tmpRows[r]=t.rows[r]}},V=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=n?t.container.children:h(':scope > *:not([data-macy-complete=\"1\"])',t.container);r=Array.from(r).filter(function(t){return null!==t.offsetParent});var o=c(t.options);return v(r,function(t){n&&(t.dataset.macyComplete=0),t.style.width=o}),t.options.trueOrder?(f(t,r,n,e),t.emit(t.constants.EVENT_RECALCULATED)):(p(t,r,n,e),t.emit(t.constants.EVENT_RECALCULATED))},R=function(){return!!window.Promise},x=Object.assign||function(t){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:k;if(!(this instanceof t))return new t(n);this.options={},x(this.options,k,n),this.options.cancelLegacy&&!R()||_(this)};return q.init=function(t){return console.warn(\"Depreciated: Macy.init will be removed in v3.0.0 opt to use Macy directly like so Macy({ /*options here*/ }) \"),new q(t)},q.prototype.recalculateOnImageLoad=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e(this,h(\"img\",this.container),!t)},q.prototype.runOnImageLoad=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=h(\"img\",this.container);return this.on(this.constants.EVENT_IMAGE_COMPLETE,t),n&&this.on(this.constants.EVENT_IMAGE_LOAD,t),e(this,r,n)},q.prototype.recalculate=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e&&this.queue.clear(),this.queue.add(function(){return V(t,n,e)})},q.prototype.remove=function(){window.removeEventListener(\"resize\",this.resizer),v(this.container.children,function(t){t.removeAttribute(\"data-macy-complete\"),t.removeAttribute(\"style\")}),this.container.removeAttribute(\"style\")},q.prototype.reInit=function(){this.recalculate(!0,!0),this.emit(this.constants.EVENT_INITIALIZED),window.addEventListener(\"resize\",this.resizer),this.container.style.position=\"relative\"},q.prototype.on=function(t,n){this.events.on(t,n)},q.prototype.emit=function(t,n){this.events.emit(t,n)},q.constants={EVENT_INITIALIZED:\"macy.initialized\",EVENT_RECALCULATED:\"macy.recalculated\",EVENT_IMAGE_LOAD:\"macy.image.load\",EVENT_IMAGE_ERROR:\"macy.image.error\",EVENT_IMAGE_COMPLETE:\"macy.images.complete\",EVENT_RESIZE:\"macy.resize\"},q.prototype.constants=q.constants,q});\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","import AOS from 'aos'\nAOS.init()\n","import $ from 'jquery';\n\n// Core Foundation Utilities, utilized in a number of places.\n\n /**\n * Returns a boolean for RTL support\n */\nfunction rtl() {\n return $('html').attr('dir') === 'rtl';\n}\n\n/**\n * returns a random base-36 uid with namespacing\n * @function\n * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.\n * @param {String} namespace - name of plugin to be incorporated in uid, optional.\n * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.\n * @returns {String} - unique id\n */\nfunction GetYoDigits(length = 6, namespace){\n let str = '';\n const chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n const charsLength = chars.length;\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * charsLength)];\n }\n return namespace ? `${str}-${namespace}` : str;\n}\n\n/**\n * Escape a string so it can be used as a regexp pattern\n * @function\n * @see https://stackoverflow.com/a/9310752/4317384\n *\n * @param {String} str - string to escape.\n * @returns {String} - escaped string\n */\nfunction RegExpEscape(str){\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction transitionend($elem){\n var transitions = {\n 'transition': 'transitionend',\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend'\n };\n var elem = document.createElement('div'),\n end;\n\n for (let transition in transitions){\n if (typeof elem.style[transition] !== 'undefined'){\n end = transitions[transition];\n }\n }\n if (end) {\n return end;\n } else {\n setTimeout(function(){\n $elem.triggerHandler('transitionend', [$elem]);\n }, 1);\n return 'transitionend';\n }\n}\n\n/**\n * Return an event type to listen for window load.\n *\n * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.\n * If `handler` is passed, attach it to the event on `$elem`.\n * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.\n * @function\n *\n * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.\n * @param {Function} [] handler - function to attach to the event.\n * @returns {String} - event type that should or will be triggered.\n */\nfunction onLoad($elem, handler) {\n const didLoad = document.readyState === 'complete';\n const eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n const cb = () => $elem.triggerHandler(eventType);\n\n if ($elem) {\n if (handler) $elem.one(eventType, handler);\n\n if (didLoad)\n setTimeout(cb);\n else\n $(window).one('load', cb);\n }\n\n return eventType;\n}\n\n/**\n * Retuns an handler for the `mouseleave` that ignore disappeared mouses.\n *\n * If the mouse \"disappeared\" from the document (like when going on a browser UI element, See https://git.io/zf-11410),\n * the event is ignored.\n * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window\n * (like by switching to an other window with [Alt]+[Tab]).\n * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document\n * outside of the element it left.\n *\n * @function\n *\n * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.\n * @param {Object} [] options - object of options:\n * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.\n * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.\n * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.\n */\nfunction ignoreMousedisappear(handler, { ignoreLeaveWindow = false, ignoreReappear = false } = {}) {\n return function leaveEventHandler(eLeave, ...rest) {\n const callback = handler.bind(this, eLeave, ...rest);\n\n // The mouse left: call the given callback if the mouse entered elsewhere\n if (eLeave.relatedTarget !== null) {\n return callback();\n }\n\n // Otherwise, check if the mouse actually left the window.\n // In firefox if the user switched between windows, the window sill have the focus by the time\n // the event is triggered. We have to debounce the event to test this case.\n setTimeout(function leaveEventDebouncer() {\n if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n return callback();\n }\n\n // Otherwise, wait for the mouse to reeapear outside of the element,\n if (!ignoreReappear) {\n $(document).one('mouseenter', function reenterEventHandler(eReenter) {\n if (!$(eLeave.currentTarget).has(eReenter.target).length) {\n // Fill where the mouse finally entered.\n eLeave.relatedTarget = eReenter.target;\n callback();\n }\n });\n }\n\n }, 0);\n };\n}\n\n\nexport { rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear };\n","import $ from 'jquery';\n\n// Default set of media queries\n// const defaultQueries = {\n// 'default' : 'only screen',\n// landscape : 'only screen and (orientation: landscape)',\n// portrait : 'only screen and (orientation: portrait)',\n// retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n// 'only screen and (min--moz-device-pixel-ratio: 2),' +\n// 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n// 'only screen and (min-device-pixel-ratio: 2),' +\n// 'only screen and (min-resolution: 192dpi),' +\n// 'only screen and (min-resolution: 2dppx)'\n// };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n \"use strict\";\n\n // For browsers that support matchMedium api such as IE 9 and webkit\n var styleMedia = (window.styleMedia || window.media);\n\n // For those that don't support matchMedium\n if (!styleMedia) {\n var style = document.createElement('style'),\n script = document.getElementsByTagName('script')[0],\n info = null;\n\n style.type = 'text/css';\n style.id = 'matchmediajs-test';\n\n if (!script) {\n document.head.appendChild(style);\n } else {\n script.parentNode.insertBefore(style, script);\n }\n\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function (media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\n // Test if media query is true or false\n return info.width === '1px';\n }\n };\n }\n\n return function(media) {\n return {\n matches: styleMedia.matchMedium(media || 'all'),\n media: media || 'all'\n };\n };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n /**\n * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n * @function\n * @private\n */\n _init() {\n\n // make sure the initialization is only done once when calling _init() several times\n if (this.isInitialized === true) {\n return this;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = $('meta.foundation-mq');\n if(!$meta.length){\n $('').appendTo(document.head);\n }\n\n var extractedStyles = $('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = []; // reset\n\n for (var key in namedQueries) {\n if(namedQueries.hasOwnProperty(key)) {\n self.queries.push({\n name: key,\n value: `only screen and (min-width: ${namedQueries[key]})`\n });\n }\n }\n\n this.current = this._getCurrentSize();\n\n this._watcher();\n },\n\n /**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */\n _reInit() {\n this.isInitialized = false;\n this._init();\n },\n\n /**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */\n atLeast(size) {\n var query = this.get(size);\n\n if (query) {\n return window.matchMedia(query).matches;\n }\n\n return false;\n },\n\n /**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */\n only(size) {\n return size === this._getCurrentSize();\n },\n\n /**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */\n upTo(size) {\n const nextSize = this.next(size);\n\n // If the next breakpoint does not match, the screen is smaller than\n // the upper limit of this breakpoint.\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n // If there is no next breakpoint, the \"size\" breakpoint does not have\n // an upper limit and the screen will always be within it or smaller.\n return true;\n },\n\n /**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */\n is(size) {\n const parts = size.trim().split(' ').filter(p => !!p.length);\n const [bpSize, bpModifier = ''] = parts;\n\n // Only the breakpont\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n // At least the breakpoint (included)\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n // Up to the breakpoint (included)\n if (bpModifier === 'down') {\n return this.upTo(bpSize);\n }\n\n throw new Error(`\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \" \", got \"${size}\".\n `);\n },\n\n /**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */\n get(size) {\n for (var i in this.queries) {\n if(this.queries.hasOwnProperty(i)) {\n var query = this.queries[i];\n if (size === query.name) return query.value;\n }\n }\n\n return null;\n },\n\n /**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */\n next(size) {\n const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n if (queryIndex === -1) {\n throw new Error(`\n Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n `);\n }\n\n const nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n\n /**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */\n _getQueryName(value) {\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object')\n return value.name;\n throw new TypeError(`\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n `);\n },\n\n /**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */\n _getCurrentSize() {\n var matched;\n\n for (var i = 0; i < this.queries.length; i++) {\n var query = this.queries[i];\n\n if (window.matchMedia(query.value).matches) {\n matched = query;\n }\n }\n\n return matched && this._getQueryName(matched);\n },\n\n /**\n * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n * @function\n * @private\n */\n _watcher() {\n $(window).on('resize.zf.trigger', () => {\n var newSize = this._getCurrentSize(), currentSize = this.current;\n\n if (newSize !== currentSize) {\n // Change the current media query\n this.current = newSize;\n\n // Broadcast the media query change on the window\n $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n if (!str) {\n return styleObject;\n }\n\n styleObject = str.split('&').reduce(function(ret, param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = parts[0];\n var val = parts[1];\n key = decodeURIComponent(key);\n\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n } else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n } else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n\n return styleObject;\n}\n\nexport {MediaQuery};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.7.5';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n /**\n * Stores initialized plugins.\n */\n _plugins: {},\n\n /**\n * Stores generated unique ids for plugin instances\n */\n _uuids: [],\n\n /**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */\n plugin: function(plugin, name) {\n // Object key to use when adding to global Foundation object\n // Examples: Foundation.Reveal, Foundation.OffCanvas\n var className = (name || functionName(plugin));\n // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n // Examples: data-reveal, data-off-canvas\n var attrName = hyphenate(className);\n\n // Add to the Foundation object and the plugins list (for reflowing)\n this._plugins[attrName] = this[className] = plugin;\n },\n /**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */\n registerPlugin: function(plugin, name){\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = GetYoDigits(6, pluginName);\n\n if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n plugin.$element.trigger(`init.zf.${pluginName}`);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n /**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */\n unregisterPlugin: function(plugin){\n var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in plugin){\n if(typeof plugin[prop] === 'function'){\n plugin[prop] = null; //clean up script to prep for garbage collection.\n }\n }\n return;\n },\n\n /**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */\n reInit: function(plugins){\n var isJQ = plugins instanceof $;\n try{\n if(isJQ){\n plugins.each(function(){\n $(this).data('zfPlugin')._init();\n });\n }else{\n var type = typeof plugins,\n _this = this,\n fns = {\n 'object': function(plgs){\n plgs.forEach(function(p){\n p = hyphenate(p);\n $('[data-'+ p +']').foundation('_init');\n });\n },\n 'string': function(){\n plugins = hyphenate(plugins);\n $('[data-'+ plugins +']').foundation('_init');\n },\n 'undefined': function(){\n this.object(Object.keys(_this._plugins));\n }\n };\n fns[type](plugins);\n }\n }catch(err){\n console.error(err);\n }finally{\n return plugins;\n }\n },\n\n /**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */\n reflow: function(elem, plugins) {\n\n // If plugins is undefined, just grab everything\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n }\n // If plugins is a string, convert it to an array with one item\n else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n // Iterate through each plugin\n $.each(plugins, function(i, name) {\n // Get the current plugin\n var plugin = _this._plugins[name];\n\n // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n return typeof $(this).data(\"zfPlugin\") === 'undefined';\n });\n\n // For each plugin found, initialize it\n $elem.each(function() {\n var $el = $(this),\n opts = { reflow: true };\n\n if($el.attr('data-options')){\n $el.attr('data-options').split(';').forEach(function(option){\n var opt = option.split(':').map(function(el){ return el.trim(); });\n if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try{\n $el.data('zfPlugin', new plugin($(this), opts));\n }catch(er){\n console.error(er);\n }finally{\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function() {\n // TODO: consider not making this a jQuery function\n // TODO: need way to reflow vs. re-initialize\n /**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */\n var foundation = function(method) {\n var type = typeof method,\n $noJS = $('.no-js');\n\n if($noJS.length){\n $noJS.removeClass('no-js');\n }\n\n if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n MediaQuery._init();\n Foundation.reflow(this);\n }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n if(this.length === 1){//if there's only one, call it directly.\n plugClass[method].apply(plugClass, args);\n }else{\n this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n plugClass[method].apply($(el).data('zfPlugin'), args);\n });\n }\n }else{//error for no class or no method\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n }else{//error for invalid argument type\n throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n }\n return this;\n };\n $.fn.foundation = foundation;\n return $;\n }\n};\n\nFoundation.util = {\n /**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */\n throttle: function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer === null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n if (!Date.now || !window.Date.now)\n window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n var vendors = ['webkit', 'moz'];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n || window[vp+'CancelRequestAnimationFrame']);\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function() { callback(lastTime = nextTime); },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n /**\n * Polyfill for performance.now, required by rAF\n */\n if(!window.performance || !window.performance.now){\n window.performance = {\n start: Date.now(),\n now: function(){ return Date.now() - this.start; }\n };\n }\n})();\nif (!Function.prototype.bind) {\n /* eslint-disable no-extend-native */\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n if (typeof Function.prototype.name === 'undefined') {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = (funcNameRegex).exec((fn).toString());\n return (results && results.length > 1) ? results[1].trim() : \"\";\n }\n else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n }\n else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str){\n if ('true' === str) return true;\n else if ('false' === str) return false;\n else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n","import { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n constructor(element, options) {\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = GetYoDigits(6, pluginName);\n\n if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n this.$element.trigger(`init.zf.${pluginName}`);\n }\n\n destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in this){\n if (this.hasOwnProperty(prop)) {\n this[prop] = null; //clean up script to prep for garbage collection.\n }\n }\n }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n return hyphenate(obj.className);\n}\n\nexport {Plugin};\n","/*******************************************\n * *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n * *\n ******************************************/\n\nimport $ from 'jquery';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst keyCodes = {\n 9: 'TAB',\n 13: 'ENTER',\n 27: 'ESCAPE',\n 32: 'SPACE',\n 35: 'END',\n 36: 'HOME',\n 37: 'ARROW_LEFT',\n 38: 'ARROW_UP',\n 39: 'ARROW_RIGHT',\n 40: 'ARROW_DOWN'\n}\n\nvar commands = {}\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n if(!$element) {return false; }\n return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {\n if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0\n return true;\n })\n .sort( function( a, b ) {\n if ($(a).attr('tabindex') === $(b).attr('tabindex')) {\n return 0;\n }\n let aTabIndex = parseInt($(a).attr('tabindex'), 10),\n bTabIndex = parseInt($(b).attr('tabindex'), 10);\n // Undefined is treated the same as 0\n if (typeof $(a).attr('tabindex') === 'undefined' && bTabIndex > 0) {\n return 1;\n }\n if (typeof $(b).attr('tabindex') === 'undefined' && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex === 0 && bTabIndex > 0) {\n return 1;\n }\n if (bTabIndex === 0 && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex < bTabIndex) {\n return -1;\n }\n if (aTabIndex > bTabIndex) {\n return 1;\n }\n });\n}\n\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n\n if (event.shiftKey) key = `SHIFT_${key}`;\n if (event.ctrlKey) key = `CTRL_${key}`;\n if (event.altKey) key = `ALT_${key}`;\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n\n register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n\n\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n\n $element.on('keydown.zf.trapfocus', function(event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n }\n else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) {\n if (kcs.hasOwnProperty(kc)) k[kcs[kc]] = kcs[kc];\n }\n return k;\n}\n\nexport {Keyboard};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\n\n/**\n * Accordion module.\n * @module foundation.accordion\n * @requires foundation.util.keyboard\n */\n\nclass Accordion extends Plugin {\n /**\n * Creates a new instance of an accordion.\n * @class\n * @name Accordion\n * @fires Accordion#init\n * @param {jQuery} element - jQuery object to make into an accordion.\n * @param {Object} options - a plain object with settings to override the default options.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);\n\n this.className = 'Accordion'; // ie9 back compat\n this._init();\n\n Keyboard.register('Accordion', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_DOWN': 'next',\n 'ARROW_UP': 'previous',\n 'HOME': 'first',\n 'END': 'last',\n });\n }\n\n /**\n * Initializes the accordion by animating the preset active pane(s).\n * @private\n */\n _init() {\n this._isInitializing = true;\n\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n\n this.$tabs.each(function(idx, el) {\n var $el = $(el),\n $content = $el.children('[data-tab-content]'),\n id = $content[0].id || GetYoDigits(6, 'accordion'),\n linkId = (el.id) ? `${el.id}-label` : `${id}-label`;\n\n $el.find('a:first').attr({\n 'aria-controls': id,\n 'id': linkId,\n 'aria-expanded': false\n });\n\n $content.attr({'role': 'region', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});\n });\n\n var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n if ($initActive.length) {\n // Save up the initial hash to return to it later when going back in history\n this._initialAnchor = $initActive.prev('a').attr('href');\n this._openSingleTab($initActive);\n }\n\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var $anchor = anchor && $(anchor);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"]`);\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, open it (if not already active)\n if ($anchor && $link && $link.length) {\n if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n this._openSingleTab($anchor);\n }\n }\n // Otherwise, close everything\n else {\n this._closeAllTabs();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n onLoad($(window), () => {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset }, this.options.deepLinkSmudgeDelay);\n });\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Accordion#deeplink\n */\n this.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the accordion.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$tabs.each(function() {\n var $elem = $(this);\n var $tabContent = $elem.children('[data-tab-content]');\n if ($tabContent.length) {\n $elem.children('a').off('click.zf.accordion keydown.zf.accordion')\n .on('click.zf.accordion', function(e) {\n e.preventDefault();\n _this.toggle($tabContent);\n }).on('keydown.zf.accordion', function(e) {\n Keyboard.handleKey(e, 'Accordion', {\n toggle: function() {\n _this.toggle($tabContent);\n },\n next: function() {\n var $a = $elem.next().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n previous: function() {\n var $a = $elem.prev().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n first: function() {\n var $a = _this.$tabs.first().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n last: function() {\n var $a = _this.$tabs.last().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n });\n if (this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Toggles the selected content pane's open/close state.\n * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).\n * @function\n */\n toggle($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot toggle an accordion that is disabled.');\n return;\n }\n if ($target.parent().hasClass('is-active')) {\n this.up($target);\n } else {\n this.down($target);\n }\n //either replace or update browser history\n if (this.options.deepLink) {\n var anchor = $target.prev('a').attr('href');\n\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n }\n\n /**\n * Opens the accordion tab defined by `$target`.\n * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n */\n down($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot call down on an accordion that is disabled.');\n return;\n }\n\n if (this.options.multiExpand)\n this._openTab($target);\n else\n this._openSingleTab($target);\n }\n\n /**\n * Closes the tab defined by `$target`.\n * It may be ignored if the Accordion options don't allow it.\n *\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n */\n up($target) {\n if (this.$element.is('[disabled]')) {\n console.info('Cannot call up on an accordion that is disabled.');\n return;\n }\n\n // Don't close the item if it is already closed\n const $targetItem = $target.parent();\n if (!$targetItem.hasClass('is-active')) return;\n\n // Don't close the item if there is no other active item (unless with `allowAllClosed`)\n const $othersItems = $targetItem.siblings();\n if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n this._closeTab($target);\n }\n\n /**\n * Make the tab defined by `$target` the only opened tab, closing all others tabs.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @function\n * @private\n */\n _openSingleTab($target) {\n // Close all the others active tabs.\n const $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeContents.length) {\n this._closeTab($activeContents.not($target));\n }\n\n // Then open the target.\n this._openTab($target);\n }\n\n /**\n * Opens the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n * @private\n */\n _openTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', false);\n $targetItem.addClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': true\n });\n\n $target.finish().slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done opening.\n * @event Accordion#down\n */\n this.$element.trigger('down.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', true)\n $targetItem.removeClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': false\n });\n\n $target.finish().slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done collapsing up.\n * @event Accordion#up\n */\n this.$element.trigger('up.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes all active tabs\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeAllTabs() {\n var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeTabs.length) {\n this._closeTab($activeTabs);\n }\n }\n\n /**\n * Destroys an instance of an accordion.\n * @fires Accordion#destroyed\n * @function\n */\n _destroy() {\n this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n this.$element.find('a').off('.zf.accordion');\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n }\n}\n\nAccordion.defaults = {\n /**\n * Amount of time to animate the opening of an accordion pane.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Allow the accordion to have multiple open panes.\n * @option\n * @type {boolean}\n * @default false\n */\n multiExpand: false,\n /**\n * Allow the accordion to close all panes.\n * @option\n * @type {boolean}\n * @default false\n */\n allowAllClosed: false,\n /**\n * Link the location hash to the open pane.\n * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n /**\n * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n /**\n * If `deepLink` is enabled, update the browser history with the open accordion\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false\n};\n\nexport { Accordion };\n","import $ from 'jquery';\n\nconst Nest = {\n Feather(menu, type = 'zf') {\n menu.attr('role', 'menubar');\n menu.find('a').attr({'role': 'menuitem'});\n\n var items = menu.find('li').attr({'role': 'none'}),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`,\n applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.\n\n items.each(function() {\n var $item = $(this),\n $sub = $item.children('ul');\n\n if ($sub.length) {\n $item.addClass(hasSubClass);\n if(applyAria) {\n const firstItem = $item.children('a:first');\n firstItem.attr({\n 'aria-haspopup': true,\n 'aria-label': firstItem.attr('aria-label') || firstItem.text()\n });\n // Note: Drilldowns behave differently in how they hide, and so need\n // additional attributes. We should look if this possibly over-generalized\n // utility (Nest) is appropriate when we rework menus in 6.4\n if(type === 'drilldown') {\n $item.attr({'aria-expanded': false});\n }\n }\n $sub\n .addClass(`submenu ${subMenuClass}`)\n .attr({\n 'data-submenu': '',\n 'role': 'menubar'\n });\n if(type === 'drilldown') {\n $sub.attr({'aria-hidden': true});\n }\n }\n\n if ($item.parent('[data-submenu]').length) {\n $item.addClass(`is-submenu-item ${subItemClass}`);\n }\n });\n\n return;\n },\n\n Burn(menu, type) {\n var //items = menu.find('li'),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`;\n\n menu\n .find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li')\n .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)\n .removeAttr('data-submenu').css('display', '');\n\n }\n}\n\nexport {Nest};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * AccordionMenu module.\n * @module foundation.accordionMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n */\n\nclass AccordionMenu extends Plugin {\n /**\n * Creates a new instance of an accordion menu.\n * @class\n * @name AccordionMenu\n * @fires AccordionMenu#init\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n this.className = 'AccordionMenu'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('AccordionMenu', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_RIGHT': 'open',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'close',\n 'ESCAPE': 'closeAll'\n });\n }\n\n\n\n /**\n * Initializes the accordion menu by hiding all nested menus.\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'accordion');\n\n var _this = this;\n\n this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');\n this.$element.attr({\n 'aria-multiselectable': this.options.multiOpen\n });\n\n this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');\n this.$menuLinks.each(function() {\n var linkId = this.id || GetYoDigits(6, 'acc-menu-link'),\n $elem = $(this),\n $sub = $elem.children('[data-submenu]'),\n subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),\n isActive = $sub.hasClass('is-active');\n\n if (_this.options.parentLink) {\n let $anchor = $elem.children('a');\n $anchor.clone().prependTo($sub).wrap('
  • ');\n }\n\n if (_this.options.submenuToggle) {\n $elem.addClass('has-submenu-toggle');\n $elem.children('a').after('');\n } else {\n $elem.attr({\n 'aria-controls': subId,\n 'aria-expanded': isActive,\n 'id': linkId\n });\n }\n $sub.attr({\n 'aria-labelledby': linkId,\n 'aria-hidden': !isActive,\n 'role': 'group',\n 'id': subId\n });\n });\n var initPanes = this.$element.find('.is-active');\n if (initPanes.length) {\n initPanes.each(function() {\n _this.down($(this));\n });\n }\n this._events();\n }\n\n /**\n * Adds event handlers for items within the menu.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.find('li').each(function() {\n var $submenu = $(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function() {\n _this.toggle($submenu);\n });\n } else {\n $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n e.preventDefault();\n _this.toggle($submenu);\n });\n }\n }\n }).on('keydown.zf.accordionMenu', function(e) {\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement,\n $target = $element.children('[data-submenu]');\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ($(this).is(':first-child')) { // is first element of sub menu\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ($(this).is(':last-child')) { // is last element of sub menu\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n Keyboard.handleKey(e, 'AccordionMenu', {\n open: function() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function() {\n if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function() {\n $prevElement.focus();\n return true;\n },\n down: function() {\n $nextElement.focus();\n return true;\n },\n toggle: function() {\n if (_this.options.submenuToggle) {\n return false;\n }\n if ($element.children('[data-submenu]').length) {\n _this.toggle($element.children('[data-submenu]'));\n return true;\n }\n },\n closeAll: function() {\n _this.hideAll();\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });//.attr('tabindex', 0);\n }\n\n /**\n * Closes all panes of the menu.\n * @function\n */\n hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Opens all panes of the menu.\n * @function\n */\n showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */\n toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n }\n else {\n this.down($target);\n }\n }\n }\n\n /**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */\n down($target) {\n // If having multiple submenus active is disabled, close all the submenus\n // that are not parents or children of the targeted submenu.\n if (!this.options.multiOpen) {\n // The \"branch\" of the targetted submenu, from the component root to\n // the active submenus nested in it.\n const $targetBranch = $target.parentsUntil(this.$element)\n .add($target)\n .add($target.find('.is-active'));\n // All the active submenus that are not in the branch.\n const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target\n .addClass('is-active')\n .attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n }\n else {\n $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n }\n\n $target.slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */\n this.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */\n up($target) {\n const $submenus = $target.find('[data-submenu]');\n const $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus\n .removeClass('is-active')\n .attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n }\n else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */\n this.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */\n _destroy() {\n this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n this.$element.find('a').off('click.zf.accordionMenu');\n this.$element.find('[data-is-parent-link]').detach();\n\n if (this.options.submenuToggle) {\n this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n this.$element.find('.submenu-toggle').remove();\n }\n\n Nest.Burn(this.$element, 'accordion');\n }\n}\n\nAccordionMenu.defaults = {\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */\n submenuToggle: false,\n /**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */\n submenuToggleText: 'Toggle menu',\n /**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */\n multiOpen: true\n};\n\nexport { AccordionMenu };\n","var Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n}\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver, bottomOver, leftOver, rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n\n bottomOver = (parDims.height + parDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = (parDims.width + parDims.offset.left) - (eleDims.offset.left + eleDims.width);\n }\n else {\n bottomOver = (eleDims.windowDims.height + eleDims.windowDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n // use sum of squares b/c we care about overlap area.\n return Math.sqrt((topOver * topOver) + (bottomOver * bottomOver) + (leftOver * leftOver) + (rightOver * rightOver));\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem){\n elem = elem.length ? elem[0] : elem;\n\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n }\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n var topVal, leftVal;\n\n if ($anchorDims !== null) {\n // set position related attribute\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n // set alignment related attribute\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)) + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset\n break;\n case 'center':\n topVal = ($anchorDims.offset.top + vOffset + ($anchorDims.height / 2)) - ($eleDims.height / 2)\n break;\n }\n break;\n }\n }\n\n return {top: topVal, left: leftVal};\n}\n\nexport {Box};\n","import { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst POSITIONS = ['left', 'right', 'top', 'bottom'];\nconst VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nconst HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nconst ALIGNMENTS = {\n 'left': VERTICAL_ALIGNMENTS,\n 'right': VERTICAL_ALIGNMENTS,\n 'top': HORIZONTAL_ALIGNMENTS,\n 'bottom': HORIZONTAL_ALIGNMENTS\n}\n\nfunction nextItem(item, array) {\n var currentIdx = array.indexOf(item);\n if(currentIdx === array.length - 1) {\n return array[0];\n } else {\n return array[currentIdx + 1];\n }\n}\n\n\nclass Positionable extends Plugin {\n /**\n * Abstract class encapsulating the tether-like explicit positioning logic\n * including repositioning based on overlap.\n * Expects classes to define defaults for vOffset, hOffset, position,\n * alignment, allowOverlap, and allowBottomOverlap. They can do this by\n * extending the defaults, or (for now recommended due to the way docs are\n * generated) by explicitly declaring them.\n *\n **/\n\n _init() {\n this.triedPositions = {};\n this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n this.originalPosition = this.position;\n this.originalAlignment = this.alignment;\n }\n\n _getDefaultPosition () {\n return 'bottom';\n }\n\n _getDefaultAlignment() {\n switch(this.position) {\n case 'bottom':\n case 'top':\n return Rtl() ? 'right' : 'left';\n case 'left':\n case 'right':\n return 'bottom';\n }\n }\n\n /**\n * Adjusts the positionable possible positions by iterating through alignments\n * and positions.\n * @function\n * @private\n */\n _reposition() {\n if(this._alignmentsExhausted(this.position)) {\n this.position = nextItem(this.position, POSITIONS);\n this.alignment = ALIGNMENTS[this.position][0];\n } else {\n this._realign();\n }\n }\n\n /**\n * Adjusts the dropdown pane possible positions by iterating through alignments\n * on the current position.\n * @function\n * @private\n */\n _realign() {\n this._addTriedPosition(this.position, this.alignment)\n this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position])\n }\n\n _addTriedPosition(position, alignment) {\n this.triedPositions[position] = this.triedPositions[position] || []\n this.triedPositions[position].push(alignment);\n }\n\n _positionsExhausted() {\n var isExhausted = true;\n for(var i = 0; i < POSITIONS.length; i++) {\n isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n }\n return isExhausted;\n }\n\n _alignmentsExhausted(position) {\n return this.triedPositions[position] && this.triedPositions[position].length === ALIGNMENTS[position].length;\n }\n\n\n // When we're trying to center, we don't want to apply offset that's going to\n // take us just off center, so wrap around to return 0 for the appropriate\n // offset in those alignments. TODO: Figure out if we want to make this\n // configurable behavior... it feels more intuitive, especially for tooltips, but\n // it's possible someone might actually want to start from center and then nudge\n // slightly off.\n _getVOffset() {\n return this.options.vOffset;\n }\n\n _getHOffset() {\n return this.options.hOffset;\n }\n\n _setPosition($anchor, $element, $parent) {\n if($anchor.attr('aria-expanded') === 'false'){ return false; }\n\n if (!this.options.allowOverlap) {\n // restore original position & alignment before checking overlap\n this.position = this.originalPosition;\n this.alignment = this.originalAlignment;\n }\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n if(!this.options.allowOverlap) {\n var minOverlap = 100000000;\n // default coordinates to how we start, in case we can't figure out better\n var minCoordinates = {position: this.position, alignment: this.alignment};\n while(!this._positionsExhausted()) {\n let overlap = Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n if(overlap === 0) {\n return;\n }\n\n if(overlap < minOverlap) {\n minOverlap = overlap;\n minCoordinates = {position: this.position, alignment: this.alignment};\n }\n\n this._reposition();\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n // If we get through the entire loop, there was no non-overlapping\n // position available. Pick the version with least overlap.\n this.position = minCoordinates.position;\n this.alignment = minCoordinates.alignment;\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n }\n\n}\n\nPositionable.defaults = {\n /**\n * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown positionable first\n * try to position as defined by data-position and data-alignment, but\n * reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Number of pixels the positionable should be separated vertically from anchor\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels the positionable should be separated horizontally from anchor\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n}\n\nexport {Positionable};\n","import $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n animateIn: function(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n}\n\nfunction Move(duration, elem, fn){\n var anim, prog, start = null;\n\n if (duration === 0) {\n fn.apply(elem);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n return;\n }\n\n function move(ts){\n if(!start) start = ts;\n prog = ts - start;\n fn.apply(elem);\n\n if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n else{\n window.cancelAnimationFrame(anim);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n }\n }\n anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n element = $(element).eq(0);\n\n if (!element.length) return;\n\n var initClass = isIn ? initClasses[0] : initClasses[1];\n var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n // Set up the animation\n reset();\n\n element\n .addClass(animation)\n .css('transition', 'none');\n\n requestAnimationFrame(() => {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n // Start the animation\n requestAnimationFrame(() => {\n // will trigger the browser to synchronously calculate the style and layout\n // also called reflow or layout thrashing\n // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n element[0].offsetWidth;\n element\n .css('transition', '')\n .addClass(activeClass);\n });\n\n // Clean up the animation when it finishes\n element.one(transitionend(element), finish);\n\n // Hides the element (for out animations), resets the element, and runs a callback\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n // Resets transitions and removes motion-specific classes\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(`${initClass} ${activeClass} ${animation}`);\n }\n}\n\nexport { Move, Motion };\n\n","import $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n})();\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).on(trigger, function() {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10); //default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener(250);\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function (__, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n // var y = e.touches[0].pageY;\n var dx = startPosX - x;\n // var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\n// function teardown() {\n// this.removeEventListener('touchstart', onTouchStart);\n// }\n\nclass SpotSwipe {\n constructor() {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this._init();\n }\n\n _init() {\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/\n\nTouch.setupSpotSwipe = function() {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function() {\n $.fn.addTouch = function(){\n this.each(function(i, el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event) {\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function () {\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { Positionable } from './foundation.positionable';\n\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Dropdown module.\n * @module foundation.dropdown\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n */\nclass Dropdown extends Positionable {\n /**\n * Creates a new instance of a dropdown.\n * @class\n * @name Dropdown\n * @param {jQuery} element - jQuery object to make into a dropdown.\n * Object should be of the dropdown panel, rather than its anchor.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);\n this.className = 'Dropdown'; // ie9 back compat\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Dropdown', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.\n * @function\n * @private\n */\n _init() {\n var $id = this.$element.attr('id');\n\n this.$anchors = $(`[data-toggle=\"${$id}\"]`).length ? $(`[data-toggle=\"${$id}\"]`) : $(`[data-open=\"${$id}\"]`);\n this.$anchors.attr({\n 'aria-controls': $id,\n 'data-is-focus': false,\n 'data-yeti-box': $id,\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n this._setCurrentAnchor(this.$anchors.first());\n\n if(this.options.parentClass){\n this.$parent = this.$element.parents('.' + this.options.parentClass);\n }else{\n this.$parent = null;\n }\n\n // Set [aria-labelledby] on the Dropdown if it is not set\n if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n // Get the anchor ID or create one\n if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n this.$currentAnchor.attr('id', GetYoDigits(6, 'dd-anchor'));\n }\n\n this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n }\n\n this.$element.attr({\n 'aria-hidden': 'true',\n 'data-yeti-box': $id,\n 'data-resize': $id,\n });\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n if(position) {\n return position[0];\n } else {\n return 'bottom'\n }\n }\n\n _getDefaultAlignment() {\n // handle legacy float approach\n var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n if(horizontalPosition) {\n return horizontalPosition[1];\n }\n\n return super._getDefaultAlignment();\n }\n\n\n\n /**\n * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.\n * Recursively calls itself if a collision is detected, with a new position class.\n * @function\n * @private\n */\n _setPosition() {\n this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n super._setPosition(this.$currentAnchor, this.$element, this.$parent);\n this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n }\n\n /**\n * Make it a current anchor.\n * Current anchor as the reference for the position of Dropdown panes.\n * @param {HTML} el - DOM element of the anchor.\n * @function\n * @private\n */\n _setCurrentAnchor(el) {\n this.$currentAnchor = $(el);\n }\n\n /**\n * Adds event listeners to the element utilizing the triggers utility library.\n * @function\n * @private\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': this._setPosition.bind(this)\n });\n\n this.$anchors.off('click.zf.trigger')\n .on('click.zf.trigger', function(e) {\n _this._setCurrentAnchor(this);\n\n if (\n // if forceFollow false, always prevent default action\n (_this.options.forceFollow === false) ||\n // if forceFollow true and hover option true, only prevent default action on 1st click\n // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed\n (hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false)\n ) {\n e.preventDefault();\n }\n });\n\n if(this.options.hover){\n this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n _this._setCurrentAnchor(this);\n\n var bodyData = $('body').data();\n if(typeof(bodyData.whatinput) === 'undefined' || bodyData.whatinput === 'mouse') {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.open();\n _this.$anchors.data('hover', true);\n }, _this.options.hoverDelay);\n }\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n if(this.options.hoverPane){\n this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n clearTimeout(_this.timeout);\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n }\n }\n this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {\n\n var $target = $(this);\n\n Keyboard.handleKey(e, 'Dropdown', {\n open: function() {\n if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n _this.open();\n _this.$element.attr('tabindex', -1).focus();\n e.preventDefault();\n }\n },\n close: function() {\n _this.close();\n _this.$anchors.focus();\n }\n });\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n var $body = $(document.body).not(this.$element),\n _this = this;\n $body.off('click.zf.dropdown tap.zf.dropdown')\n .on('click.zf.dropdown tap.zf.dropdown', function (e) {\n if(_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n return;\n }\n if(_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n return;\n }\n _this.close();\n $body.off('click.zf.dropdown tap.zf.dropdown');\n });\n }\n\n /**\n * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.\n * @function\n * @fires Dropdown#closeme\n * @fires Dropdown#show\n */\n open() {\n // var _this = this;\n /**\n * Fires to close other open dropdowns, typically when dropdown is opening\n * @event Dropdown#closeme\n */\n this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n this.$anchors.addClass('hover')\n .attr({'aria-expanded': true});\n // this.$element/*.show()*/;\n\n this.$element.addClass('is-opening');\n this._setPosition();\n this.$element.removeClass('is-opening').addClass('is-open')\n .attr({'aria-hidden': false});\n\n if(this.options.autoFocus){\n var $focusable = Keyboard.findFocusable(this.$element);\n if($focusable.length){\n $focusable.eq(0).focus();\n }\n }\n\n if(this.options.closeOnClick){ this._addBodyHandler(); }\n\n if (this.options.trapFocus) {\n Keyboard.trapFocus(this.$element);\n }\n\n /**\n * Fires once the dropdown is visible.\n * @event Dropdown#show\n */\n this.$element.trigger('show.zf.dropdown', [this.$element]);\n }\n\n /**\n * Closes the open dropdown pane.\n * @function\n * @fires Dropdown#hide\n */\n close() {\n if(!this.$element.hasClass('is-open')){\n return false;\n }\n this.$element.removeClass('is-open')\n .attr({'aria-hidden': true});\n\n this.$anchors.removeClass('hover')\n .attr('aria-expanded', false);\n\n /**\n * Fires once the dropdown is no longer visible.\n * @event Dropdown#hide\n */\n this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n if (this.options.trapFocus) {\n Keyboard.releaseFocus(this.$element);\n }\n }\n\n /**\n * Toggles the dropdown pane's visibility.\n * @function\n */\n toggle() {\n if(this.$element.hasClass('is-open')){\n if(this.$anchors.data('hover')) return;\n this.close();\n }else{\n this.open();\n }\n }\n\n /**\n * Destroys the dropdown.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger').hide();\n this.$anchors.off('.zf.dropdown');\n $(document.body).off('click.zf.dropdown tap.zf.dropdown');\n\n }\n}\n\nDropdown.defaults = {\n /**\n * Class that designates bounding container of Dropdown (default: window)\n * @option\n * @type {?string}\n * @default null\n */\n parentClass: null,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 250\n */\n hoverDelay: 250,\n /**\n * Allow submenus to open on hover events\n * @option\n * @type {boolean}\n * @default false\n */\n hover: false,\n /**\n * Don't close dropdown when hovering over dropdown pane\n * @option\n * @type {boolean}\n * @default false\n */\n hoverPane: false,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Position of dropdown. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false,\n /**\n * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n /**\n * Allows a click on the body to close the dropdown.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {Dropdown};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl, ignoreMousedisappear } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { Box } from './foundation.util.box';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * DropdownMenu module.\n * @module foundation.dropdownMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.nest\n * @requires foundation.util.touch\n */\n\nclass DropdownMenu extends Plugin {\n /**\n * Creates a new instance of DropdownMenu.\n * @class\n * @name DropdownMenu\n * @fires DropdownMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n this.className = 'DropdownMenu'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('DropdownMenu', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin, and calls _prepareMenu\n * @private\n * @function\n */\n _init() {\n Nest.Feather(this.$element, 'dropdown');\n\n var subs = this.$element.find('li.is-dropdown-submenu-parent');\n this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n this.$menuItems = this.$element.find('li[role=\"none\"]');\n this.$tabs = this.$element.children('li[role=\"none\"]');\n this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n if (this.options.alignment === 'auto') {\n if (this.$element.hasClass(this.options.rightClass) || Rtl() || this.$element.parents('.top-bar-right').is('*')) {\n this.options.alignment = 'right';\n subs.addClass('opens-left');\n } else {\n this.options.alignment = 'left';\n subs.addClass('opens-right');\n }\n } else {\n if (this.options.alignment === 'right') {\n subs.addClass('opens-left');\n } else {\n subs.addClass('opens-right');\n }\n }\n this.changed = false;\n this._events();\n };\n\n _isVertical() {\n return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n }\n\n _isRtl() {\n return this.$element.hasClass('align-right') || (Rtl() && !this.$element.hasClass('align-left'));\n }\n\n /**\n * Adds event listeners to elements within the menu\n * @private\n * @function\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),\n parClass = 'is-dropdown-submenu-parent';\n\n // used for onClick and in the keyboard handlers\n var handleClickFn = function(e) {\n var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),\n hasSub = $elem.hasClass(parClass),\n hasClicked = $elem.attr('data-is-click') === 'true',\n $sub = $elem.children('.is-dropdown-submenu');\n\n if (hasSub) {\n if (hasClicked) {\n if (!_this.options.closeOnClick\n || (!_this.options.clickOpen && !hasTouch)\n || (_this.options.forceFollow && hasTouch)) {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._hide($elem);\n }\n else {\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._show($sub);\n $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);\n }\n }\n };\n\n if (this.options.clickOpen || hasTouch) {\n this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n }\n\n // Handle Leaf element Clicks\n if(_this.options.closeOnClickInside){\n this.$menuItems.on('click.zf.dropdownMenu', function() {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if(!hasSub){\n _this._hide();\n }\n });\n }\n\n if (hasTouch && this.options.disableHoverOnTouch) this.options.disableHover = true;\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n\n if (hasSub) {\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._show($elem.children('.is-dropdown-submenu'));\n }, _this.options.hoverDelay));\n }\n }).on('mouseleave.zf.dropdownMenu', ignoreMousedisappear(function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if (hasSub && _this.options.autoclose) {\n if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; }\n\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._hide($elem);\n }, _this.options.closingTime));\n }\n }));\n }\n this.$menuItems.on('keydown.zf.dropdownMenu', function(e) {\n var $element = $(e.target).parentsUntil('ul', '[role=\"none\"]'),\n isTab = _this.$tabs.index($element) > -1,\n $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(i-1);\n $nextElement = $elements.eq(i+1);\n return;\n }\n });\n\n var nextSibling = function() {\n $nextElement.children('a:first').focus();\n e.preventDefault();\n }, prevSibling = function() {\n $prevElement.children('a:first').focus();\n e.preventDefault();\n }, openSub = function() {\n var $sub = $element.children('ul.is-dropdown-submenu');\n if ($sub.length) {\n _this._show($sub);\n $element.find('li > a:first').focus();\n e.preventDefault();\n } else { return; }\n }, closeSub = function() {\n //if ($element.is(':first-child')) {\n var close = $element.parent('ul').parent('li');\n close.children('a:first').focus();\n _this._hide(close);\n e.preventDefault();\n //}\n };\n var functions = {\n open: openSub,\n close: function() {\n _this._hide(_this.$element);\n _this.$menuItems.eq(0).children('a').focus(); // focus to first element\n e.preventDefault();\n }\n };\n\n if (isTab) {\n if (_this._isVertical()) { // vertical menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: closeSub,\n previous: openSub\n });\n } else { // left aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: openSub,\n previous: closeSub\n });\n }\n } else { // horizontal menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: prevSibling,\n previous: nextSibling,\n down: openSub,\n up: closeSub\n });\n } else { // left aligned\n $.extend(functions, {\n next: nextSibling,\n previous: prevSibling,\n down: openSub,\n up: closeSub\n });\n }\n }\n } else { // not tabs -> one sub\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: closeSub,\n previous: openSub,\n down: nextSibling,\n up: prevSibling\n });\n } else { // left aligned\n $.extend(functions, {\n next: openSub,\n previous: closeSub,\n down: nextSibling,\n up: prevSibling\n });\n }\n }\n Keyboard.handleKey(e, 'DropdownMenu', functions);\n\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n const $body = $(document.body);\n this._removeBodyHandler();\n $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', (e) => {\n var isItself = !!$(e.target).closest(this.$element).length;\n if (isItself) return;\n\n this._hide();\n this._removeBodyHandler();\n });\n }\n\n /**\n * Remove the body event handler. See `_addBodyHandler`.\n * @function\n * @private\n */\n _removeBodyHandler() {\n $(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n }\n\n /**\n * Opens a dropdown pane, and checks for collisions first.\n * @param {jQuery} $sub - ul element that is a submenu to show\n * @function\n * @private\n * @fires DropdownMenu#show\n */\n _show($sub) {\n var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {\n return $(el).find($sub).length > 0;\n }));\n var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n this._hide($sibs, idx);\n $sub.css('visibility', 'hidden').addClass('js-dropdown-active')\n .parent('li.is-dropdown-submenu-parent').addClass('is-active');\n var clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`);\n clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner');\n }\n this.changed = true;\n }\n $sub.css('visibility', '');\n if (this.options.closeOnClick) { this._addBodyHandler(); }\n /**\n * Fires when the new dropdown pane is visible.\n * @event DropdownMenu#show\n */\n this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n }\n\n /**\n * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n * @function\n * @param {jQuery} $elem - element with a submenu to hide\n * @param {Number} idx - index of the $tabs collection to hide\n * @fires DropdownMenu#hide\n * @private\n */\n _hide($elem, idx) {\n var $toClose;\n if ($elem && $elem.length) {\n $toClose = $elem;\n } else if (typeof idx !== 'undefined') {\n $toClose = this.$tabs.not(function(i) {\n return i === idx;\n });\n }\n else {\n $toClose = this.$element;\n }\n var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n if (somethingToClose) {\n var $activeItem = $toClose.find('li.is-active');\n $activeItem.add($toClose).attr({\n 'data-is-click': false\n }).removeClass('is-active');\n\n $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n if (this.changed || $toClose.find('opens-inner').length) {\n var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n $toClose.find('li.is-dropdown-submenu-parent').add($toClose)\n .removeClass(`opens-inner opens-${this.options.alignment}`)\n .addClass(`opens-${oldClass}`);\n this.changed = false;\n }\n\n clearTimeout($activeItem.data('_delay'));\n this._removeBodyHandler();\n\n /**\n * Fires when the open menus are closed.\n * @event DropdownMenu#hide\n */\n this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n }\n }\n\n /**\n * Destroys the plugin.\n * @function\n */\n _destroy() {\n this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click')\n .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n $(document.body).off('.zf.dropdownMenu');\n Nest.Burn(this.$element, 'dropdown');\n }\n}\n\n/**\n * Default settings for plugin\n */\nDropdownMenu.defaults = {\n /**\n * Disallows hover events from opening submenus\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disallows hover on touch devices\n * @option\n * @type {boolean}\n * @default true\n */\n disableHoverOnTouch: true,\n /**\n * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n * @option\n * @type {boolean}\n * @default true\n */\n autoclose: true,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 50\n */\n hoverDelay: 50,\n /**\n * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n * @option\n * @type {boolean}\n * @default false\n */\n clickOpen: false,\n /**\n * Amount of time to delay closing a submenu on a mouseleave event.\n * @option\n * @type {number}\n * @default 500\n */\n\n closingTime: 500,\n /**\n * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow clicks on the body to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allow clicks on leaf anchor links to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClickInside: true,\n /**\n * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'vertical'\n */\n verticalClass: 'vertical',\n /**\n * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'align-right'\n */\n rightClass: 'align-right',\n /**\n * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {DropdownMenu};\n","import $ from 'jquery';\n\n/**\n * Runs a callback function when images are fully loaded.\n * @param {Object} images - Image(s) to check if loaded.\n * @param {Func} callback - Function to execute when image is fully loaded.\n */\nfunction onImagesLoaded(images, callback){\n var unloaded = images.length;\n\n if (unloaded === 0) {\n callback();\n }\n\n images.each(function(){\n // Check if image is loaded\n if (this.complete && typeof this.naturalWidth !== 'undefined') {\n singleImageLoaded();\n }\n else {\n // If the above check failed, simulate loading on detached element.\n var image = new Image();\n // Still count image as loaded if it finalizes with an error.\n var events = \"load.zf.images error.zf.images\";\n $(image).one(events, function me(){\n // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.\n $(this).off(events, me);\n singleImageLoaded();\n });\n image.src = $(this).attr('src');\n }\n });\n\n function singleImageLoaded() {\n unloaded--;\n if (unloaded === 0) {\n callback();\n }\n }\n}\n\nexport { onImagesLoaded };\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Equalizer module.\n * @module foundation.equalizer\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.imageLoader if equalizer contains images\n */\n\nclass Equalizer extends Plugin {\n /**\n * Creates a new instance of Equalizer.\n * @class\n * @name Equalizer\n * @fires Equalizer#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options);\n this.className = 'Equalizer'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var eqId = this.$element.attr('data-equalizer') || '';\n var $watched = this.$element.find(`[data-equalizer-watch=\"${eqId}\"]`);\n\n MediaQuery._init();\n\n this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');\n this.$element.attr('data-resize', (eqId || GetYoDigits(6, 'eq')));\n this.$element.attr('data-mutate', (eqId || GetYoDigits(6, 'eq')));\n\n this.hasNested = this.$element.find('[data-equalizer]').length > 0;\n this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;\n this.isOn = false;\n this._bindHandler = {\n onResizeMeBound: this._onResizeMe.bind(this),\n onPostEqualizedBound: this._onPostEqualized.bind(this)\n };\n\n var imgs = this.$element.find('img');\n var tooSmall;\n if(this.options.equalizeOn){\n tooSmall = this._checkMQ();\n $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));\n }else{\n this._events();\n }\n if((typeof tooSmall !== 'undefined' && tooSmall === false) || typeof tooSmall === 'undefined'){\n if(imgs.length){\n onImagesLoaded(imgs, this._reflow.bind(this));\n }else{\n this._reflow();\n }\n }\n }\n\n /**\n * Removes event listeners if the breakpoint is too small.\n * @private\n */\n _pauseEvents() {\n this.isOn = false;\n this.$element.off({\n '.zf.equalizer': this._bindHandler.onPostEqualizedBound,\n 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,\n\t 'mutateme.zf.trigger': this._bindHandler.onResizeMeBound\n });\n }\n\n /**\n * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound\n * @private\n */\n _onResizeMe() {\n this._reflow();\n }\n\n /**\n * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound\n * @private\n */\n _onPostEqualized(e) {\n if(e.target !== this.$element[0]){ this._reflow(); }\n }\n\n /**\n * Initializes events for Equalizer.\n * @private\n */\n _events() {\n this._pauseEvents();\n if(this.hasNested){\n this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);\n }else{\n this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);\n\t this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);\n }\n this.isOn = true;\n }\n\n /**\n * Checks the current breakpoint to the minimum required size.\n * @private\n */\n _checkMQ() {\n var tooSmall = !MediaQuery.is(this.options.equalizeOn);\n if(tooSmall){\n if(this.isOn){\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n }else{\n if(!this.isOn){\n this._events();\n }\n }\n return tooSmall;\n }\n\n /**\n * A noop version for the plugin\n * @private\n */\n _killswitch() {\n return;\n }\n\n /**\n * Calls necessary functions to update Equalizer upon DOM change\n * @private\n */\n _reflow() {\n if(!this.options.equalizeOnStack){\n if(this._isStacked()){\n this.$watched.css('height', 'auto');\n return false;\n }\n }\n if (this.options.equalizeByRow) {\n this.getHeightsByRow(this.applyHeightByRow.bind(this));\n }else{\n this.getHeights(this.applyHeight.bind(this));\n }\n }\n\n /**\n * Manually determines if the first 2 elements are *NOT* stacked.\n * @private\n */\n _isStacked() {\n if (!this.$watched[0] || !this.$watched[1]) {\n return true;\n }\n return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} heights - An array of heights of children within Equalizer container\n */\n getHeights(cb) {\n var heights = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n heights.push(this.$watched[i].offsetHeight);\n }\n cb(heights);\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n */\n getHeightsByRow(cb) {\n var lastElTopOffset = (this.$watched.length ? this.$watched.first().offset().top : 0),\n groups = [],\n group = 0;\n //group by Row\n groups[group] = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n //maybe could use this.$watched[i].offsetTop\n var elOffsetTop = $(this.$watched[i]).offset().top;\n if (elOffsetTop !== lastElTopOffset) {\n group++;\n groups[group] = [];\n lastElTopOffset=elOffsetTop;\n }\n groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);\n }\n\n for (var j = 0, ln = groups.length; j < ln; j++) {\n var heights = $(groups[j]).map(function(){ return this[1]; }).get();\n var max = Math.max.apply(null, heights);\n groups[j].push(max);\n }\n cb(groups);\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest\n * @param {array} heights - An array of heights of children within Equalizer container\n * @fires Equalizer#preequalized\n * @fires Equalizer#postequalized\n */\n applyHeight(heights) {\n var max = Math.max.apply(null, heights);\n /**\n * Fires before the heights are applied\n * @event Equalizer#preequalized\n */\n this.$element.trigger('preequalized.zf.equalizer');\n\n this.$watched.css('height', max);\n\n /**\n * Fires when the heights have been applied\n * @event Equalizer#postequalized\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row\n * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n * @fires Equalizer#preequalized\n * @fires Equalizer#preequalizedrow\n * @fires Equalizer#postequalizedrow\n * @fires Equalizer#postequalized\n */\n applyHeightByRow(groups) {\n /**\n * Fires before the heights are applied\n */\n this.$element.trigger('preequalized.zf.equalizer');\n for (var i = 0, len = groups.length; i < len ; i++) {\n var groupsILength = groups[i].length,\n max = groups[i][groupsILength - 1];\n if (groupsILength<=2) {\n $(groups[i][0][0]).css({'height':'auto'});\n continue;\n }\n /**\n * Fires before the heights per row are applied\n * @event Equalizer#preequalizedrow\n */\n this.$element.trigger('preequalizedrow.zf.equalizer');\n for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {\n $(groups[i][j][0]).css({'height':max});\n }\n /**\n * Fires when the heights per row have been applied\n * @event Equalizer#postequalizedrow\n */\n this.$element.trigger('postequalizedrow.zf.equalizer');\n }\n /**\n * Fires when the heights have been applied\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Destroys an instance of Equalizer.\n * @function\n */\n _destroy() {\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n}\n\n/**\n * Default settings for plugin\n */\nEqualizer.defaults = {\n /**\n * Enable height equalization when stacked on smaller screens.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeOnStack: false,\n /**\n * Enable height equalization row by row.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeByRow: false,\n /**\n * String representing the minimum breakpoint size the plugin should equalize heights on.\n * @option\n * @type {string}\n * @default ''\n */\n equalizeOn: ''\n};\n\nexport {Equalizer};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits, transitionend } from './foundation.core.utils';\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Drilldown module.\n * @module foundation.drilldown\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n * @requires foundation.util.box\n */\n\nclass Drilldown extends Plugin {\n /**\n * Creates a new instance of a drilldown menu.\n * @class\n * @name Drilldown\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);\n this.className = 'Drilldown'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('Drilldown', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the drilldown by creating jQuery collections of elements\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'drilldown');\n\n if(this.options.autoApplyClass) {\n this.$element.addClass('drilldown');\n }\n\n this.$element.attr({\n 'aria-multiselectable': false\n });\n this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n this.$menuItems = this.$element.find('li').not('.js-drilldown-back').find('a');\n\n // Set the main menu as current by default (unless a submenu is selected)\n // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu\n this.$currentMenu = this.$element;\n\n this.$element.attr('data-mutate', (this.$element.attr('data-drilldown') || GetYoDigits(6, 'drilldown')));\n\n this._prepareMenu();\n this._registerEvents();\n\n this._keyboardEvents();\n }\n\n /**\n * prepares drilldown menu by setting attributes to links and elements\n * sets a min height to prevent content jumping\n * wraps the element if not already wrapped\n * @private\n * @function\n */\n _prepareMenu() {\n var _this = this;\n // if(!this.options.holdOpen){\n // this._menuLinkEvents();\n // }\n this.$submenuAnchors.each(function(){\n var $link = $(this);\n var $sub = $link.parent();\n if(_this.options.parentLink){\n $link.clone().prependTo($sub.children('[data-submenu]')).wrap('
  • ');\n }\n $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n $link.children('[data-submenu]')\n .attr({\n 'aria-hidden': true,\n 'tabindex': 0,\n 'role': 'group'\n });\n _this._events($link);\n });\n this.$submenus.each(function(){\n var $menu = $(this),\n $back = $menu.find('.js-drilldown-back');\n if(!$back.length) {\n switch (_this.options.backButtonPosition) {\n case \"bottom\":\n $menu.append(_this.options.backButton);\n break;\n case \"top\":\n $menu.prepend(_this.options.backButton);\n break;\n default:\n console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n }\n }\n _this._back($menu);\n });\n\n this.$submenus.addClass('invisible');\n if(!this.options.autoHeight) {\n this.$submenus.addClass('drilldown-submenu-cover-previous');\n }\n\n // create a wrapper on element if it doesn't exist.\n if(!this.$element.parent().hasClass('is-drilldown')){\n this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');\n if(this.options.animateHeight) this.$wrapper.addClass('animate-height');\n this.$element.wrap(this.$wrapper);\n }\n // set wrapper\n this.$wrapper = this.$element.parent();\n this.$wrapper.css(this._getMaxDims());\n }\n\n _resize() {\n this.$wrapper.css({'max-width': 'none', 'min-height': 'none'});\n // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\n this.$wrapper.css(this._getMaxDims());\n }\n\n /**\n * Adds event handlers to elements in the menu.\n * @function\n * @private\n * @param {jQuery} $elem - the current menu item to add handlers to.\n */\n _events($elem) {\n var _this = this;\n\n $elem.off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e) {\n if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){\n e.preventDefault();\n }\n\n // if(e.target !== e.currentTarget.firstElementChild){\n // return false;\n // }\n _this._show($elem.parent('li'));\n\n if(_this.options.closeOnClick){\n var $body = $('body');\n $body.off('.zf.drilldown').on('click.zf.drilldown', function(ev) {\n if (ev.target === _this.$element[0] || $.contains(_this.$element[0], ev.target)) { return; }\n ev.preventDefault();\n _this._hideAll();\n $body.off('.zf.drilldown');\n });\n }\n });\n }\n\n /**\n * Adds event handlers to the menu element.\n * @function\n * @private\n */\n _registerEvents() {\n if(this.options.scrollTop){\n this._bindHandler = this._scrollTop.bind(this);\n this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);\n }\n this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n }\n\n /**\n * Scroll to Top of Element or data-scroll-top-element\n * @function\n * @fires Drilldown#scrollme\n */\n _scrollTop() {\n var _this = this;\n var $scrollTopElement = _this.options.scrollTopElement !== ''?$(_this.options.scrollTopElement):_this.$element,\n scrollPos = parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset, 10);\n $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing,function(){\n /**\n * Fires after the menu has scrolled\n * @event Drilldown#scrollme\n */\n if(this===$('html')[0])_this.$element.trigger('scrollme.zf.drilldown');\n });\n }\n\n /**\n * Adds keydown event listener to `li`'s in the menu.\n * @private\n */\n _keyboardEvents() {\n var _this = this;\n\n this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e){\n var $element = $(this),\n $elements = $element.parent('li').parent('ul').children('li').children('a'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n return;\n }\n });\n\n Keyboard.handleKey(e, 'Drilldown', {\n next: function() {\n if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n previous: function() {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n },\n up: function() {\n $prevElement.focus();\n // Don't tap focus on first element in root ul\n return !$element.is(_this.$element.find('> li:first-child > a'));\n },\n down: function() {\n $nextElement.focus();\n // Don't tap focus on last element in root ul\n return !$element.is(_this.$element.find('> li:last-child > a'));\n },\n close: function() {\n // Don't close on element in root ul\n if (!$element.is(_this.$element.find('> li > a'))) {\n _this._hide($element.parent().parent());\n $element.parent().parent().siblings('a').focus();\n }\n },\n open: function() {\n if (_this.options.parentLink && $element.attr('href')) { // Link with href\n return false;\n } else if (!$element.is(_this.$menuItems)) { // not menu item means back button\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n } else if ($element.is(_this.$submenuAnchors)) { // Sub menu item\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n }); // end keyboardAccess\n }\n\n /**\n * Closes all open elements, and returns to root menu.\n * @function\n * @fires Drilldown#close\n * @fires Drilldown#closed\n */\n _hideAll() {\n var $elem = this.$element.find('.is-drilldown-submenu.is-active')\n $elem.addClass('is-closing');\n $elem.parent().closest('ul').removeClass('invisible');\n\n if (this.options.autoHeight) {\n const calcHeight = $elem.parent().closest('ul').data('calcHeight');\n this.$wrapper.css({ height: calcHeight });\n }\n\n /**\n * Fires when the menu is closing.\n * @event Drilldown#close\n */\n this.$element.trigger('close.zf.drilldown');\n\n $elem.one(transitionend($elem), () => {\n $elem.removeClass('is-active is-closing');\n\n /**\n * Fires when the menu is fully closed.\n * @event Drilldown#closed\n */\n this.$element.trigger('closed.zf.drilldown');\n });\n }\n\n /**\n * Adds event listener for each `back` button, and closes open menus.\n * @function\n * @fires Drilldown#back\n * @param {jQuery} $elem - the current sub-menu to add `back` event.\n */\n _back($elem) {\n var _this = this;\n $elem.off('click.zf.drilldown');\n $elem.children('.js-drilldown-back')\n .on('click.zf.drilldown', function() {\n _this._hide($elem);\n\n // If there is a parent submenu, call show\n let parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n if (parentSubMenu.length) {\n _this._show(parentSubMenu);\n }\n else {\n _this.$currentMenu = _this.$element;\n }\n });\n }\n\n /**\n * Adds event listener to menu items w/o submenus to close open menus on click.\n * @function\n * @private\n */\n _menuLinkEvents() {\n var _this = this;\n this.$menuItems.not('.is-drilldown-submenu-parent')\n .off('click.zf.drilldown')\n .on('click.zf.drilldown', function() {\n setTimeout(function() {\n _this._hideAll();\n }, 0);\n });\n }\n\n /**\n * Sets the CSS classes for submenu to show it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setShowSubMenuClasses($elem, trigger) {\n $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n $elem.parent('li').attr('aria-expanded', true);\n if (trigger === true) {\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Sets the CSS classes for submenu to hide it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setHideSubMenuClasses($elem, trigger) {\n $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n $elem.parent('li').attr('aria-expanded', false);\n if (trigger === true) {\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n */\n _showMenu($elem, autoFocus) {\n\n var _this = this;\n\n // Reset drilldown\n var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n $expandedSubmenus.each(function() {\n _this._setHideSubMenuClasses($(this));\n });\n\n // Save the menu as the currently displayed one.\n this.$currentMenu = $elem;\n\n // If target menu is root, focus first link & exit\n if ($elem.is('[data-drilldown]')) {\n if (autoFocus === true) $elem.find('li > a').first().focus();\n if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n return;\n }\n\n // Find all submenus on way to root incl. the element itself\n var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n // Open target menu and all submenus on its way to root\n $submenus.each(function(index) {\n\n // Update height of first child (target menu) if autoHeight option true\n if (index === 0 && _this.options.autoHeight) {\n _this.$wrapper.css('height', $(this).data('calcHeight'));\n }\n\n var isLastChild = index === $submenus.length - 1;\n\n // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n // Last child makes sure the event gets always triggered even if going through several menus\n if (isLastChild === true) {\n $(this).one(transitionend($(this)), () => {\n if (autoFocus === true) {\n $elem.find('li > a').first().focus();\n }\n });\n }\n\n _this._setShowSubMenuClasses($(this), isLastChild);\n });\n }\n\n /**\n * Opens a submenu.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n */\n _show($elem) {\n const $submenu = $elem.children('[data-submenu]');\n\n $elem.attr('aria-expanded', true);\n\n this.$currentMenu = $submenu;\n\n //hide drilldown parent menu when submenu is open\n // this removes it from the dom so that the tab key will take the user to the next visible element\n $elem.parent().closest('ul').addClass('invisible');\n\n // add visible class to submenu to override invisible class above\n $submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden', false);\n\n if (this.options.autoHeight) {\n this.$wrapper.css({ height: $submenu.data('calcHeight') });\n }\n\n /**\n * Fires when the submenu has opened.\n * @event Drilldown#open\n */\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n\n /**\n * Hides a submenu\n * @function\n * @fires Drilldown#hide\n * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n */\n _hide($elem) {\n if(this.options.autoHeight) this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});\n $elem.parent().closest('ul').removeClass('invisible');\n $elem.parent('li').attr('aria-expanded', false);\n $elem.attr('aria-hidden', true);\n $elem.addClass('is-closing')\n .one(transitionend($elem), function(){\n $elem.removeClass('is-active is-closing visible');\n $elem.blur().addClass('invisible');\n });\n /**\n * Fires when the submenu has closed.\n * @event Drilldown#hide\n */\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n\n /**\n * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n * Prevents content jumping.\n * @function\n * @private\n */\n _getMaxDims() {\n var maxHeight = 0, result = {}, _this = this;\n\n // Recalculate menu heights and total max height\n this.$submenus.add(this.$element).each(function(){\n var height = Box.GetDimensions(this).height;\n\n maxHeight = height > maxHeight ? height : maxHeight;\n\n if(_this.options.autoHeight) {\n $(this).data('calcHeight',height);\n }\n });\n\n if (this.options.autoHeight)\n result.height = this.$currentMenu.data('calcHeight');\n else\n result['min-height'] = `${maxHeight}px`;\n\n result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`;\n\n return result;\n }\n\n /**\n * Destroys the Drilldown Menu\n * @function\n */\n _destroy() {\n $('body').off('.zf.drilldown');\n if(this.options.scrollTop) this.$element.off('.zf.drilldown',this._bindHandler);\n this._hideAll();\n\t this.$element.off('mutateme.zf.trigger');\n Nest.Burn(this.$element, 'drilldown');\n this.$element.unwrap()\n .find('.js-drilldown-back, .is-submenu-parent-item').remove()\n .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd')\n .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n this.$submenuAnchors.each(function() {\n $(this).off('.zf.drilldown');\n });\n\n this.$element.find('[data-is-parent-link]').detach();\n this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n this.$element.find('a').each(function(){\n var $link = $(this);\n $link.removeAttr('tabindex');\n if($link.data('savedHref')){\n $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n }else{ return; }\n });\n };\n}\n\nDrilldown.defaults = {\n /**\n * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n * @option\n * @type {boolean}\n * @default true\n */\n autoApplyClass: true,\n /**\n * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
  • Back
  • '\n */\n backButton: '
  • Back
  • ',\n /**\n * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n * @option\n * @type {string}\n * @default top\n */\n backButtonPosition: 'top',\n /**\n * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
    '\n */\n wrapper: '
    ',\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Allow the menu to return to root list on body click.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * Allow the menu to auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n autoHeight: false,\n /**\n * Animate the auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n animateHeight: false,\n /**\n * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n * @option\n * @type {boolean}\n * @default false\n */\n scrollTop: false,\n /**\n * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n * @option\n * @type {string}\n * @default ''\n */\n scrollTopElement: '',\n /**\n * ScrollTop offset\n * @option\n * @type {number}\n * @default 0\n */\n scrollTopOffset: 0,\n /**\n * Scroll animation duration\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Scroll animation easing. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @see {@link https://api.jquery.com/animate|JQuery animate}\n * @default 'swing'\n */\n animationEasing: 'swing'\n // holdOpen: false\n};\n\nexport {Drilldown};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { DropdownMenu } from './foundation.dropdownMenu';\nimport { Drilldown } from './foundation.drilldown';\nimport { AccordionMenu } from './foundation.accordionMenu';\n\nlet MenuPlugins = {\n dropdown: {\n cssClass: 'dropdown',\n plugin: DropdownMenu\n },\n drilldown: {\n cssClass: 'drilldown',\n plugin: Drilldown\n },\n accordion: {\n cssClass: 'accordion-menu',\n plugin: AccordionMenu\n }\n};\n\n // import \"foundation.util.triggers.js\";\n\n\n/**\n * ResponsiveMenu module.\n * @module foundation.responsiveMenu\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass ResponsiveMenu extends Plugin {\n /**\n * Creates a new instance of a responsive menu.\n * @class\n * @name ResponsiveMenu\n * @fires ResponsiveMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element) {\n this.$element = $(element);\n this.rules = this.$element.data('responsive-menu');\n this.currentMq = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveMenu'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.\n * @function\n * @private\n */\n _init() {\n\n MediaQuery._init();\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n // Add data-mutate since children may need it.\n this.$element.attr('data-mutate', (this.$element.attr('data-mutate') || GetYoDigits(6, 'responsive-menu')));\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).on('changed.zf.mediaquery', function() {\n _this._checkMediaQueries();\n });\n // $(window).on('resize.zf.ResponsiveMenu', function() {\n // _this._checkMediaQueries();\n // });\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) this.currentPlugin.destroy();\n this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n this.currentPlugin.destroy();\n $(window).off('.zf.ResponsiveMenu');\n }\n}\n\nResponsiveMenu.defaults = {};\n\nexport {ResponsiveMenu};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * ResponsiveToggle module.\n * @module foundation.responsiveToggle\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion\n */\n\nclass ResponsiveToggle extends Plugin {\n /**\n * Creates a new instance of Tab Bar.\n * @class\n * @name ResponsiveToggle\n * @fires ResponsiveToggle#init\n * @param {jQuery} element - jQuery object to attach tab bar functionality to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n this.className = 'ResponsiveToggle'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the tab bar by finding the target element, toggling element, and running update().\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n var targetID = this.$element.data('responsive-toggle');\n if (!targetID) {\n console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n }\n\n this.$targetMenu = $(`#${targetID}`);\n this.$toggler = this.$element.find('[data-toggle]').filter(function() {\n var target = $(this).data('toggle');\n return (target === targetID || target === \"\");\n });\n this.options = $.extend({}, this.options, this.$targetMenu.data());\n\n // If they were set, parse the animation classes\n if(this.options.animate) {\n let input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n }\n\n this._update();\n }\n\n /**\n * Adds necessary event handlers for the tab bar to work.\n * @function\n * @private\n */\n _events() {\n this._updateMqHandler = this._update.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n }\n\n /**\n * Checks the current media query to determine if the tab bar should be visible or hidden.\n * @function\n * @private\n */\n _update() {\n // Mobile\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n this.$element.show();\n this.$targetMenu.hide();\n }\n\n // Desktop\n else {\n this.$element.hide();\n this.$targetMenu.show();\n }\n }\n\n /**\n * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.\n * @function\n * @fires ResponsiveToggle#toggled\n */\n toggleMenu() {\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n /**\n * Fires when the element attached to the tab bar toggles.\n * @event ResponsiveToggle#toggled\n */\n if(this.options.animate) {\n if (this.$targetMenu.is(':hidden')) {\n Motion.animateIn(this.$targetMenu, this.animationIn, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n this.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$targetMenu, this.animationOut, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n });\n }\n }\n else {\n this.$targetMenu.toggle(0);\n this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n this.$element.trigger('toggled.zf.responsiveToggle');\n }\n }\n };\n\n _destroy() {\n this.$element.off('.zf.responsiveToggle');\n this.$toggler.off('.zf.responsiveToggle');\n\n $(window).off('changed.zf.mediaquery', this._updateMqHandler);\n }\n}\n\nResponsiveToggle.defaults = {\n /**\n * The breakpoint after which the menu is always shown, and the tab bar is hidden.\n * @option\n * @type {string}\n * @default 'medium'\n */\n hideFor: 'medium',\n\n /**\n * To decide if the toggle should be animated or not.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport { ResponsiveToggle };\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n /**\n * Creates a new instance of Reveal.\n * @class\n * @name Reveal\n * @param {jQuery} element - jQuery object to use for the modal.\n * @param {Object} options - optional parameters.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n this.className = 'Reveal'; // ie9 back compat\n this._init();\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n Keyboard.register('Reveal', {\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the modal by adding the overlay and close buttons, (if selected).\n * @private\n */\n _init() {\n MediaQuery._init();\n this.id = this.$element.attr('id');\n this.isActive = false;\n this.cached = {mq: MediaQuery.current};\n\n this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n this.$anchor.attr({\n 'aria-controls': this.id,\n 'aria-haspopup': 'dialog',\n 'tabindex': 0\n });\n\n if (this.options.fullScreen || this.$element.hasClass('full')) {\n this.options.fullScreen = true;\n this.options.overlay = false;\n }\n if (this.options.overlay && !this.$overlay) {\n this.$overlay = this._makeOverlay(this.id);\n }\n\n this.$element.attr({\n 'role': 'dialog',\n 'aria-hidden': true,\n 'data-yeti-box': this.id,\n 'data-resize': this.id\n });\n\n if(this.$overlay) {\n this.$element.detach().appendTo(this.$overlay);\n } else {\n this.$element.detach().appendTo($(this.options.appendTo));\n this.$element.addClass('without-overlay');\n }\n this._events();\n if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n this.onLoadListener = onLoad($(window), () => this.open());\n }\n }\n\n /**\n * Creates an overlay div to display behind the modal.\n * @private\n */\n _makeOverlay() {\n var additionalOverlayClasses = '';\n\n if (this.options.additionalOverlayClasses) {\n additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n }\n\n return $('
    ')\n .addClass('reveal-overlay' + additionalOverlayClasses)\n .appendTo(this.options.appendTo);\n }\n\n /**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */\n _updatePosition() {\n var width = this.$element.outerWidth();\n var outerWidth = $(window).width();\n var height = this.$element.outerHeight();\n var outerHeight = $(window).height();\n var left, top = null;\n if (this.options.hOffset === 'auto') {\n left = parseInt((outerWidth - width) / 2, 10);\n } else {\n left = parseInt(this.options.hOffset, 10);\n }\n if (this.options.vOffset === 'auto') {\n if (height > outerHeight) {\n top = parseInt(Math.min(100, outerHeight / 10), 10);\n } else {\n top = parseInt((outerHeight - height) / 4, 10);\n }\n } else if (this.options.vOffset !== null) {\n top = parseInt(this.options.vOffset, 10);\n }\n\n if (top !== null) {\n this.$element.css({top: top + 'px'});\n }\n\n // only worry about left if we don't have an overlay or we have a horizontal offset,\n // otherwise we're perfectly in the middle\n if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n this.$element.css({left: left + 'px'});\n this.$element.css({margin: '0px'});\n }\n\n }\n\n /**\n * Adds event handlers for the modal.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': (event, $element) => {\n if ((event.target === _this.$element[0]) ||\n ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n return this.close.apply(this);\n }\n },\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': function() {\n _this._updatePosition();\n }\n });\n\n if (this.options.closeOnClick && this.options.overlay) {\n this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) {\n return;\n }\n _this.close();\n });\n }\n if (this.options.deepLink) {\n $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n }\n }\n\n /**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */\n _handleState() {\n if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n else{ this.close(); }\n }\n\n /**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */\n _disableScroll(scrollTop) {\n scrollTop = scrollTop || $(window).scrollTop();\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", -scrollTop);\n }\n }\n\n /**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */\n _enableScroll(scrollTop) {\n scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"), 10);\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", \"\");\n $(window).scrollTop(-scrollTop);\n }\n }\n\n\n /**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */\n open() {\n // either update or replace browser history\n const hash = `#${this.id}`;\n if (this.options.deepLink && window.location.hash !== hash) {\n\n if (window.history.pushState) {\n if (this.options.updateHistory) {\n window.history.pushState({}, '', hash);\n } else {\n window.history.replaceState({}, '', hash);\n }\n } else {\n window.location.hash = hash;\n }\n }\n\n // Remember anchor that opened it to set focus back later, have general anchors as fallback\n this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n this.isActive = true;\n\n // Make elements invisible, but remove display: none so we can get size and positioning\n this.$element\n .css({ 'visibility': 'hidden' })\n .show()\n .scrollTop(0);\n if (this.options.overlay) {\n this.$overlay.css({'visibility': 'hidden'}).show();\n }\n\n this._updatePosition();\n\n this.$element\n .hide()\n .css({ 'visibility': '' });\n\n if(this.$overlay) {\n this.$overlay.css({'visibility': ''}).hide();\n if(this.$element.hasClass('fast')) {\n this.$overlay.addClass('fast');\n } else if (this.$element.hasClass('slow')) {\n this.$overlay.addClass('slow');\n }\n }\n\n\n if (!this.options.multipleOpened) {\n /**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */\n this.$element.trigger('closeme.zf.reveal', this.id);\n }\n\n if ($('.reveal:visible').length === 0) {\n this._disableScroll();\n }\n\n var _this = this;\n\n // Motion UI method of reveal\n if (this.options.animationIn) {\n function afterAnimation(){\n _this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n _this._addGlobalClasses();\n Keyboard.trapFocus(_this.$element);\n }\n if (this.options.overlay) {\n Motion.animateIn(this.$overlay, 'fade-in');\n }\n Motion.animateIn(this.$element, this.options.animationIn, () => {\n if(this.$element) { // protect against object having been removed\n this.focusableElements = Keyboard.findFocusable(this.$element);\n afterAnimation();\n }\n });\n }\n // jQuery method of reveal\n else {\n if (this.options.overlay) {\n this.$overlay.show(0);\n }\n this.$element.show(this.options.showDelay);\n }\n\n // handle accessibility\n this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n Keyboard.trapFocus(this.$element);\n\n this._addGlobalClasses();\n\n this._addGlobalListeners();\n\n /**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */\n this.$element.trigger('open.zf.reveal');\n }\n\n /**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */\n _addGlobalClasses() {\n const updateScrollbarClass = () => {\n $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n };\n\n this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n updateScrollbarClass();\n $('html').addClass('is-reveal-open');\n }\n\n /**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */\n _removeGlobalClasses() {\n this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n $('html').removeClass('is-reveal-open');\n $('html').removeClass('zf-has-scroll');\n }\n\n /**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */\n _addGlobalListeners() {\n var _this = this;\n if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n this.focusableElements = Keyboard.findFocusable(this.$element);\n\n if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) { return; }\n _this.close();\n });\n }\n\n if (this.options.closeOnEsc) {\n $(window).on('keydown.zf.reveal', function(e) {\n Keyboard.handleKey(e, 'Reveal', {\n close: function() {\n if (_this.options.closeOnEsc) {\n _this.close();\n }\n }\n });\n });\n }\n }\n\n /**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */\n close() {\n if (!this.isActive || !this.$element.is(':visible')) {\n return false;\n }\n var _this = this;\n\n // Motion UI method of hiding\n if (this.options.animationOut) {\n if (this.options.overlay) {\n Motion.animateOut(this.$overlay, 'fade-out');\n }\n\n Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n }\n // jQuery method of hiding\n else {\n this.$element.hide(this.options.hideDelay);\n\n if (this.options.overlay) {\n this.$overlay.hide(0, finishUp);\n }\n else {\n finishUp();\n }\n }\n\n // Conditionals to remove extra event listeners added on open\n if (this.options.closeOnEsc) {\n $(window).off('keydown.zf.reveal');\n }\n\n if (!this.options.overlay && this.options.closeOnClick) {\n $('body').off('click.zf.dropdown tap.zf.dropdown');\n }\n\n this.$element.off('keydown.zf.reveal');\n\n function finishUp() {\n\n // Get the current top before the modal is closed and restore the scroll after.\n // TODO: use component properties instead of HTML properties\n // See https://github.com/foundation/foundation-sites/pull/10786\n var scrollTop = parseInt($(\"html\").css(\"top\"), 10);\n\n if ($('.reveal:visible').length === 0) {\n _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n\n Keyboard.releaseFocus(_this.$element);\n\n _this.$element.attr('aria-hidden', true);\n\n if ($('.reveal:visible').length === 0) {\n _this._enableScroll(scrollTop);\n }\n\n /**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */\n _this.$element.trigger('closed.zf.reveal');\n }\n\n /**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */\n if (this.options.resetOnClose) {\n this.$element.html(this.$element.html());\n }\n\n this.isActive = false;\n // If deepLink and we did not switched to an other modal...\n if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n // Remove the history hash\n if (window.history.replaceState) {\n const urlWithoutHash = window.location.pathname + window.location.search;\n if (this.options.updateHistory) {\n window.history.pushState({}, '', urlWithoutHash); // remove the hash\n } else {\n window.history.replaceState('', document.title, urlWithoutHash);\n }\n } else {\n window.location.hash = '';\n }\n }\n\n this.$activeAnchor.focus();\n }\n\n /**\n * Toggles the open/closed state of a modal.\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.close();\n } else {\n this.open();\n }\n };\n\n /**\n * Destroys an instance of a modal.\n * @function\n */\n _destroy() {\n if (this.options.overlay) {\n this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n this.$overlay.hide().off().remove();\n }\n this.$element.hide().off();\n this.$anchor.off('.zf');\n $(window).off(`.zf.reveal:${this.id}`)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n if ($('.reveal:visible').length === 0) {\n this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n };\n}\n\nReveal.defaults = {\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationIn: '',\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationOut: '',\n /**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n showDelay: 0,\n /**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n hideDelay: 0,\n /**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnEsc: true,\n /**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */\n multipleOpened: false,\n /**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n vOffset: 'auto',\n /**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n hOffset: 'auto',\n /**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */\n fullScreen: false,\n /**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */\n overlay: true,\n /**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */\n resetOnClose: false,\n /**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */\n updateHistory: false,\n /**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */\n appendTo: \"body\",\n /**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */\n additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Move } from './foundation.util.motion';\nimport { GetYoDigits, rtl as Rtl } from './foundation.core.utils';\n\nimport { Plugin } from './foundation.core.plugin';\n\nimport { Touch } from './foundation.util.touch';\n\nimport { Triggers } from './foundation.util.triggers';\n/**\n * Slider module.\n * @module foundation.slider\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n */\n\nclass Slider extends Plugin {\n /**\n * Creates a new instance of a slider control.\n * @class\n * @name Slider\n * @param {jQuery} element - jQuery object to make into a slider control.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Slider.defaults, this.$element.data(), options);\n this.className = 'Slider'; // ie9 back compat\n this.initialized = false;\n\n // Touch and Triggers inits are idempotent, we just need to make sure it's initialied.\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Slider', {\n 'ltr': {\n 'ARROW_RIGHT': 'increase',\n 'ARROW_UP': 'increase',\n 'ARROW_DOWN': 'decrease',\n 'ARROW_LEFT': 'decrease',\n 'SHIFT_ARROW_RIGHT': 'increaseFast',\n 'SHIFT_ARROW_UP': 'increaseFast',\n 'SHIFT_ARROW_DOWN': 'decreaseFast',\n 'SHIFT_ARROW_LEFT': 'decreaseFast',\n 'HOME': 'min',\n 'END': 'max'\n },\n 'rtl': {\n 'ARROW_LEFT': 'increase',\n 'ARROW_RIGHT': 'decrease',\n 'SHIFT_ARROW_LEFT': 'increaseFast',\n 'SHIFT_ARROW_RIGHT': 'decreaseFast'\n }\n });\n }\n\n /**\n * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).\n * @function\n * @private\n */\n _init() {\n this.inputs = this.$element.find('input');\n this.handles = this.$element.find('[data-slider-handle]');\n\n this.$handle = this.handles.eq(0);\n this.$input = this.inputs.length ? this.inputs.eq(0) : $(`#${this.$handle.attr('aria-controls')}`);\n this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);\n\n if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {\n this.options.disabled = true;\n this.$element.addClass(this.options.disabledClass);\n }\n if (!this.inputs.length) {\n this.inputs = $().add(this.$input);\n this.options.binding = true;\n }\n\n this._setInitAttr(0);\n\n if (this.handles[1]) {\n this.options.doubleSided = true;\n this.$handle2 = this.handles.eq(1);\n this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $(`#${this.$handle2.attr('aria-controls')}`);\n\n if (!this.inputs[1]) {\n this.inputs = this.inputs.add(this.$input2);\n }\n\n // this.$handle.triggerHandler('click.zf.slider');\n this._setInitAttr(1);\n }\n\n // Set handle positions\n this.setHandles();\n\n this._events();\n this.initialized = true;\n }\n\n setHandles() {\n if(this.handles[1]) {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val(), () => {\n this._setHandlePos(this.$handle2, this.inputs.eq(1).val());\n });\n } else {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val());\n }\n }\n\n _reflow() {\n this.setHandles();\n }\n /**\n * @function\n * @private\n * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)\n */\n _pctOfBar(value) {\n var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start)\n\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n }\n\n return pctOfBar.toFixed(2)\n }\n\n /**\n * @function\n * @private\n * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value\n */\n _value(pctOfBar) {\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n }\n\n var value\n if (this.options.vertical) {\n // linear interpolation which is working with negative values for start\n // https://math.stackexchange.com/a/1019084\n value = parseFloat(this.options.end) + pctOfBar * (this.options.start - this.options.end)\n } else {\n value = (this.options.end - this.options.start) * pctOfBar + parseFloat(this.options.start);\n }\n\n return value\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function\n */\n _logTransform(value) {\n return baseLog(this.options.nonLinearBase, ((value*(this.options.nonLinearBase-1))+1))\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function\n */\n _powTransform(value) {\n return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1)\n }\n\n /**\n * Sets the position of the selected handle and fill bar.\n * @function\n * @private\n * @param {jQuery} $hndl - the selected handle to move.\n * @param {Number} location - floating point between the start and end values of the slider bar.\n * @param {Function} cb - callback function to fire on completion.\n * @fires Slider#moved\n * @fires Slider#changed\n */\n _setHandlePos($hndl, location, cb) {\n // don't move if the slider has been disabled since its initialization\n if (this.$element.hasClass(this.options.disabledClass)) {\n return;\n }\n //might need to alter that slightly for bars that will have odd number selections.\n location = parseFloat(location);//on input change events, convert string to number...grumble.\n\n // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max\n if (location < this.options.start) { location = this.options.start; }\n else if (location > this.options.end) { location = this.options.end; }\n\n var isDbl = this.options.doubleSided;\n\n if (isDbl) { //this block is to prevent 2 handles from crossing eachother. Could/should be improved.\n if (this.handles.index($hndl) === 0) {\n var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));\n location = location >= h2Val ? h2Val - this.options.step : location;\n } else {\n var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));\n location = location <= h1Val ? h1Val + this.options.step : location;\n }\n }\n\n var _this = this,\n vert = this.options.vertical,\n hOrW = vert ? 'height' : 'width',\n lOrT = vert ? 'top' : 'left',\n handleDim = $hndl[0].getBoundingClientRect()[hOrW],\n elemDim = this.$element[0].getBoundingClientRect()[hOrW],\n //percentage of bar min/max value based on click or drag point\n pctOfBar = this._pctOfBar(location),\n //number of actual pixels to shift the handle, based on the percentage obtained above\n pxToMove = (elemDim - handleDim) * pctOfBar,\n //percentage of bar to shift the handle\n movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal);\n //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value\n location = parseFloat(location.toFixed(this.options.decimal));\n // declare empty object for css adjustments, only used with 2 handled-sliders\n var css = {};\n\n this._setValues($hndl, location);\n\n // TODO update to calculate based on values set to respective inputs??\n if (isDbl) {\n var isLeftHndl = this.handles.index($hndl) === 0,\n //empty variable, will be used for min-height/width for fill bar\n dim,\n //percentage w/h of the handle compared to the slider bar\n handlePct = Math.floor(percent(handleDim, elemDim) * 100);\n //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar\n if (isLeftHndl) {\n //left or top percentage value to apply to the fill bar.\n css[lOrT] = `${movement}%`;\n //calculate the new min-height/width for the fill bar.\n dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;\n //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider\n //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.\n if (cb && typeof cb === 'function') { cb(); }//this is only needed for the initialization of 2 handled sliders\n } else {\n //just caching the value of the left/bottom handle's left/top property\n var handlePos = parseFloat(this.$handle[0].style[lOrT]);\n //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0\n //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself\n dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start)/((this.options.end-this.options.start)/100) : handlePos) + handlePct;\n }\n // assign the min-height/width to our css object\n css[`min-${hOrW}`] = `${dim}%`;\n }\n\n //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.\n var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime;\n\n Move(moveTime, $hndl, function() {\n // adjusting the left/top property of the handle, based on the percentage calculated above\n // if movement isNaN, that is because the slider is hidden and we cannot determine handle width,\n // fall back to next best guess.\n if (isNaN(movement)) {\n $hndl.css(lOrT, `${pctOfBar * 100}%`);\n }\n else {\n $hndl.css(lOrT, `${movement}%`);\n }\n\n if (!_this.options.doubleSided) {\n //if single-handled, a simple method to expand the fill bar\n _this.$fill.css(hOrW, `${pctOfBar * 100}%`);\n } else {\n //otherwise, use the css object we created above\n _this.$fill.css(css);\n }\n });\n\n if (this.initialized) {\n this.$element.one('finished.zf.animate', function() {\n /**\n * Fires when the handle is done moving.\n * @event Slider#moved\n */\n _this.$element.trigger('moved.zf.slider', [$hndl]);\n });\n /**\n * Fires when the value has not been change for a given time.\n * @event Slider#changed\n */\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.$element.trigger('changed.zf.slider', [$hndl]);\n }, _this.options.changedDelay);\n }\n }\n\n /**\n * Sets the initial attribute for the slider element.\n * @function\n * @private\n * @param {Number} idx - index of the current handle/input to use.\n */\n _setInitAttr(idx) {\n var initVal = (idx === 0 ? this.options.initialStart : this.options.initialEnd)\n var id = this.inputs.eq(idx).attr('id') || GetYoDigits(6, 'slider');\n this.inputs.eq(idx).attr({\n 'id': id,\n 'max': this.options.end,\n 'min': this.options.start,\n 'step': this.options.step\n });\n this.inputs.eq(idx).val(initVal);\n this.handles.eq(idx).attr({\n 'role': 'slider',\n 'aria-controls': id,\n 'aria-valuemax': this.options.end,\n 'aria-valuemin': this.options.start,\n 'aria-valuenow': initVal,\n 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',\n 'tabindex': 0\n });\n }\n\n /**\n * Sets the input and `aria-valuenow` values for the slider element.\n * @function\n * @private\n * @param {jQuery} $handle - the currently selected handle.\n * @param {Number} val - floating point of the new value.\n */\n _setValues($handle, val) {\n var idx = this.options.doubleSided ? this.handles.index($handle) : 0;\n this.inputs.eq(idx).val(val);\n $handle.attr('aria-valuenow', val);\n }\n\n /**\n * Handles events on the slider element.\n * Calculates the new location of the current handle.\n * If there are two handles and the bar was clicked, it determines which handle to move.\n * @function\n * @private\n * @param {Object} e - the `event` object passed from the listener.\n * @param {jQuery} $handle - the current handle to calculate for, if selected.\n * @param {Number} val - floating point number for the new value of the slider.\n * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.\n */\n _handleEvent(e, $handle, val) {\n var value;\n if (!val) {//click or drag events\n e.preventDefault();\n var _this = this,\n vertical = this.options.vertical,\n param = vertical ? 'height' : 'width',\n direction = vertical ? 'top' : 'left',\n eventOffset = vertical ? e.pageY : e.pageX,\n barDim = this.$element[0].getBoundingClientRect()[param],\n windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft();\n\n var elemOffset = this.$element.offset()[direction];\n\n // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...\n // best way to guess this is simulated is if clientY == pageY\n if (e.clientY === e.pageY) { eventOffset = eventOffset + windowScroll; }\n var eventFromBar = eventOffset - elemOffset;\n var barXY;\n if (eventFromBar < 0) {\n barXY = 0;\n } else if (eventFromBar > barDim) {\n barXY = barDim;\n } else {\n barXY = eventFromBar;\n }\n var offsetPct = percent(barXY, barDim);\n\n value = this._value(offsetPct);\n\n // turn everything around for RTL, yay math!\n if (Rtl() && !this.options.vertical) {value = this.options.end - value;}\n\n value = _this._adjustValue(null, value);\n\n if (!$handle) {//figure out which handle it is, pass it to the next function.\n var firstHndlPos = absPosition(this.$handle, direction, barXY, param),\n secndHndlPos = absPosition(this.$handle2, direction, barXY, param);\n $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;\n }\n\n } else {//change event on input\n value = this._adjustValue(null, val);\n }\n\n this._setHandlePos($handle, value);\n }\n\n /**\n * Adjustes value for handle in regard to step value. returns adjusted value\n * @function\n * @private\n * @param {jQuery} $handle - the selected handle.\n * @param {Number} value - value to adjust. used if $handle is falsy\n */\n _adjustValue($handle, value) {\n var val,\n step = this.options.step,\n div = parseFloat(step/2),\n left, previousVal, nextVal;\n if (!!$handle) {\n val = parseFloat($handle.attr('aria-valuenow'));\n }\n else {\n val = value;\n }\n if (val >= 0) {\n left = val % step;\n } else {\n left = step + (val % step);\n }\n previousVal = val - left;\n nextVal = previousVal + step;\n if (left === 0) {\n return val;\n }\n val = val >= previousVal + div ? nextVal : previousVal;\n return val;\n }\n\n /**\n * Adds event listeners to the slider elements.\n * @function\n * @private\n */\n _events() {\n this._eventsForHandle(this.$handle);\n if(this.handles[1]) {\n this._eventsForHandle(this.$handle2);\n }\n }\n\n\n /**\n * Adds event listeners a particular handle\n * @function\n * @private\n * @param {jQuery} $handle - the current handle to apply listeners to.\n */\n _eventsForHandle($handle) {\n var _this = this,\n curHandle;\n\n const handleChangeEvent = function(e) {\n const idx = _this.inputs.index($(this));\n _this._handleEvent(e, _this.handles.eq(idx), $(this).val());\n };\n\n // IE only triggers the change event when the input loses focus which strictly follows the HTML specification\n // listen for the enter key and trigger a change\n // @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events\n this.inputs.off('keyup.zf.slider').on('keyup.zf.slider', function (e) {\n if(e.keyCode === 13) handleChangeEvent.call(this, e);\n });\n\n this.inputs.off('change.zf.slider').on('change.zf.slider', handleChangeEvent);\n\n if (this.options.clickSelect) {\n this.$element.off('click.zf.slider').on('click.zf.slider', function(e) {\n if (_this.$element.data('dragging')) { return false; }\n\n if (!$(e.target).is('[data-slider-handle]')) {\n if (_this.options.doubleSided) {\n _this._handleEvent(e);\n } else {\n _this._handleEvent(e, _this.$handle);\n }\n }\n });\n }\n\n if (this.options.draggable) {\n this.handles.addTouch();\n\n var $body = $('body');\n $handle\n .off('mousedown.zf.slider')\n .on('mousedown.zf.slider', function(e) {\n $handle.addClass('is-dragging');\n _this.$fill.addClass('is-dragging');//\n _this.$element.data('dragging', true);\n\n curHandle = $(e.currentTarget);\n\n $body.on('mousemove.zf.slider', function(ev) {\n ev.preventDefault();\n _this._handleEvent(ev, curHandle);\n\n }).on('mouseup.zf.slider', function(ev) {\n _this._handleEvent(ev, curHandle);\n\n $handle.removeClass('is-dragging');\n _this.$fill.removeClass('is-dragging');\n _this.$element.data('dragging', false);\n\n $body.off('mousemove.zf.slider mouseup.zf.slider');\n });\n })\n // prevent events triggered by touch\n .on('selectstart.zf.slider touchmove.zf.slider', function(e) {\n e.preventDefault();\n });\n }\n\n $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e) {\n var _$handle = $(this),\n idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,\n oldValue = parseFloat($handle.attr('aria-valuenow')),\n newValue;\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Slider', {\n decrease: function() {\n newValue = oldValue - _this.options.step;\n },\n increase: function() {\n newValue = oldValue + _this.options.step;\n },\n decreaseFast: function() {\n newValue = oldValue - _this.options.step * 10;\n },\n increaseFast: function() {\n newValue = oldValue + _this.options.step * 10;\n },\n min: function() {\n newValue = _this.options.start;\n },\n max: function() {\n newValue = _this.options.end;\n },\n handled: function() { // only set handle pos when event was handled specially\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }\n });\n /*if (newValue) { // if pressed key has special function, update value\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }*/\n });\n }\n\n /**\n * Destroys the slider plugin.\n */\n _destroy() {\n this.handles.off('.zf.slider');\n this.inputs.off('.zf.slider');\n this.$element.off('.zf.slider');\n\n clearTimeout(this.timeout);\n }\n}\n\nSlider.defaults = {\n /**\n * Minimum value for the slider scale.\n * @option\n * @type {number}\n * @default 0\n */\n start: 0,\n /**\n * Maximum value for the slider scale.\n * @option\n * @type {number}\n * @default 100\n */\n end: 100,\n /**\n * Minimum value change per change event.\n * @option\n * @type {number}\n * @default 1\n */\n step: 1,\n /**\n * Value at which the handle/input *(left handle/first input)* should be set to on initialization.\n * @option\n * @type {number}\n * @default 0\n */\n initialStart: 0,\n /**\n * Value at which the right handle/second input should be set to on initialization.\n * @option\n * @type {number}\n * @default 100\n */\n initialEnd: 100,\n /**\n * Allows the input to be located outside the container and visible. Set to by the JS\n * @option\n * @type {boolean}\n * @default false\n */\n binding: false,\n /**\n * Allows the user to click/tap on the slider bar to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n clickSelect: true,\n /**\n * Set to true and use the `vertical` class to change alignment to vertical.\n * @option\n * @type {boolean}\n * @default false\n */\n vertical: false,\n /**\n * Allows the user to drag the slider handle(s) to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n draggable: true,\n /**\n * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.\n * @option\n * @type {boolean}\n * @default false\n */\n disabled: false,\n /**\n * Allows the use of two handles. Double checked by the JS. Changes some logic handling.\n * @option\n * @type {boolean}\n * @default false\n */\n doubleSided: false,\n /**\n * Potential future feature.\n */\n // steps: 100,\n /**\n * Number of decimal places the plugin should go to for floating point precision.\n * @option\n * @type {number}\n * @default 2\n */\n decimal: 2,\n /**\n * Time delay for dragged elements.\n */\n // dragDelay: 0,\n /**\n * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.\n * @option\n * @type {number}\n * @default 200\n */\n moveTime: 200,//update this if changing the transition time in the sass\n /**\n * Class applied to disabled sliders.\n * @option\n * @type {string}\n * @default 'disabled'\n */\n disabledClass: 'disabled',\n /**\n * Will invert the default layout for a vertical slider.\n * @option\n * @type {boolean}\n * @default false\n */\n invertVertical: false,\n /**\n * Milliseconds before the `changed.zf-slider` event is triggered after value change.\n * @option\n * @type {number}\n * @default 500\n */\n changedDelay: 500,\n /**\n * Basevalue for non-linear sliders\n * @option\n * @type {number}\n * @default 5\n */\n nonLinearBase: 5,\n /**\n * Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.\n * @option\n * @type {string}\n * @default 'linear'\n */\n positionValueFunction: 'linear',\n};\n\nfunction percent(frac, num) {\n return (frac / num);\n}\nfunction absPosition($handle, dir, clickPos, param) {\n return Math.abs(($handle.position()[dir] + ($handle[param]() / 2)) - clickPos);\n}\nfunction baseLog(base, value) {\n return Math.log(value)/Math.log(base)\n}\n\nexport {Slider};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * SmoothScroll module.\n * @module foundation.smoothScroll\n */\nclass SmoothScroll extends Plugin {\n /**\n * Creates a new instance of SmoothScroll.\n * @class\n * @name SmoothScroll\n * @fires SmoothScroll#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, SmoothScroll.defaults, this.$element.data(), options);\n this.className = 'SmoothScroll'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initialize the SmoothScroll plugin\n * @private\n */\n _init() {\n const id = this.$element[0].id || GetYoDigits(6, 'smooth-scroll');\n this.$element.attr({ id });\n\n this._events();\n }\n\n /**\n * Initializes events for SmoothScroll.\n * @private\n */\n _events() {\n this._linkClickListener = this._handleLinkClick.bind(this);\n this.$element.on('click.zf.smoothScroll', this._linkClickListener);\n this.$element.on('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n\n /**\n * Handle the given event to smoothly scroll to the anchor pointed by the event target.\n * @param {*} e - event\n * @function\n * @private\n */\n _handleLinkClick(e) {\n // Follow the link if it does not point to an anchor.\n if (!$(e.currentTarget).is('a[href^=\"#\"]')) return;\n\n const arrival = e.currentTarget.getAttribute('href');\n\n this._inTransition = true;\n\n SmoothScroll.scrollToLoc(arrival, this.options, () => {\n this._inTransition = false;\n });\n\n e.preventDefault();\n };\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'\n * @param {Object} options - The options to use.\n * @param {Function} callback - The callback function.\n * @static\n * @function\n */\n static scrollToLoc(loc, options = SmoothScroll.defaults, callback) {\n const $loc = $(loc);\n\n // Do nothing if target does not exist to prevent errors\n if (!$loc.length) return false;\n\n var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);\n\n $('html, body').stop(true).animate(\n { scrollTop: scrollPos },\n options.animationDuration,\n options.animationEasing,\n () => {\n if (typeof callback === 'function'){\n callback();\n }\n }\n );\n }\n\n /**\n * Destroys the SmoothScroll instance.\n * @function\n */\n _destroy() {\n this.$element.off('click.zf.smoothScroll', this._linkClickListener)\n this.$element.off('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n}\n\n/**\n * Default settings for plugin.\n */\nSmoothScroll.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {SmoothScroll}\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n /**\n * Creates a new instance of a sticky thing.\n * @class\n * @name Sticky\n * @param {jQuery} element - jQuery object to make sticky.\n * @param {Object} options - options object passed when creating the element programmatically.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n this.className = 'Sticky'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var $parent = this.$element.parent('[data-sticky-container]'),\n id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n _this = this;\n\n if($parent.length){\n this.$container = $parent;\n } else {\n this.wasWrapped = true;\n this.$element.wrap(this.options.container);\n this.$container = this.$element.parent();\n }\n this.$container.addClass(this.options.containerClass);\n\n this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n if (this.options.anchor !== '') {\n $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n }\n\n this.scrollCount = this.options.checkEvery;\n this.isStuck = false;\n this.onLoadListener = onLoad($(window), function () {\n //We calculate the container height to have correct values for anchor points offset calculation.\n _this.containerHeight = _this.$element.css(\"display\") === \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n _this.$container.css('height', _this.containerHeight);\n _this.elemHeight = _this.containerHeight;\n if (_this.options.anchor !== '') {\n _this.$anchor = $('#' + _this.options.anchor);\n } else {\n _this._parsePoints();\n }\n\n _this._setSizes(function () {\n var scroll = window.pageYOffset;\n _this._calc(false, scroll);\n //Unstick the element will ensure that proper classes are set.\n if (!_this.isStuck) {\n _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n }\n });\n _this._events(id.split('-').reverse().join('-'));\n });\n }\n\n /**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */\n _parsePoints() {\n var top = this.options.topAnchor === \"\" ? 1 : this.options.topAnchor,\n btm = this.options.btmAnchor === \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n pts = [top, btm],\n breaks = {};\n for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n var pt;\n if (typeof pts[i] === 'number') {\n pt = pts[i];\n } else {\n var place = pts[i].split(':'),\n anchor = $(`#${place[0]}`);\n\n pt = anchor.offset().top;\n if (place[1] && place[1].toLowerCase() === 'bottom') {\n pt += anchor[0].getBoundingClientRect().height;\n }\n }\n breaks[i] = pt;\n }\n\n\n this.points = breaks;\n return;\n }\n\n /**\n * Adds event handlers for the scrolling element.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _events(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n if (this.isOn) { return; }\n if (this.canStick) {\n this.isOn = true;\n $(window).off(scrollListener)\n .on(scrollListener, function() {\n if (_this.scrollCount === 0) {\n _this.scrollCount = _this.options.checkEvery;\n _this._setSizes(function() {\n _this._calc(false, window.pageYOffset);\n });\n } else {\n _this.scrollCount--;\n _this._calc(false, window.pageYOffset);\n }\n });\n }\n\n this.$element.off('resizeme.zf.trigger')\n .on('resizeme.zf.trigger', function() {\n _this._eventsHandler(id);\n });\n\n this.$element.on('mutateme.zf.trigger', function () {\n _this._eventsHandler(id);\n });\n\n if(this.$anchor) {\n this.$anchor.on('mutateme.zf.trigger', function () {\n _this._eventsHandler(id);\n });\n }\n }\n\n /**\n * Handler for events.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _eventsHandler(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n _this._setSizes(function() {\n _this._calc(false);\n if (_this.canStick) {\n if (!_this.isOn) {\n _this._events(id);\n }\n } else if (_this.isOn) {\n _this._pauseListeners(scrollListener);\n }\n });\n }\n\n /**\n * Removes event handlers for scroll and change events on anchor.\n * @fires Sticky#pause\n * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n */\n _pauseListeners(scrollListener) {\n this.isOn = false;\n $(window).off(scrollListener);\n\n /**\n * Fires when the plugin is paused due to resize event shrinking the view.\n * @event Sticky#pause\n * @private\n */\n this.$element.trigger('pause.zf.sticky');\n }\n\n /**\n * Called on every `scroll` event and on `_init`\n * fires functions based on booleans and cached values\n * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n */\n _calc(checkSizes, scroll) {\n if (checkSizes) { this._setSizes(); }\n\n if (!this.canStick) {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n return false;\n }\n\n if (!scroll) { scroll = window.pageYOffset; }\n\n if (scroll >= this.topPoint) {\n if (scroll <= this.bottomPoint) {\n if (!this.isStuck) {\n this._setSticky();\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(false);\n }\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n }\n }\n\n /**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */\n _setSticky() {\n var _this = this,\n stickTo = this.options.stickTo,\n mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n css = {};\n\n css[mrgn] = `${this.options[mrgn]}em`;\n css[stickTo] = 0;\n css[notStuckTo] = 'auto';\n this.isStuck = true;\n this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n .addClass(`is-stuck is-at-${stickTo}`)\n .css(css)\n /**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */\n .trigger(`sticky.zf.stuckto:${stickTo}`);\n this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n _this._setSizes();\n });\n }\n\n /**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */\n _removeSticky(isTop) {\n var stickTo = this.options.stickTo,\n stickToTop = stickTo === 'top',\n css = {},\n anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n topOrBottom = isTop ? 'top' : 'bottom';\n\n css[mrgn] = 0;\n\n css.bottom = 'auto';\n if(isTop) {\n css.top = 0;\n } else {\n css.top = anchorPt;\n }\n\n this.isStuck = false;\n this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n .addClass(`is-anchored is-at-${topOrBottom}`)\n .css(css)\n /**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */\n .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n }\n\n /**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */\n _setSizes(cb) {\n this.canStick = MediaQuery.is(this.options.stickyOn);\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n var newElemWidth = this.$container[0].getBoundingClientRect().width,\n comp = window.getComputedStyle(this.$container[0]),\n pdngl = parseInt(comp['padding-left'], 10),\n pdngr = parseInt(comp['padding-right'], 10);\n\n if (this.$anchor && this.$anchor.length) {\n this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n } else {\n this._parsePoints();\n }\n\n this.$element.css({\n 'max-width': `${newElemWidth - pdngl - pdngr}px`\n });\n\n // Recalculate the height only if it is \"dynamic\"\n if (this.options.dynamicHeight || !this.containerHeight) {\n // Get the sticked element height and apply it to the container to \"hold the place\"\n var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n newContainerHeight = this.$element.css(\"display\") === \"none\" ? 0 : newContainerHeight;\n this.$container.css('height', newContainerHeight);\n this.containerHeight = newContainerHeight;\n }\n this.elemHeight = this.containerHeight;\n\n if (!this.isStuck) {\n if (this.$element.hasClass('is-at-bottom')) {\n var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n this.$element.css('top', anchorPt);\n }\n }\n\n this._setBreakPoints(this.containerHeight, function() {\n if (cb && typeof cb === 'function') { cb(); }\n });\n }\n\n /**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */\n _setBreakPoints(elemHeight, cb) {\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n else { return false; }\n }\n var mTop = emCalc(this.options.marginTop),\n mBtm = emCalc(this.options.marginBottom),\n topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n // topPoint = this.$anchor.offset().top || this.points[0],\n // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n winHeight = window.innerHeight;\n\n if (this.options.stickTo === 'top') {\n topPoint -= mTop;\n bottomPoint -= (elemHeight + mTop);\n } else if (this.options.stickTo === 'bottom') {\n topPoint -= (winHeight - (elemHeight + mBtm));\n bottomPoint -= (winHeight - mBtm);\n } else {\n //this would be the stickTo: both option... tricky\n }\n\n this.topPoint = topPoint;\n this.bottomPoint = bottomPoint;\n\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n /**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */\n _destroy() {\n this._removeSticky(true);\n\n this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n .css({\n height: '',\n top: '',\n bottom: '',\n 'max-width': ''\n })\n .off('resizeme.zf.trigger')\n .off('mutateme.zf.trigger');\n if (this.$anchor && this.$anchor.length) {\n this.$anchor.off('change.zf.sticky');\n }\n if (this.scrollListener) $(window).off(this.scrollListener)\n if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n if (this.wasWrapped) {\n this.$element.unwrap();\n } else {\n this.$container.removeClass(this.options.containerClass)\n .css({\n height: ''\n });\n }\n }\n}\n\nSticky.defaults = {\n /**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '<div data-sticky-container></div>'\n */\n container: '
    ',\n /**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */\n stickTo: 'top',\n /**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */\n anchor: '',\n /**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */\n topAnchor: '',\n /**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */\n btmAnchor: '',\n /**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginTop: 1,\n /**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginBottom: 1,\n /**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */\n stickyOn: 'medium',\n /**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */\n stickyClass: 'sticky',\n /**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */\n containerClass: 'sticky-container',\n /**\n * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n * @option\n * @type {boolean}\n * @default true\n */\n dynamicHeight: true,\n /**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */\n checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\n/**\n * Tabs module.\n * @module foundation.tabs\n * @requires foundation.util.keyboard\n * @requires foundation.util.imageLoader if tabs contain images\n */\n\nclass Tabs extends Plugin {\n /**\n * Creates a new instance of tabs.\n * @class\n * @name Tabs\n * @fires Tabs#init\n * @param {jQuery} element - jQuery object to make into tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);\n this.className = 'Tabs'; // ie9 back compat\n\n this._init();\n Keyboard.register('Tabs', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'previous',\n 'ARROW_DOWN': 'next',\n 'ARROW_LEFT': 'previous'\n // 'TAB': 'next',\n // 'SHIFT_TAB': 'previous'\n });\n }\n\n /**\n * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.\n * @private\n */\n _init() {\n var _this = this;\n this._isInitializing = true;\n\n this.$element.attr({'role': 'tablist'});\n this.$tabTitles = this.$element.find(`.${this.options.linkClass}`);\n this.$tabContent = $(`[data-tabs-content=\"${this.$element[0].id}\"]`);\n\n this.$tabTitles.each(function(){\n var $elem = $(this),\n $link = $elem.find('a'),\n isActive = $elem.hasClass(`${_this.options.linkActiveClass}`),\n hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),\n linkId = $link[0].id ? $link[0].id : `${hash}-label`,\n $tabContent = $(`#${hash}`);\n\n $elem.attr({'role': 'presentation'});\n\n $link.attr({\n 'role': 'tab',\n 'aria-controls': hash,\n 'aria-selected': isActive,\n 'id': linkId,\n 'tabindex': isActive ? '0' : '-1'\n });\n\n $tabContent.attr({\n 'role': 'tabpanel',\n 'aria-labelledby': linkId\n });\n\n // Save up the initial hash to return to it later when going back in history\n if (isActive) {\n _this._initialAnchor = `#${hash}`;\n }\n\n if(!isActive) {\n $tabContent.attr('aria-hidden', 'true');\n }\n\n if(isActive && _this.options.autoFocus){\n _this.onLoadListener = onLoad($(window), function() {\n $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, () => {\n $link.focus();\n });\n });\n }\n });\n\n if(this.options.matchHeight) {\n var $images = this.$tabContent.find('img');\n\n if ($images.length) {\n onImagesLoaded($images, this._setHeight.bind(this));\n } else {\n this._setHeight();\n }\n }\n\n // Current context-bound function to open tabs on page load or history hashchange\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;\n var $anchor = anchorNoHash && $(`#${anchorNoHash}`);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"],[data-tabs-target=\"${anchorNoHash}\"]`).first();\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, select it\n if ($anchor && $anchor.length && $link && $link.length) {\n this.selectTab($anchor, true);\n }\n // Otherwise, collapse everything\n else {\n this._collapse();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset}, this.options.deepLinkSmudgeDelay);\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Tabs#deeplink\n */\n this.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the tabs.\n * @private\n */\n _events() {\n this._addKeyHandler();\n this._addClickHandler();\n this._setHeightMqHandler = null;\n\n if (this.options.matchHeight) {\n this._setHeightMqHandler = this._setHeight.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n\n if(this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Adds click handlers for items within the tabs.\n * @private\n */\n _addClickHandler() {\n var _this = this;\n\n this.$element\n .off('click.zf.tabs')\n .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){\n e.preventDefault();\n _this._handleTabChange($(this));\n });\n }\n\n /**\n * Adds keyboard event handlers for items within the tabs.\n * @private\n */\n _addKeyHandler() {\n var _this = this;\n\n this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){\n if (e.which === 9) return;\n\n\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n if (_this.options.wrapOnKeys) {\n $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);\n $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);\n } else {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n }\n return;\n }\n });\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Tabs', {\n open: function() {\n $element.find('[role=\"tab\"]').focus();\n _this._handleTabChange($element);\n },\n previous: function() {\n $prevElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($prevElement);\n },\n next: function() {\n $nextElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($nextElement);\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n * @param {jQuery} $target - Tab to open.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @fires Tabs#change\n * @function\n */\n _handleTabChange($target, historyHandled) {\n\n // With `activeCollapse`, if the target is the active Tab, collapse it.\n if ($target.hasClass(`${this.options.linkActiveClass}`)) {\n if(this.options.activeCollapse) {\n this._collapse();\n }\n return;\n }\n\n var $oldTab = this.$element.\n find(`.${this.options.linkClass}.${this.options.linkActiveClass}`),\n $tabLink = $target.find('[role=\"tab\"]'),\n target = $tabLink.attr('data-tabs-target'),\n anchor = target && target.length ? `#${target}` : $tabLink[0].hash,\n $targetContent = this.$tabContent.find(anchor);\n\n //close old tab\n this._collapseTab($oldTab);\n\n //open new tab\n this._openTab($target);\n\n //either replace or update browser history\n if (this.options.deepLink && !historyHandled) {\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n\n /**\n * Fires when the plugin has successfully changed tabs.\n * @event Tabs#change\n */\n this.$element.trigger('change.zf.tabs', [$target, $targetContent]);\n\n //fire to children a mutation event\n $targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to open.\n * @function\n */\n _openTab($target) {\n var $tabLink = $target.find('[role=\"tab\"]'),\n hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),\n $targetContent = this.$tabContent.find(`#${hash}`);\n\n $target.addClass(`${this.options.linkActiveClass}`);\n\n $tabLink.attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n });\n\n $targetContent\n .addClass(`${this.options.panelActiveClass}`).removeAttr('aria-hidden');\n }\n\n /**\n * Collapses `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to collapse.\n * @function\n */\n _collapseTab($target) {\n var $targetAnchor = $target\n .removeClass(`${this.options.linkActiveClass}`)\n .find('[role=\"tab\"]')\n .attr({\n 'aria-selected': 'false',\n 'tabindex': -1\n });\n\n $(`#${$targetAnchor.attr('aria-controls')}`)\n .removeClass(`${this.options.panelActiveClass}`)\n .attr({ 'aria-hidden': 'true' })\n }\n\n /**\n * Collapses the active Tab.\n * @fires Tabs#collapse\n * @function\n */\n _collapse() {\n var $activeTab = this.$element.find(`.${this.options.linkClass}.${this.options.linkActiveClass}`);\n\n if ($activeTab.length) {\n this._collapseTab($activeTab);\n\n /**\n * Fires when the plugin has successfully collapsed tabs.\n * @event Tabs#collapse\n */\n this.$element.trigger('collapse.zf.tabs', [$activeTab]);\n }\n }\n\n /**\n * Public method for selecting a content pane to display.\n * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @function\n */\n selectTab(elem, historyHandled) {\n var idStr, hashIdStr;\n\n if (typeof elem === 'object') {\n idStr = elem[0].id;\n } else {\n idStr = elem;\n }\n\n if (idStr.indexOf('#') < 0) {\n hashIdStr = `#${idStr}`;\n } else {\n hashIdStr = idStr;\n idStr = idStr.slice(1);\n }\n\n var $target = this.$tabTitles.has(`[href$=\"${hashIdStr}\"],[data-tabs-target=\"${idStr}\"]`).first();\n\n this._handleTabChange($target, historyHandled);\n };\n\n /**\n * Sets the height of each panel to the height of the tallest panel.\n * If enabled in options, gets called on media query change.\n * If loading content via external source, can be called directly or with _reflow.\n * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n * @function\n * @private\n */\n _setHeight() {\n var max = 0,\n _this = this; // Lock down the `this` value for the root tabs object\n\n if (!this.$tabContent) {\n return;\n }\n\n this.$tabContent\n .find(`.${this.options.panelClass}`)\n .css('min-height', '')\n .each(function() {\n\n var panel = $(this),\n isActive = panel.hasClass(`${_this.options.panelActiveClass}`); // get the options from the parent instead of trying to get them from the child\n\n if (!isActive) {\n panel.css({'visibility': 'hidden', 'display': 'block'});\n }\n\n var temp = this.getBoundingClientRect().height;\n\n if (!isActive) {\n panel.css({\n 'visibility': '',\n 'display': ''\n });\n }\n\n max = temp > max ? temp : max;\n })\n .css('min-height', `${max}px`);\n }\n\n /**\n * Destroys an instance of tabs.\n * @fires Tabs#destroyed\n */\n _destroy() {\n this.$element\n .find(`.${this.options.linkClass}`)\n .off('.zf.tabs').hide().end()\n .find(`.${this.options.panelClass}`)\n .hide();\n\n if (this.options.matchHeight) {\n if (this._setHeightMqHandler != null) {\n $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n }\n\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n if (this.onLoadListener) {\n $(window).off(this.onLoadListener);\n }\n }\n}\n\nTabs.defaults = {\n /**\n * Link the location hash to the active pane.\n * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n\n /**\n * If `deepLinkSmudge` is enabled, animation offset from the top for the deep link adjustment\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n\n /**\n * If `deepLink` is enabled, update the browser history with the open tab\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n\n /**\n * Allows the window to scroll to content of active pane on load.\n * Not recommended if more than one tab panel per page.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n\n /**\n * Allows keyboard input to 'wrap' around the tab links.\n * @option\n * @type {boolean}\n * @default true\n */\n wrapOnKeys: true,\n\n /**\n * Allows the tab content panes to match heights if set to true.\n * @option\n * @type {boolean}\n * @default false\n */\n matchHeight: false,\n\n /**\n * Allows active tabs to collapse when clicked.\n * @option\n * @type {boolean}\n * @default false\n */\n activeCollapse: false,\n\n /**\n * Class applied to `li`'s in tab link list.\n * @option\n * @type {string}\n * @default 'tabs-title'\n */\n linkClass: 'tabs-title',\n\n /**\n * Class applied to the active `li` in tab link list.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n linkActiveClass: 'is-active',\n\n /**\n * Class applied to the content containers.\n * @option\n * @type {string}\n * @default 'tabs-panel'\n */\n panelClass: 'tabs-panel',\n\n /**\n * Class applied to the active content container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n panelActiveClass: 'is-active'\n};\n\nexport {Tabs};\n","import $ from 'jquery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\nimport { RegExpEscape } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Toggler module.\n * @module foundation.toggler\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n */\n\nclass Toggler extends Plugin {\n /**\n * Creates a new instance of Toggler.\n * @class\n * @name Toggler\n * @fires Toggler#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Toggler.defaults, element.data(), options);\n this.className = '';\n this.className = 'Toggler'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.\n * @function\n * @private\n */\n _init() {\n // Collect triggers to set ARIA attributes to\n var id = this.$element[0].id,\n $triggers = $(`[data-open~=\"${id}\"], [data-close~=\"${id}\"], [data-toggle~=\"${id}\"]`);\n\n var input;\n // Parse animation classes if they were set\n if (this.options.animate) {\n input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n\n // - aria-expanded: according to the element visibility.\n $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n }\n // Otherwise, parse toggle class\n else {\n input = this.options.toggler;\n if (typeof input !== 'string' || !input.length) {\n throw new Error(`The 'toggler' option containing the target class is required, got \"${input}\"`);\n }\n // Allow for a . at the beginning of the string\n this.className = input[0] === '.' ? input.slice(1) : input;\n\n // - aria-expanded: according to the elements class set.\n $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n }\n\n // - aria-controls: adding the element id to it if not already in it.\n $triggers.each((index, trigger) => {\n const $trigger = $(trigger);\n const controls = $trigger.attr('aria-controls') || '';\n\n const containsId = new RegExp(`\\\\b${RegExpEscape(id)}\\\\b`).test(controls);\n if (!containsId) $trigger.attr('aria-controls', controls ? `${controls} ${id}` : id);\n });\n }\n\n /**\n * Initializes events for the toggle trigger.\n * @function\n * @private\n */\n _events() {\n this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n }\n\n /**\n * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was \"on\" or \"off\".\n * @function\n * @fires Toggler#on\n * @fires Toggler#off\n */\n toggle() {\n this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n }\n\n _toggleClass() {\n this.$element.toggleClass(this.className);\n\n var isOn = this.$element.hasClass(this.className);\n if (isOn) {\n /**\n * Fires if the target element has the class after a toggle.\n * @event Toggler#on\n */\n this.$element.trigger('on.zf.toggler');\n }\n else {\n /**\n * Fires if the target element does not have the class after a toggle.\n * @event Toggler#off\n */\n this.$element.trigger('off.zf.toggler');\n }\n\n this._updateARIA(isOn);\n this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n }\n\n _toggleAnimate() {\n var _this = this;\n\n if (this.$element.is(':hidden')) {\n Motion.animateIn(this.$element, this.animationIn, function() {\n _this._updateARIA(true);\n this.trigger('on.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$element, this.animationOut, function() {\n _this._updateARIA(false);\n this.trigger('off.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n }\n\n _updateARIA(isOn) {\n var id = this.$element[0].id;\n $(`[data-open=\"${id}\"], [data-close=\"${id}\"], [data-toggle=\"${id}\"]`)\n .attr({\n 'aria-expanded': isOn ? true : false\n });\n }\n\n /**\n * Destroys the instance of Toggler on the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.toggler');\n }\n}\n\nToggler.defaults = {\n /**\n * Class of the element to toggle. It can be provided with or without \".\"\n * @option\n * @type {string}\n */\n toggler: undefined,\n /**\n * Tells the plugin if the element should animated when toggled.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport {Toggler};\n","import $ from 'jquery';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\nimport { Positionable } from './foundation.positionable';\n\n/**\n * Tooltip module.\n * @module foundation.tooltip\n * @requires foundation.util.box\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass Tooltip extends Positionable {\n /**\n * Creates a new instance of a Tooltip.\n * @class\n * @name Tooltip\n * @fires Tooltip#init\n * @param {jQuery} element - jQuery object to attach a tooltip to.\n * @param {Object} options - object to extend the default configuration.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options);\n this.className = 'Tooltip'; // ie9 back compat\n\n this.isActive = false;\n this.isClick = false;\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.\n * @private\n */\n _init() {\n MediaQuery._init();\n var elemId = this.$element.attr('aria-describedby') || GetYoDigits(6, 'tooltip');\n\n this.options.tipText = this.options.tipText || this.$element.attr('title');\n this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);\n\n if (this.options.allowHtml) {\n this.template.appendTo(document.body)\n .html(this.options.tipText)\n .hide();\n } else {\n this.template.appendTo(document.body)\n .text(this.options.tipText)\n .hide();\n }\n\n this.$element.attr({\n 'title': '',\n 'aria-describedby': elemId,\n 'data-yeti-box': elemId,\n 'data-toggle': elemId,\n 'data-resize': elemId\n }).addClass(this.options.triggerClass);\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var elementClassName = this.$element[0].className;\n if (this.$element[0] instanceof SVGElement) {\n elementClassName = elementClassName.baseVal;\n }\n var position = elementClassName.match(/\\b(top|left|right|bottom)\\b/g);\n return position ? position[0] : 'top';\n }\n\n _getDefaultAlignment() {\n return 'center';\n }\n\n _getHOffset() {\n if(this.position === 'left' || this.position === 'right') {\n return this.options.hOffset + this.options.tooltipWidth;\n } else {\n return this.options.hOffset\n }\n }\n\n _getVOffset() {\n if(this.position === 'top' || this.position === 'bottom') {\n return this.options.vOffset + this.options.tooltipHeight;\n } else {\n return this.options.vOffset\n }\n }\n\n /**\n * builds the tooltip element, adds attributes, and returns the template.\n * @private\n */\n _buildTemplate(id) {\n var templateClasses = (`${this.options.tooltipClass} ${this.options.templateClasses}`).trim();\n var $template = $('
    ').addClass(templateClasses).attr({\n 'role': 'tooltip',\n 'aria-hidden': true,\n 'data-is-active': false,\n 'data-is-focus': false,\n 'id': id\n });\n return $template;\n }\n\n /**\n * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.\n * if the tooltip is larger than the screen width, default to full width - any user selected margin\n * @private\n */\n _setPosition() {\n super._setPosition(this.$element, this.template);\n }\n\n /**\n * reveals the tooltip, and fires an event to close any other open tooltips on the page\n * @fires Tooltip#closeme\n * @fires Tooltip#show\n * @function\n */\n show() {\n if (this.options.showOn !== 'all' && !MediaQuery.is(this.options.showOn)) {\n // console.error('The screen is too small to display this tooltip');\n return false;\n }\n\n var _this = this;\n this.template.css('visibility', 'hidden').show();\n this._setPosition();\n this.template.removeClass('top bottom left right').addClass(this.position)\n this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-' + this.alignment);\n\n /**\n * Fires to close all other open tooltips on the page\n * @event Closeme#tooltip\n */\n this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));\n\n\n this.template.attr({\n 'data-is-active': true,\n 'aria-hidden': false\n });\n _this.isActive = true;\n this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function() {\n //maybe do stuff?\n });\n /**\n * Fires when the tooltip is shown\n * @event Tooltip#show\n */\n this.$element.trigger('show.zf.tooltip');\n }\n\n /**\n * Hides the current tooltip, and resets the positioning class if it was changed due to collision\n * @fires Tooltip#hide\n * @function\n */\n hide() {\n var _this = this;\n this.template.stop().attr({\n 'aria-hidden': true,\n 'data-is-active': false\n }).fadeOut(this.options.fadeOutDuration, function() {\n _this.isActive = false;\n _this.isClick = false;\n });\n /**\n * fires when the tooltip is hidden\n * @event Tooltip#hide\n */\n this.$element.trigger('hide.zf.tooltip');\n }\n\n /**\n * adds event listeners for the tooltip and its anchor\n * TODO combine some of the listeners like focus and mouseenter, etc.\n * @private\n */\n _events() {\n const _this = this;\n const hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n var isFocus = false;\n\n // `disableForTouch: Fully disable the tooltip on touch devices\n if (hasTouch && this.options.disableForTouch) return;\n\n if (!this.options.disableHover) {\n this.$element\n .on('mouseenter.zf.tooltip', function() {\n if (!_this.isActive) {\n _this.timeout = setTimeout(function() {\n _this.show();\n }, _this.options.hoverDelay);\n }\n })\n .on('mouseleave.zf.tooltip', ignoreMousedisappear(function() {\n clearTimeout(_this.timeout);\n if (!isFocus || (_this.isClick && !_this.options.clickOpen)) {\n _this.hide();\n }\n }));\n }\n\n if (hasTouch) {\n this.$element\n .on('tap.zf.tooltip touchend.zf.tooltip', function () {\n _this.isActive ? _this.hide() : _this.show();\n });\n }\n\n if (this.options.clickOpen) {\n this.$element.on('mousedown.zf.tooltip', function() {\n if (_this.isClick) {\n //_this.hide();\n // _this.isClick = false;\n } else {\n _this.isClick = true;\n if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {\n _this.show();\n }\n }\n });\n } else {\n this.$element.on('mousedown.zf.tooltip', function() {\n _this.isClick = true;\n });\n }\n\n this.$element.on({\n // 'toggle.zf.trigger': this.toggle.bind(this),\n // 'close.zf.trigger': this.hide.bind(this)\n 'close.zf.trigger': this.hide.bind(this)\n });\n\n this.$element\n .on('focus.zf.tooltip', function() {\n isFocus = true;\n if (_this.isClick) {\n // If we're not showing open on clicks, we need to pretend a click-launched focus isn't\n // a real focus, otherwise on hover and come back we get bad behavior\n if(!_this.options.clickOpen) { isFocus = false; }\n return false;\n } else {\n _this.show();\n }\n })\n\n .on('focusout.zf.tooltip', function() {\n isFocus = false;\n _this.isClick = false;\n _this.hide();\n })\n\n .on('resizeme.zf.trigger', function() {\n if (_this.isActive) {\n _this._setPosition();\n }\n });\n }\n\n /**\n * adds a toggle method, in addition to the static show() & hide() functions\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Destroys an instance of tooltip, removes template element from the view.\n * @function\n */\n _destroy() {\n this.$element.attr('title', this.template.text())\n .off('.zf.trigger .zf.tooltip')\n .removeClass(this.options.triggerClass)\n .removeClass('top right left bottom')\n .removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');\n\n this.template.remove();\n }\n}\n\nTooltip.defaults = {\n /**\n * Time, in ms, before a tooltip should open on hover.\n * @option\n * @type {number}\n * @default 200\n */\n hoverDelay: 200,\n /**\n * Time, in ms, a tooltip should take to fade into view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeInDuration: 150,\n /**\n * Time, in ms, a tooltip should take to fade out of view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeOutDuration: 150,\n /**\n * Disables hover events from opening the tooltip if set to true\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disable the tooltip for touch devices.\n * This can be useful to make elements with a tooltip on it trigger their\n * action on the first tap instead of displaying the tooltip.\n * @option\n * @type {booelan}\n * @default false\n */\n disableForTouch: false,\n /**\n * Optional addtional classes to apply to the tooltip template on init.\n * @option\n * @type {string}\n * @default ''\n */\n templateClasses: '',\n /**\n * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.\n * @option\n * @type {string}\n * @default 'tooltip'\n */\n tooltipClass: 'tooltip',\n /**\n * Class applied to the tooltip anchor element.\n * @option\n * @type {string}\n * @default 'has-tip'\n */\n triggerClass: 'has-tip',\n /**\n * Minimum breakpoint size at which to open the tooltip.\n * @option\n * @type {string}\n * @default 'small'\n */\n showOn: 'small',\n /**\n * Custom template to be used to generate markup for tooltip.\n * @option\n * @type {string}\n * @default ''\n */\n template: '',\n /**\n * Text displayed in the tooltip template on open.\n * @option\n * @type {string}\n * @default ''\n */\n tipText: '',\n touchCloseText: 'Tap to close.',\n /**\n * Allows the tooltip to remain open if triggered with a click or touch event.\n * @option\n * @type {boolean}\n * @default true\n */\n clickOpen: true,\n /**\n * Position of tooltip. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, tooltip will first try to\n * position as defined by data-position and data-alignment, but reposition if\n * it would cause an overflow. @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * Less common for tooltips.\n * @option\n * @type {boolean}\n * @default false\n */\n allowBottomOverlap: false,\n /**\n * Distance, in pixels, the template should push away from the anchor on the Y axis.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Distance, in pixels, the template should push away from the anchor on the X axis\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a vertical tooltip\n * @option\n * @type {number}\n * @default 14\n */\n tooltipHeight: 14,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip\n * @option\n * @type {number}\n * @default 12\n */\n tooltipWidth: 12,\n /**\n * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,\n * allowing HTML may open yourself up to XSS attacks.\n * @option\n * @type {boolean}\n * @default false\n */\n allowHtml: false\n};\n\n/**\n * TODO utilize resize event trigger\n */\n\nexport {Tooltip};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin }from './foundation.core.plugin';\n\nimport { Accordion } from './foundation.accordion';\nimport { Tabs } from './foundation.tabs';\n\n// The plugin matches the plugin classes with these plugin instances.\nvar MenuPlugins = {\n tabs: {\n cssClass: 'tabs',\n plugin: Tabs,\n open: (plugin, target) => plugin.selectTab(target),\n close: null /* not supported */,\n toggle: null /* not supported */,\n },\n accordion: {\n cssClass: 'accordion',\n plugin: Accordion,\n open: (plugin, target) => plugin.down($(target)),\n close: (plugin, target) => plugin.up($(target)),\n toggle: (plugin, target) => plugin.toggle($(target)),\n }\n};\n\n\n/**\n * ResponsiveAccordionTabs module.\n * @module foundation.responsiveAccordionTabs\n * @requires foundation.util.motion\n * @requires foundation.accordion\n * @requires foundation.tabs\n */\n\nclass ResponsiveAccordionTabs extends Plugin{\n constructor(element, options) {\n super(element, options);\n return this.options.reflow && this.storezfData || this;\n }\n\n /**\n * Creates a new instance of a responsive accordion tabs.\n * @class\n * @name ResponsiveAccordionTabs\n * @fires ResponsiveAccordionTabs#init\n * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.$element.data('zfPluginBase', this);\n this.options = $.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);\n\n this.rules = this.$element.data('responsive-accordion-tabs');\n this.currentMq = null;\n this.currentRule = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveAccordionTabs'; // ie9 back compat\n if (!this.$element.attr('id')) {\n this.$element.attr('id',GetYoDigits(6, 'responsiveaccordiontabs'));\n }\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n this._getAllOptions();\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n }\n\n _getAllOptions() {\n //get all defaults and options\n var _this = this;\n _this.allOptions = {};\n for (var key in MenuPlugins) {\n if (MenuPlugins.hasOwnProperty(key)) {\n var obj = MenuPlugins[key];\n try {\n var dummyPlugin = $('
      ');\n var tmpPlugin = new obj.plugin(dummyPlugin,_this.options);\n for (var keyKey in tmpPlugin.options) {\n if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {\n var objObj = tmpPlugin.options[keyKey];\n _this.allOptions[keyKey] = objObj;\n }\n }\n tmpPlugin.destroy();\n }\n catch(e) {\n console.warn(`Warning: Problems getting Accordion/Tab options: ${e}`);\n }\n }\n }\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);\n $(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) {\n //don't know why but on nested elements data zfPlugin get's lost\n if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin',this.storezfData);\n this.currentPlugin.destroy();\n }\n this._handleMarkup(this.rules[matchedMq].cssClass);\n this.currentRule = this.rules[matchedMq];\n this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);\n this.storezfData = this.currentPlugin.$element.data('zfPlugin');\n\n }\n\n _handleMarkup(toSet){\n var _this = this, fromString = 'accordion';\n var $panels = $('[data-tabs-content='+this.$element.attr('id')+']');\n if ($panels.length) fromString = 'tabs';\n if (fromString === toSet) {\n return;\n }\n\n var tabsTitle = _this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';\n var tabsPanel = _this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';\n\n this.$element.removeAttr('role');\n var $liHeads = this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');\n var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');\n\n if (fromString === 'tabs') {\n $panels = $panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');\n $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');\n } else {\n $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');\n }\n\n $panels.css({display:'',visibility:''});\n $liHeads.css({display:'',visibility:''});\n if (toSet === 'accordion') {\n $panels.each(function(key,value){\n $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});\n $('[data-tabs-content='+_this.$element.attr('id')+']').after('
      ').detach();\n $liHeads.addClass('accordion-item').attr('data-accordion-item','');\n $liHeadsA.addClass('accordion-title');\n });\n } else if (toSet === 'tabs') {\n var $tabsContent = $('[data-tabs-content='+_this.$element.attr('id')+']');\n var $placeholder = $('#tabs-placeholder-'+_this.$element.attr('id'));\n if ($placeholder.length) {\n $tabsContent = $('
      ').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));\n $placeholder.remove();\n } else {\n $tabsContent = $('
      ').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));\n }\n $panels.each(function(key,value){\n var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);\n var hash = $liHeadsA.get(key).hash.slice(1);\n var id = $(value).attr('id') || GetYoDigits(6, 'accordion');\n if (hash !== id) {\n if (hash !== '') {\n $(value).attr('id',hash);\n } else {\n hash = id;\n $(value).attr('id',hash);\n $($liHeadsA.get(key)).attr('href',$($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);\n }\n }\n var isActive = $($liHeads.get(key)).hasClass('is-active');\n if (isActive) {\n tempValue.addClass('is-active');\n }\n });\n $liHeads.addClass(tabsTitle);\n };\n }\n\n /**\n * Opens the plugin pane defined by `target`.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n * @see Accordion.down\n * @see Tabs.selectTab\n * @function\n */\n open() {\n if (this.currentRule && typeof this.currentRule.open === 'function') {\n return this.currentRule.open(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n * @see Accordion.up\n * @function\n */\n close() {\n if (this.currentRule && typeof this.currentRule.close === 'function') {\n return this.currentRule.close(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n * @see Accordion.toggle\n * @function\n */\n toggle() {\n if (this.currentRule && typeof this.currentRule.toggle === 'function') {\n return this.currentRule.toggle(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n if (this.currentPlugin) this.currentPlugin.destroy();\n $(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n}\n\nResponsiveAccordionTabs.defaults = {};\n\nexport {ResponsiveAccordionTabs};\n","// Import jQuery and bind it.\nimport $ from \"jquery\";\nwindow.$ = $;\n\n// Import WhatInput.\nimport whatInput from \"what-input\";\n\n// Import Foundation and utilities. DO NOT REMOVE.\nimport { Foundation } from \"foundation-sites/js/foundation.core\";\nFoundation.addToJquery($);\nimport { MediaQuery } from \"foundation-sites/js/foundation.util.mediaQuery\";\nFoundation.MediaQuery = MediaQuery;\n\n// Uncomment 'import' AND 'Foundation.plugin' for each plugin you do not want to use.\n// import { Abide } from 'foundation-sites/js/foundation.abide'\n// Foundation.plugin(Abide, 'Abide')\n\nimport { Accordion } from \"foundation-sites/js/foundation.accordion\";\nFoundation.plugin(Accordion, \"Accordion\");\n\nimport { AccordionMenu } from \"foundation-sites/js/foundation.accordionMenu\";\nFoundation.plugin(AccordionMenu, \"AccordionMenu\");\n\n// import { Drilldown } from 'foundation-sites/js/foundation.drilldown'\n// Foundation.plugin(Drilldown, 'Drilldown')\n\nimport { Dropdown } from \"foundation-sites/js/foundation.dropdown\";\nFoundation.plugin(Dropdown, \"Dropdown\");\n\nimport { DropdownMenu } from \"foundation-sites/js/foundation.dropdownMenu\";\nFoundation.plugin(DropdownMenu, \"DropdownMenu\");\n\nimport { Equalizer } from \"foundation-sites/js/foundation.equalizer\";\nFoundation.plugin(Equalizer, \"Equalizer\");\n\n// import { Interchange } from 'foundation-sites/js/foundation.interchange'\n// Foundation.plugin(Interchange, 'Interchange')\n\n// import { Magellan } from 'foundation-sites/js/foundation.magellan'\n// Foundation.plugin(Magellan, 'Magellan')\n\n// import { OffCanvas } from 'foundation-sites/js/foundation.offcanvas'\n// Foundation.plugin(OffCanvas, 'OffCanvas')\n\n// import { Orbit } from 'foundation-sites/js/foundation.orbit'\n// Foundation.plugin(Orbit, 'Orbit')\n\nimport { ResponsiveMenu } from \"foundation-sites/js/foundation.responsiveMenu\";\nFoundation.plugin(ResponsiveMenu, \"ResponsiveMenu\");\n\nimport { ResponsiveToggle } from \"foundation-sites/js/foundation.responsiveToggle\";\nFoundation.plugin(ResponsiveToggle, \"ResponsiveToggle\");\n\nimport { Reveal } from \"foundation-sites/js/foundation.reveal\";\nFoundation.plugin(Reveal, \"Reveal\");\n\nimport { Slider } from \"foundation-sites/js/foundation.slider\";\nFoundation.plugin(Slider, \"Slider\");\n\nimport { SmoothScroll } from \"foundation-sites/js/foundation.smoothScroll\";\nFoundation.plugin(SmoothScroll, \"SmoothScroll\");\n\nimport { Sticky } from \"foundation-sites/js/foundation.sticky\";\nFoundation.plugin(Sticky, \"Sticky\");\n\nimport { Tabs } from \"foundation-sites/js/foundation.tabs\";\nFoundation.plugin(Tabs, \"Tabs\");\n\nimport { Toggler } from \"foundation-sites/js/foundation.toggler\";\nFoundation.plugin(Toggler, \"Toggler\");\n\nimport { Tooltip } from \"foundation-sites/js/foundation.tooltip\";\nFoundation.plugin(Tooltip, \"Tooltip\");\n\nimport { ResponsiveAccordionTabs } from \"foundation-sites/js/foundation.responsiveAccordionTabs\";\nFoundation.plugin(ResponsiveAccordionTabs, \"ResponsiveAccordionTabs\");\n\n// Init.\nwindow.addEventListener(\n \"load\",\n () => {\n $(document).foundation();\n },\n { passive: true }\n);\n\n$(document).on(\"closed.zf.reveal\", function () {\n Foundation.reInit(\"sticky\");\n});\n","// Masonry layout.\nimport Macy from \"macy\";\n\ndocument.addEventListener(\n \"DOMContentLoaded\",\n () => {\n if (typeof masonryGrids !== \"undefined\") {\n // Loop through each registered masonry grids and initialize them.\n masonryGrids = masonryGrids.map(({ container, id }) => {\n const instance = Macy({\n container,\n columns: 1,\n trueOrder: true,\n waitForImages: true,\n mobileFirst: true,\n breakAt: {\n 640: 2,\n 1024: 3,\n },\n });\n instance.recalculate();\n\n // Return instance for usage with AJAX content.\n return {\n id,\n container,\n instance,\n };\n });\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\nimport objectFitImages from \"object-fit-images\";\n\n$(function () {\n // Adds support for 'object-fit: cover;'.\n objectFitImages();\n});\n","var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var i,n=1,s=arguments.length;ns.endVal;s.frameVal=n?s.endVal:s.frameVal,s.frameVal=Number(s.frameVal.toFixed(s.options.decimalPlaces)),s.printValue(s.frameVal),i1?s.options.decimal+o[1]:\"\",s.options.useGrouping){e=\"\";for(var l=0,h=n.length;lwindow.scrollY&&t.paused?(t.paused=!1,setTimeout(function(){return t.start()},t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):window.scrollY>s&&!t.paused&&t.reset()}},t.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);\"INPUT\"===this.el.tagName?this.el.value=i:\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();export{CountUp};","import { CountUp } from \"countup.js\";\n\nconst event = new Event(\"wpsoup.counter.completed\", {\n bubbles: true,\n cancelable: true,\n composed: false,\n});\n\nfunction registerEventListeners() {\n const elements = document.querySelectorAll(\".counter\");\n const intersectionSupported = intersectionListenerSupported();\n\n if (intersectionSupported) {\n const intersectionObserver = new IntersectionObserver(animateModern, {\n root: null,\n rootMargin: \"20px\",\n threshold: 0.5,\n });\n\n for (let i = 0; i < elements.length; i++) {\n intersectionObserver.observe(elements[i]);\n }\n } else {\n if (window.addEventListener) {\n animateLegacy(elements);\n\n window.addEventListener(\n \"scroll\",\n (e) => {\n animateLegacy(elements);\n },\n { passive: true }\n );\n }\n }\n}\n\nfunction animateLegacy(elements) {\n elements.forEach((element) => {\n if (elementIsInView(element)) {\n animateElement(element);\n }\n });\n}\n\nfunction animateModern(elements) {\n elements.forEach((element) => {\n if (element.isIntersecting) {\n animateElement(element);\n }\n });\n}\n\nfunction animateElement(element) {\n const target = element.target ? element.target : element;\n const dataset = target.dataset;\n\n const countUp = new CountUp(target, dataset.counterEnd, {\n duration: dataset.counterDuration,\n useGrouping: dataset.counterGrouping ? true : false,\n separator: dataset.counterSeparator,\n decimal: dataset.counterDecimal,\n });\n target.counter = countUp;\n countUp.start(() => {\n // Create event listener.\n target.dispatchEvent(event);\n });\n}\n\nfunction elementIsInView(element) {\n let top = element.offsetTop;\n let left = element.offsetLeft;\n const width = element.offsetWidth;\n const height = element.offsetHeight;\n\n while (element.offsetParent) {\n element = element.offsetParent;\n top += element.offsetTop;\n left += element.offsetLeft;\n }\n\n return (\n top >= window.pageYOffset &&\n left >= window.pageXOffset &&\n top + height <= window.pageYOffset + window.innerHeight &&\n left + width <= window.pageXOffset + window.innerWidth\n );\n}\n\nfunction intersectionListenerSupported() {\n return (\n \"IntersectionObserver\" in window &&\n \"IntersectionObserverEntry\" in window &&\n \"intersectionRatio\" in window.IntersectionObserverEntry.prototype\n );\n}\n\n(() => {\n registerEventListeners();\n})();\n","import axios from \"/srv/www/c/cuttingmatsxxl.com/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/c/cuttingmatsxxl.com/vhosts/www/htdocs/content/mu-plugins/wp-soup-plugin/node_modules/jquery\";\nimport Stepper from \"bs-stepper\";\n\nfunction setCookie(cname, cvalue, exdays) {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n let expires = \"expires=\" + d.toUTCString();\n document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\n}\n\n$(document).ready(() => {\n var quickCaltranslate = wpCuttingMatData.translations.quick_cal_info;\n var quick_info_icon =\n '';\n var quick_cal_info_menuItem = $(\n \".woocommerce-MyAccount-navigation-link--quickcalc a\"\n );\n $(quick_cal_info_menuItem).append(\n `${quick_info_icon}`\n );\n // $(\"[data-tooltip\").foundation();\n $(\n \"#billing_last_name, #billing_first_name, #billing_postcode, #billing_city, #billing_phone, #billing_email \"\n ).on(\"change paste keyup\", function () {\n var checkouValues = $(\n \"#billing_last_name, #billing_first_name, #billing_postcode , #billing_city , #billing_phone, #billing_email \"\n ).val();\n if (checkouValues.length > 1) {\n $(\".shipping-part\").show();\n } else {\n $(\".shipping-part\").hide();\n }\n });\n var step4 = $(\".step-4\").hasClass(\"active\");\n $(\".payment-part\").hide();\n $(\".shipping-part\").hide();\n // var step4 = $(\".step-4\").hasClass(\"active\");\n if (step4 === true) {\n $(\".payment-part\").show();\n } else {\n $(\".payment-part\").hide();\n }\n\n const csrfTokenMeta = document.querySelector('[name=\"csrf-token\"]');\n if (csrfTokenMeta) {\n const csrfInterval = setInterval(function () {\n const csrfInputs = document.querySelectorAll(\n '.woocommerce-checkout input[name=\"_token\"]'\n );\n if (csrfInputs.length) {\n for (let input of csrfInputs) {\n if (input.value == \"\") {\n input.value = csrfTokenMeta.getAttribute(\"content\");\n clearInterval(csrfInterval);\n }\n }\n } else {\n clearInterval(csrfInterval);\n }\n }, 1000);\n }\n\n const stepperEl = document.querySelector(\".stepper\");\n if (stepperEl) {\n const stepper = new Stepper(stepperEl);\n window.initializedStepper = stepper;\n\n stepperEl.addEventListener(\"show.bs-stepper\", function (event) {\n // You can call preventDefault to stop the rendering of your step\n // event.preventDefault()\n });\n\n stepperEl.addEventListener(\"shown.bs-stepper\", function (event) {});\n\n const nextButtons = document.querySelectorAll(\".button.next\");\n for (const nextButton of nextButtons) {\n nextButton.addEventListener(\"click\", function (event) {\n stepper.next();\n $('input[name=\"payment_method\"]').each(function () {\n this.checked = false;\n });\n });\n }\n\n const previousButtons = document.querySelectorAll(\".button.previous\");\n for (const previousButton of previousButtons) {\n previousButton.addEventListener(\"click\", function (event) {\n stepper.previous();\n });\n }\n\n if (document.querySelector(\"body.woocommerce-cart\")) {\n stepper.to(2);\n }\n if (document.querySelector(\"body.woocommerce-checkout\")) {\n stepper.to(3);\n }\n if (\n document.querySelector(\n \"body.woocommerce-checkout.woocommerce-order-received\"\n )\n ) {\n stepper.to(5);\n }\n\n $(window).keydown(function (event) {\n if (event.keyCode == 13) {\n event.preventDefault();\n return false;\n }\n });\n }\n\n $(\".sticky\")\n .on(\"sticky.zf.stuckto:top\", function () {\n $(\".slogan-block\").addClass(\"hide\");\n $(\".main-menu-cta\").addClass(\"hide\");\n $(\".top-menu-cta\").removeClass(\"hide\");\n })\n .on(\"sticky.zf.unstuckfrom:top\", function () {\n $(\".slogan-block\").removeClass(\"hide\");\n $(\".main-menu-cta\").removeClass(\"hide\");\n $(\".top-menu-cta\").addClass(\"hide\");\n });\n\n // Popup\n window.scrollTo(0, 0);\n const cuttingmatsXXLPopup = $(\".cuttingmatsxxl-reveal\");\n $(\".funnelPopupBtn\").on(\"click\", function () {\n cuttingmatsXXLPopup.css(\"display\", \"none\");\n cuttingmatsXXLPopup.hide();\n $(\"html\").removeClass(\"is-reveal-open\");\n $(\".reveal-overlay\").css(\"display\", \"none\");\n\n setCookie('new_site_popup_viewed', 1, 1);\n });\n});\n\n$(window).on(\"load\", function () {\n // code here\n $('body:not(.is-request-for-quotation) input[name=\"payment_method\"]').each(\n function () {\n this.checked = false;\n }\n );\n\n $('body.is-request-for-quotation input[name=\"payment_method\"]').each(\n function () {\n this.checked = true;\n }\n );\n\n $(\"body\").on(\"updated_checkout\", function () {\n const methods = $('input[name=\"payment_method\"]');\n if (methods.length > 0 && methods[0].id == \"payment_method_quotation\") {\n methods[0].checked = true;\n console.log(\"do\");\n }\n });\n});\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function setCookie(cname, cvalue, exdays) {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n const expires = \"expires=\" + d.toUTCString();\n document.cookie = cname + \"=\" + cvalue + \";\" + expires;\n}\n\nconst translationNotice = document.querySelector(\".automatic-translation-notice\");\nif (translationNotice) {\n translationNotice\n .querySelector(\"button\")\n .addEventListener(\"click\", (e) => setCookie(\"hide-automatic-translation-notice\", true, 7), { passive: true });\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","window.addEventListener(\n \"load\",\n () => {\n // Do IE stuff\n if (window.document.documentMode) {\n if (Foundation.MediaQuery.current !== \"small\") {\n const columns = document.querySelectorAll(\".wp-block-column\");\n for (const column of columns) {\n const flexBasis = column.style.flexBasis;\n const isMargin = column.parentElement.classList.contains(\"margin\");\n if (flexBasis && !isMargin) {\n column.style.setAttribute(\"width\", flexBasis);\n column.style.setProperty(\"flex-basis\", \"auto\", \"important\");\n } else if (flexBasis && isMargin) {\n column.style.setAttribute(\"width\", `calc(${flexBasis} - 2rem)`);\n column.style.setProperty(\"flex-basis\", \"auto\", \"important\");\n }\n }\n }\n } else {\n if (Foundation.MediaQuery.current !== \"small\") {\n const columns = document.querySelectorAll(\".wp-block-column\");\n for (const column of columns) {\n const flexBasis = column.style.flexBasis;\n const isMargin = column.parentElement.classList.contains(\"margin\");\n if (flexBasis && isMargin) {\n column.style.setProperty(\"flex-basis\", `calc(${flexBasis} - 2rem)`, \"important\");\n }\n }\n }\n }\n },\n { passive: true }\n);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","/**\n * Set scrollbar sizes\n */\ndocument.addEventListener(\n \"DOMContentLoaded\",\n () => {\n function setScrollbarSize() {\n // Add temporary box to wrapper.\n let scrollbox = document.createElement(\"div\");\n // Make box scrollable.\n scrollbox.style.overflow = \"scroll\";\n // Append box to document.\n document.body.appendChild(scrollbox);\n // Measure inner width of box.\n let scrollBarWidth = scrollbox.offsetWidth - scrollbox.clientWidth;\n // Remove box.\n document.body.removeChild(scrollbox);\n\n if (!(document.body.scrollHeight > window.innerHeight)) {\n scrollBarWidth = 0;\n }\n\n if (scrollBarWidth !== 0) {\n document.body.classList.add(\"has-scrollbar\");\n document.body.setAttribute(\"style\", `--scroll-bar: ${scrollBarWidth}px`);\n } else {\n document.body.classList.remove(\"has-scrollbar\");\n }\n }\n\n setScrollbarSize();\n window.addEventListener(\"resize\", setScrollbarSize, { passive: true });\n\n const epve = document.querySelector(\".edit-post-visual-editor\");\n if (epve !== null) {\n function getEditorWidth() {\n const width = epve.offsetWidth;\n document.body.setAttribute(\"style\", `--editor-width: ${width - 2}px`);\n }\n\n getEditorWidth();\n window.addEventListener(\"resize\", getEditorWidth, { passive: true });\n }\n\n // const adminToolbar = document.querySelector(\"#wpadminbar\");\n // if (adminToolbar !== null) {\n // const html = document.querySelector(\"html:not(.wp-toolbar)\");\n // if (html !== null) {\n // html.setAttribute(\"style\", \"margin-top: 50px !important;\");\n // }\n // }\n },\n { passive: true }\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","function iOS() {\n return (\n (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)) &&\n !window.MSStream\n );\n}\n\nwindow.addEventListener(\"load\", () => {\n if (iOS()) {\n const containers = document.querySelectorAll(\".wp-block-ms-container\");\n if (containers.length) {\n [...containers].forEach((container) =>\n container.style.setProperty(\"background-attachment\", \"scroll\", \"important\")\n );\n }\n }\n});\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","/**\n * Dynamically intialize the `.review-slider`'s.\n */\nfunction msInitializeReviewSlider() {\n const slider = document.querySelector(`.review-slider`);\n if (slider) {\n let options = slider.dataset.sliderOptions;\n options = JSON.parse(options);\n const reviewSlider = new Swiper(`.review-slider`, options);\n }\n}\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n function () {\n msInitializeReviewSlider();\n },\n { passive: true }\n);\n\nif (typeof acf !== \"undefined\") {\n acf.addAction(`render_block_preview`, function ($el, attributes) {\n msInitializeReviewSlider();\n });\n}\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
      `);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
      `);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","document.addEventListener(\n \"DOMContentLoaded\",\n () => {\n // Load all blocks on the page.\n const featuredMenuItems = document.querySelectorAll(\".ms_featured-menu-items\");\n for (menu of featuredMenuItems) {\n // Get all previews and menu links from current block.\n const previews = menu.querySelectorAll(\".preview\");\n const menuLinks = menu.querySelectorAll(\"a\");\n for (link of menuLinks) {\n // Get the target.\n const target = link.dataset?.target;\n link.addEventListener(\n \"mouseover\",\n (event) => {\n for (preview of previews) {\n if (preview.dataset?.content === target) {\n preview.classList.remove(\"hide\");\n } else {\n preview.classList.add(\"hide\");\n }\n }\n },\n { passive: true }\n );\n }\n }\n },\n { passive: true }\n);\n","/*!\n * parallax.js v1.5.0 (http://pixelcog.github.io/parallax.js/)\n * @copyright 2016 PixelCog, Inc.\n * @license MIT (https://github.com/pixelcog/parallax.js/blob/master/LICENSE)\n */\n\n(function ($, window, document, undefined) {\n // Polyfill for requestAnimationFrame\n // via: https://gist.github.com/paulirish/1579671\n\n (function () {\n var lastTime = 0;\n var vendors = [\"ms\", \"moz\", \"webkit\", \"o\"];\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x] + \"RequestAnimationFrame\"];\n window.cancelAnimationFrame =\n window[vendors[x] + \"CancelAnimationFrame\"] || window[vendors[x] + \"CancelRequestAnimationFrame\"];\n }\n\n if (!window.requestAnimationFrame)\n window.requestAnimationFrame = function (callback) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n if (!window.cancelAnimationFrame)\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n })();\n\n // Parallax Constructor\n\n function Parallax(element, options) {\n var self = this;\n\n if (typeof options == \"object\") {\n delete options.refresh;\n delete options.render;\n $.extend(this, options);\n }\n\n this.$element = $(element);\n\n if (!this.imageSrc && this.$element.is(\"img\")) {\n this.imageSrc = this.$element.attr(\"src\");\n }\n\n var positions = (this.position + \"\").toLowerCase().match(/\\S+/g) || [];\n\n if (positions.length < 1) {\n positions.push(\"center\");\n }\n if (positions.length == 1) {\n positions.push(positions[0]);\n }\n\n if (positions[0] == \"top\" || positions[0] == \"bottom\" || positions[1] == \"left\" || positions[1] == \"right\") {\n positions = [positions[1], positions[0]];\n }\n\n if (this.positionX !== undefined) positions[0] = this.positionX.toLowerCase();\n if (this.positionY !== undefined) positions[1] = this.positionY.toLowerCase();\n\n self.positionX = positions[0];\n self.positionY = positions[1];\n\n if (this.positionX != \"left\" && this.positionX != \"right\") {\n if (isNaN(parseInt(this.positionX))) {\n this.positionX = \"center\";\n } else {\n this.positionX = parseInt(this.positionX);\n }\n }\n\n if (this.positionY != \"top\" && this.positionY != \"bottom\") {\n if (isNaN(parseInt(this.positionY))) {\n this.positionY = \"center\";\n } else {\n this.positionY = parseInt(this.positionY);\n }\n }\n\n this.position =\n this.positionX +\n (isNaN(this.positionX) ? \"\" : \"px\") +\n \" \" +\n this.positionY +\n (isNaN(this.positionY) ? \"\" : \"px\");\n\n if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {\n if (this.imageSrc && this.iosFix && !this.$element.is(\"img\")) {\n this.$element.css({\n backgroundImage: 'url(\"' + this.imageSrc + '\")',\n backgroundSize: \"cover\",\n backgroundPosition: this.position,\n });\n }\n return this;\n }\n\n if (navigator.userAgent.match(/(Android)/)) {\n if (this.imageSrc && this.androidFix && !this.$element.is(\"img\")) {\n this.$element.css({\n backgroundImage: 'url(\"' + this.imageSrc + '\")',\n backgroundSize: \"cover\",\n backgroundPosition: this.position,\n });\n }\n return this;\n }\n\n this.$mirror = $(\"
      \").prependTo(this.mirrorContainer);\n\n var slider = this.$element.find(\">.parallax-slider\");\n var sliderExisted = false;\n\n if (slider.length == 0) this.$slider = $(\"\").prependTo(this.$mirror);\n else {\n this.$slider = slider.prependTo(this.$mirror);\n sliderExisted = true;\n }\n\n this.$mirror.addClass(\"parallax-mirror\").css({\n visibility: \"hidden\",\n zIndex: this.zIndex,\n position: \"fixed\",\n top: 0,\n left: 0,\n overflow: \"hidden\",\n });\n\n this.$slider.addClass(\"parallax-slider\").one(\"load\", function () {\n if (!self.naturalHeight || !self.naturalWidth) {\n self.naturalHeight = this.naturalHeight || this.height || 1;\n self.naturalWidth = this.naturalWidth || this.width || 1;\n }\n self.aspectRatio = self.naturalWidth / self.naturalHeight;\n\n Parallax.isSetup || Parallax.setup();\n Parallax.sliders.push(self);\n Parallax.isFresh = false;\n Parallax.requestRender();\n });\n\n if (!sliderExisted) this.$slider[0].src = this.imageSrc;\n\n if ((this.naturalHeight && this.naturalWidth) || this.$slider[0].complete || slider.length > 0) {\n this.$slider.trigger(\"load\");\n }\n }\n\n // Parallax Instance Methods\n\n $.extend(Parallax.prototype, {\n speed: 0.2,\n bleed: 0,\n zIndex: -100,\n iosFix: true,\n androidFix: true,\n position: \"center\",\n overScrollFix: false,\n mirrorContainer: \"body\",\n\n refresh: function () {\n this.boxWidth = this.$element.outerWidth();\n this.boxHeight = this.$element.outerHeight() + this.bleed * 2;\n this.boxOffsetTop = this.$element.offset().top - this.bleed;\n this.boxOffsetLeft = this.$element.offset().left;\n this.boxOffsetBottom = this.boxOffsetTop + this.boxHeight;\n\n var winHeight = Parallax.winHeight;\n var docHeight = Parallax.docHeight;\n var maxOffset = Math.min(this.boxOffsetTop, docHeight - winHeight);\n var minOffset = Math.max(this.boxOffsetTop + this.boxHeight - winHeight, 0);\n var imageHeightMin = (this.boxHeight + (maxOffset - minOffset) * (1 - this.speed)) | 0;\n var imageOffsetMin = ((this.boxOffsetTop - maxOffset) * (1 - this.speed)) | 0;\n var margin;\n\n if (imageHeightMin * this.aspectRatio >= this.boxWidth) {\n this.imageWidth = (imageHeightMin * this.aspectRatio) | 0;\n this.imageHeight = imageHeightMin;\n this.offsetBaseTop = imageOffsetMin;\n\n margin = this.imageWidth - this.boxWidth;\n\n if (this.positionX == \"left\") {\n this.offsetLeft = 0;\n } else if (this.positionX == \"right\") {\n this.offsetLeft = -margin;\n } else if (!isNaN(this.positionX)) {\n this.offsetLeft = Math.max(this.positionX, -margin);\n } else {\n this.offsetLeft = (-margin / 2) | 0;\n }\n } else {\n this.imageWidth = this.boxWidth;\n this.imageHeight = (this.boxWidth / this.aspectRatio) | 0;\n this.offsetLeft = 0;\n\n margin = this.imageHeight - imageHeightMin;\n\n if (this.positionY == \"top\") {\n this.offsetBaseTop = imageOffsetMin;\n } else if (this.positionY == \"bottom\") {\n this.offsetBaseTop = imageOffsetMin - margin;\n } else if (!isNaN(this.positionY)) {\n this.offsetBaseTop = imageOffsetMin + Math.max(this.positionY, -margin);\n } else {\n this.offsetBaseTop = (imageOffsetMin - margin / 2) | 0;\n }\n }\n },\n\n render: function () {\n var scrollTop = Parallax.scrollTop;\n var scrollLeft = Parallax.scrollLeft;\n var overScroll = this.overScrollFix ? Parallax.overScroll : 0;\n var scrollBottom = scrollTop + Parallax.winHeight;\n\n if (this.boxOffsetBottom > scrollTop && this.boxOffsetTop <= scrollBottom) {\n this.visibility = \"visible\";\n this.mirrorTop = this.boxOffsetTop - scrollTop;\n this.mirrorLeft = this.boxOffsetLeft - scrollLeft;\n this.offsetTop = this.offsetBaseTop - this.mirrorTop * (1 - this.speed);\n } else {\n this.visibility = \"hidden\";\n }\n\n this.$mirror.css({\n transform: \"translate3d(\" + this.mirrorLeft + \"px, \" + (this.mirrorTop - overScroll) + \"px, 0px)\",\n visibility: this.visibility,\n height: this.boxHeight,\n width: this.boxWidth,\n });\n\n this.$slider.css({\n transform: \"translate3d(\" + this.offsetLeft + \"px, \" + this.offsetTop + \"px, 0px)\",\n position: \"absolute\",\n height: this.imageHeight,\n width: this.imageWidth,\n maxWidth: \"none\",\n });\n },\n });\n\n // Parallax Static Methods\n\n $.extend(Parallax, {\n scrollTop: 0,\n scrollLeft: 0,\n winHeight: 0,\n winWidth: 0,\n docHeight: 1 << 30,\n docWidth: 1 << 30,\n sliders: [],\n isReady: false,\n isFresh: false,\n isBusy: false,\n\n setup: function () {\n if (this.isReady) return;\n\n var self = this;\n\n var $doc = $(document),\n $win = $(window);\n\n var loadDimensions = function () {\n Parallax.winHeight = $win.height();\n Parallax.winWidth = $win.width();\n Parallax.docHeight = $doc.height();\n Parallax.docWidth = $doc.width();\n };\n\n var loadScrollPosition = function () {\n var winScrollTop = $win.scrollTop();\n var scrollTopMax = Parallax.docHeight - Parallax.winHeight;\n var scrollLeftMax = Parallax.docWidth - Parallax.winWidth;\n Parallax.scrollTop = Math.max(0, Math.min(scrollTopMax, winScrollTop));\n Parallax.scrollLeft = Math.max(0, Math.min(scrollLeftMax, $win.scrollLeft()));\n Parallax.overScroll = Math.max(winScrollTop - scrollTopMax, Math.min(winScrollTop, 0));\n };\n\n $win.on(\"resize.px.parallax load.px.parallax\", function () {\n loadDimensions();\n self.refresh();\n Parallax.isFresh = false;\n Parallax.requestRender();\n }).on(\"scroll.px.parallax load.px.parallax\", function () {\n loadScrollPosition();\n Parallax.requestRender();\n });\n\n loadDimensions();\n loadScrollPosition();\n\n this.isReady = true;\n\n var lastPosition = -1;\n\n function frameLoop() {\n if (lastPosition == window.pageYOffset) {\n // Avoid overcalculations\n window.requestAnimationFrame(frameLoop);\n return false;\n } else lastPosition = window.pageYOffset;\n\n self.render();\n window.requestAnimationFrame(frameLoop);\n }\n\n frameLoop();\n },\n\n configure: function (options) {\n if (typeof options == \"object\") {\n delete options.refresh;\n delete options.render;\n $.extend(this.prototype, options);\n }\n },\n\n refresh: function () {\n $.each(this.sliders, function () {\n this.refresh();\n });\n this.isFresh = true;\n },\n\n render: function () {\n this.isFresh || this.refresh();\n $.each(this.sliders, function () {\n this.render();\n });\n },\n\n requestRender: function () {\n var self = this;\n self.render();\n self.isBusy = false;\n },\n destroy: function (el) {\n var i,\n parallaxElement = $(el).data(\"px.parallax\");\n parallaxElement.$mirror.remove();\n for (i = 0; i < this.sliders.length; i += 1) {\n if (this.sliders[i] == parallaxElement) {\n this.sliders.splice(i, 1);\n }\n }\n $(el).data(\"px.parallax\", false);\n if (this.sliders.length === 0) {\n $(window).off(\"scroll.px.parallax resize.px.parallax load.px.parallax\");\n this.isReady = false;\n Parallax.isSetup = false;\n }\n },\n });\n\n // Parallax Plugin Definition\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var options = typeof option == \"object\" && option;\n\n if (this == window || this == document || $this.is(\"body\")) {\n Parallax.configure(options);\n } else if (!$this.data(\"px.parallax\")) {\n options = $.extend({}, $this.data(), options);\n $this.data(\"px.parallax\", new Parallax(this, options));\n } else if (typeof option == \"object\") {\n $.extend($this.data(\"px.parallax\"), options);\n }\n if (typeof option == \"string\") {\n if (option == \"destroy\") {\n Parallax.destroy(this);\n } else {\n Parallax[option]();\n }\n }\n });\n }\n\n var old = $.fn.parallax;\n\n $.fn.parallax = Plugin;\n $.fn.parallax.Constructor = Parallax;\n\n // Parallax No Conflict\n\n $.fn.parallax.noConflict = function () {\n $.fn.parallax = old;\n return this;\n };\n\n // Parallax Data-API\n\n $(function () {\n $('[data-parallax=\"scroll\"]').parallax();\n });\n})(jQuery, window, document);\n","/*!\n * Clamp.js 0.5.1\n *\n * Copyright 2011-2013, Joseph Schmitt http://joe.sh\n * Released under the WTFPL license\n * http://sam.zoy.org/wtfpl/\n */\n\n(function() {\n /**\n * Clamps a text node.\n * @param {HTMLElement} element. Element containing the text node to clamp.\n * @param {Object} options. Options to pass to the clamper.\n */\n function clamp(element, options) {\n options = options || {};\n\n var self = this,\n win = window,\n opt = {\n clamp: options.clamp || 2,\n useNativeClamp:\n typeof options.useNativeClamp != \"undefined\"\n ? options.useNativeClamp\n : true,\n splitOnChars: options.splitOnChars || [\".\", \"-\", \"–\", \"—\", \" \"], //Split on sentences (periods), hypens, en-dashes, em-dashes, and words (spaces).\n animate: options.animate || false,\n truncationChar: options.truncationChar || \"…\",\n truncationHTML: options.truncationHTML\n },\n sty = element.style,\n originalText = element.innerHTML,\n supportsNativeClamp =\n typeof element.style.webkitLineClamp != \"undefined\",\n clampValue = opt.clamp,\n isCSSValue =\n clampValue.indexOf &&\n (clampValue.indexOf(\"px\") > -1 ||\n clampValue.indexOf(\"em\") > -1),\n truncationHTMLContainer;\n\n if (opt.truncationHTML) {\n truncationHTMLContainer = document.createElement(\"span\");\n truncationHTMLContainer.innerHTML = opt.truncationHTML;\n }\n\n // UTILITY FUNCTIONS __________________________________________________________\n\n /**\n * Return the current style for an element.\n * @param {HTMLElement} elem The element to compute.\n * @param {string} prop The style property.\n * @returns {number}\n */\n function computeStyle(elem, prop) {\n if (!win.getComputedStyle) {\n win.getComputedStyle = function(el, pseudo) {\n this.el = el;\n this.getPropertyValue = function(prop) {\n var re = /(\\-([a-z]){1})/g;\n if (prop == \"float\") prop = \"styleFloat\";\n if (re.test(prop)) {\n prop = prop.replace(re, function() {\n return arguments[2].toUpperCase();\n });\n }\n return el.currentStyle && el.currentStyle[prop]\n ? el.currentStyle[prop]\n : null;\n };\n return this;\n };\n }\n\n return win.getComputedStyle(elem, null).getPropertyValue(prop);\n }\n\n /**\n * Returns the maximum number of lines of text that should be rendered based\n * on the current height of the element and the line-height of the text.\n */\n function getMaxLines(height) {\n var availHeight = height || element.clientHeight,\n lineHeight = getLineHeight(element);\n\n return Math.max(Math.floor(availHeight / lineHeight), 0);\n }\n\n /**\n * Returns the maximum height a given element should have based on the line-\n * height of the text and the given clamp value.\n */\n function getMaxHeight(clmp) {\n var lineHeight = getLineHeight(element);\n return lineHeight * clmp;\n }\n\n /**\n * Returns the line-height of an element as an integer.\n */\n function getLineHeight(elem) {\n var lh = computeStyle(elem, \"line-height\");\n if (lh == \"normal\") {\n // Normal line heights vary from browser to browser. The spec recommends\n // a value between 1.0 and 1.2 of the font size. Using 1.1 to split the diff.\n lh = parseInt(computeStyle(elem, \"font-size\")) * 1.2;\n }\n return parseInt(lh);\n }\n\n // MEAT AND POTATOES (MMMM, POTATOES...) ______________________________________\n var splitOnChars = opt.splitOnChars.slice(0),\n splitChar = splitOnChars[0],\n chunks,\n lastChunk;\n\n /**\n * Gets an element's last child. That may be another node or a node's contents.\n */\n function getLastChild(elem) {\n //Current element has children, need to go deeper and get last child as a text node\n if (elem.lastChild.children && elem.lastChild.children.length > 0) {\n return getLastChild(\n Array.prototype.slice.call(elem.children).pop()\n );\n }\n //This is the absolute last child, a text node, but something's wrong with it. Remove it and keep trying\n else if (\n !elem.lastChild ||\n !elem.lastChild.nodeValue ||\n elem.lastChild.nodeValue == \"\" ||\n elem.lastChild.nodeValue == opt.truncationChar\n ) {\n elem.lastChild.parentNode.removeChild(elem.lastChild);\n return getLastChild(element);\n }\n //This is the last child we want, return it\n else {\n return elem.lastChild;\n }\n }\n\n /**\n * Removes one character at a time from the text until its width or\n * height is beneath the passed-in max param.\n */\n function truncate(target, maxHeight) {\n if (!maxHeight) {\n return;\n }\n\n /**\n * Resets global variables.\n */\n function reset() {\n splitOnChars = opt.splitOnChars.slice(0);\n splitChar = splitOnChars[0];\n chunks = null;\n lastChunk = null;\n }\n\n var nodeValue = target.nodeValue.replace(opt.truncationChar, \"\");\n\n //Grab the next chunks\n if (!chunks) {\n //If there are more characters to try, grab the next one\n if (splitOnChars.length > 0) {\n splitChar = splitOnChars.shift();\n }\n //No characters to chunk by. Go character-by-character\n else {\n splitChar = \"\";\n }\n\n chunks = nodeValue.split(splitChar);\n }\n\n //If there are chunks left to remove, remove the last one and see if\n // the nodeValue fits.\n if (chunks.length > 1) {\n // console.log('chunks', chunks);\n lastChunk = chunks.pop();\n // console.log('lastChunk', lastChunk);\n applyEllipsis(target, chunks.join(splitChar));\n }\n //No more chunks can be removed using this character\n else {\n chunks = null;\n }\n\n //Insert the custom HTML before the truncation character\n if (truncationHTMLContainer) {\n target.nodeValue = target.nodeValue.replace(\n opt.truncationChar,\n \"\"\n );\n element.innerHTML =\n target.nodeValue +\n \" \" +\n truncationHTMLContainer.innerHTML +\n opt.truncationChar;\n }\n\n //Search produced valid chunks\n if (chunks) {\n //It fits\n if (element.clientHeight <= maxHeight) {\n //There's still more characters to try splitting on, not quite done yet\n if (splitOnChars.length >= 0 && splitChar != \"\") {\n applyEllipsis(\n target,\n chunks.join(splitChar) + splitChar + lastChunk\n );\n chunks = null;\n }\n //Finished!\n else {\n return element.innerHTML;\n }\n }\n }\n //No valid chunks produced\n else {\n //No valid chunks even when splitting by letter, time to move\n //on to the next node\n if (splitChar == \"\") {\n applyEllipsis(target, \"\");\n target = getLastChild(element);\n\n reset();\n }\n }\n\n //If you get here it means still too big, let's keep truncating\n if (opt.animate) {\n setTimeout(\n function() {\n truncate(target, maxHeight);\n },\n opt.animate === true ? 10 : opt.animate\n );\n } else {\n return truncate(target, maxHeight);\n }\n }\n\n function applyEllipsis(elem, str) {\n elem.nodeValue = str + opt.truncationChar;\n }\n\n // CONSTRUCTOR ________________________________________________________________\n\n if (clampValue == \"auto\") {\n clampValue = getMaxLines();\n } else if (isCSSValue) {\n clampValue = getMaxLines(parseInt(clampValue));\n }\n\n var clampedText;\n if (supportsNativeClamp && opt.useNativeClamp) {\n sty.overflow = \"hidden\";\n sty.textOverflow = \"ellipsis\";\n sty.webkitBoxOrient = \"vertical\";\n sty.display = \"-webkit-box\";\n sty.webkitLineClamp = clampValue;\n\n if (isCSSValue) {\n sty.height = opt.clamp + \"px\";\n }\n } else {\n var height = getMaxHeight(clampValue);\n if (height <= element.clientHeight) {\n clampedText = truncate(getLastChild(element), height);\n }\n }\n\n return {\n original: originalText,\n clamped: clampedText\n };\n }\n\n window.$clamp = clamp;\n})();\n","document.addEventListener(\n \"DOMContentLoaded\",\n () => {\n const changeOption = (selector, label) => {\n const field = document.querySelector(selector);\n if (field) {\n const option = field.querySelector(\"option:first-child\");\n if (option) {\n option.innerHTML = label;\n option.disabled = true;\n }\n }\n };\n\n changeOption('#buddypress select[name$=\"day\"]', \"Geboortedag\");\n changeOption('#buddypress select[name$=\"month\"]', \"Geboortemaand\");\n changeOption('#buddypress select[name$=\"year\"]', \"Geboortejaar\");\n },\n { passive: true }\n);\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","(() => {\n const backTop = document.getElementsByClassName(\"js-back-to-top\")[0];\n if (backTop) {\n const dataElement = backTop.getAttribute(\"data-element\");\n const scrollElement = dataElement ? document.querySelector(dataElement) : window;\n\n const //scroll to top duration\n scrollDuration = parseInt(backTop.getAttribute(\"data-duration\")) || 300;\n\n const //show back-to-top if scrolling > scrollOffset\n scrollOffset = parseInt(backTop.getAttribute(\"data-offset\")) || 0;\n\n let scrolling = false;\n\n //detect click on back-to-top link\n backTop.addEventListener(\"click\", (event) => {\n event.preventDefault();\n if (!window.requestAnimationFrame) {\n scrollElement.scrollTo(0, 0);\n } else {\n dataElement ? scrollTo(0, scrollDuration, false, scrollElement) : scrollTo(0, scrollDuration);\n }\n //move the focus to the #top-element - don't break keyboard navigation\n moveFocus(document.getElementById(backTop.getAttribute(\"href\").replace(\"#\", \"\")));\n });\n\n //listen to the window scroll and update back-to-top visibility\n checkBackToTop();\n if (scrollOffset > 0) {\n scrollElement.addEventListener(\n \"scroll\",\n (event) => {\n if (!scrolling) {\n scrolling = true;\n !window.requestAnimationFrame\n ? setTimeout(() => {\n checkBackToTop();\n }, 250)\n : window.requestAnimationFrame(checkBackToTop);\n }\n },\n { passive: true }\n );\n }\n\n function checkBackToTop() {\n let windowTop = scrollElement.scrollTop || document.documentElement.scrollTop;\n if (!dataElement) {\n windowTop = window.scrollY || document.documentElement.scrollTop;\n }\n if (windowTop >= scrollOffset) {\n backTop.classList.add(\"back-to-top--is-visible\");\n } else {\n backTop.classList.remove(\"back-to-top--is-visible\");\n }\n scrolling = false;\n }\n\n function scrollTo(final, duration, cb, scrollEl) {\n const element = scrollEl || window;\n let start = element.scrollTop || document.documentElement.scrollTop;\n let currentTime = null;\n\n if (!scrollEl) start = window.scrollY || document.documentElement.scrollTop;\n\n const animateScroll = (timestamp) => {\n if (!currentTime) currentTime = timestamp;\n let progress = timestamp - currentTime;\n if (progress > duration) progress = duration;\n const val = Math.easeInOutQuad(progress, start, final - start, duration);\n element.scrollTo(0, val);\n if (progress < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n cb && cb();\n }\n };\n\n window.requestAnimationFrame(animateScroll);\n }\n\n function moveFocus(element) {\n if (!element) element = document.getElementsByTagName(\"body\")[0];\n element.focus();\n if (document.activeElement !== element) {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n }\n }\n\n Math.easeInOutQuad = function (t, b, c, d) {\n t /= d / 2;\n if (t < 1) return (c / 2) * t * t + b;\n t--;\n return (-c / 2) * (t * (t - 2) - 1) + b;\n };\n }\n})();\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.12\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = false;\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true, capture: true } : true;\n\n\t document.addEventListener('DOMContentLoaded', setPersist, true);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput, true);\n\t window.addEventListener('pointermove', setIntent, true);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput, true);\n\t window.addEventListener('MSPointerMove', setIntent, true);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput, true);\n\t window.addEventListener('mousemove', setIntent, true);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput, true);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput, true);\n\t window.addEventListener('keyup', setInput, true);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement, true);\n\t window.addEventListener('focusout', clearElement, true);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') === 'false' || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * bsStepper v1.7.0 (https://github.com/Johann-S/bs-stepper)\n * Copyright 2018 - 2019 Johann-S \n * Licensed under MIT (https://github.com/Johann-S/bs-stepper/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Stepper = factory());\n}(this, function () { 'use strict';\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n var matches = window.Element.prototype.matches;\n\n var closest = function closest(element, selector) {\n return element.closest(selector);\n };\n\n var WinEvent = function WinEvent(inType, params) {\n return new window.Event(inType, params);\n };\n\n var createCustomEvent = function createCustomEvent(eventName, params) {\n var cEvent = new window.CustomEvent(eventName, params);\n return cEvent;\n };\n /* istanbul ignore next */\n\n\n function polyfill() {\n if (!window.Element.prototype.matches) {\n matches = window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n }\n\n if (!window.Element.prototype.closest) {\n closest = function closest(element, selector) {\n if (!document.documentElement.contains(element)) {\n return null;\n }\n\n do {\n if (matches.call(element, selector)) {\n return element;\n }\n\n element = element.parentElement || element.parentNode;\n } while (element !== null && element.nodeType === 1);\n\n return null;\n };\n }\n\n if (!window.Event || typeof window.Event !== 'function') {\n WinEvent = function WinEvent(inType, params) {\n params = params || {};\n var e = document.createEvent('Event');\n e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable));\n return e;\n };\n }\n\n if (typeof window.CustomEvent !== 'function') {\n var originPreventDefault = window.Event.prototype.preventDefault;\n\n createCustomEvent = function createCustomEvent(eventName, params) {\n var evt = document.createEvent('CustomEvent');\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: null\n };\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n\n evt.preventDefault = function () {\n if (!this.cancelable) {\n return;\n }\n\n originPreventDefault.call(this);\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n };\n\n return evt;\n };\n }\n }\n\n polyfill();\n\n var MILLISECONDS_MULTIPLIER = 1000;\n var ClassName = {\n ACTIVE: 'active',\n LINEAR: 'linear',\n BLOCK: 'dstepper-block',\n NONE: 'dstepper-none',\n FADE: 'fade',\n VERTICAL: 'vertical'\n };\n var transitionEndEvent = 'transitionend';\n var customProperty = 'bsStepper';\n\n var show = function show(stepperNode, indexStep, options, done) {\n var stepper = stepperNode[customProperty];\n\n if (stepper._steps[indexStep].classList.contains(ClassName.ACTIVE) || stepper._stepsContents[indexStep].classList.contains(ClassName.ACTIVE)) {\n return;\n }\n\n var showEvent = createCustomEvent('show.bs-stepper', {\n cancelable: true,\n detail: {\n from: stepper._currentIndex,\n to: indexStep,\n indexStep: indexStep\n }\n });\n stepperNode.dispatchEvent(showEvent);\n\n var activeStep = stepper._steps.filter(function (step) {\n return step.classList.contains(ClassName.ACTIVE);\n });\n\n var activeContent = stepper._stepsContents.filter(function (content) {\n return content.classList.contains(ClassName.ACTIVE);\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n if (activeStep.length) {\n activeStep[0].classList.remove(ClassName.ACTIVE);\n }\n\n if (activeContent.length) {\n activeContent[0].classList.remove(ClassName.ACTIVE);\n\n if (!stepperNode.classList.contains(ClassName.VERTICAL) && !stepper.options.animation) {\n activeContent[0].classList.remove(ClassName.BLOCK);\n }\n }\n\n showStep(stepperNode, stepper._steps[indexStep], stepper._steps, options);\n showContent(stepperNode, stepper._stepsContents[indexStep], stepper._stepsContents, activeContent, done);\n };\n\n var showStep = function showStep(stepperNode, step, stepList, options) {\n stepList.forEach(function (step) {\n var trigger = step.querySelector(options.selectors.trigger);\n trigger.setAttribute('aria-selected', 'false'); // if stepper is in linear mode, set disabled attribute on the trigger\n\n if (stepperNode.classList.contains(ClassName.LINEAR)) {\n trigger.setAttribute('disabled', 'disabled');\n }\n });\n step.classList.add(ClassName.ACTIVE);\n var currentTrigger = step.querySelector(options.selectors.trigger);\n currentTrigger.setAttribute('aria-selected', 'true'); // if stepper is in linear mode, remove disabled attribute on current\n\n if (stepperNode.classList.contains(ClassName.LINEAR)) {\n currentTrigger.removeAttribute('disabled');\n }\n };\n\n var showContent = function showContent(stepperNode, content, contentList, activeContent, done) {\n var stepper = stepperNode[customProperty];\n var toIndex = contentList.indexOf(content);\n var shownEvent = createCustomEvent('shown.bs-stepper', {\n cancelable: true,\n detail: {\n from: stepper._currentIndex,\n to: toIndex,\n indexStep: toIndex\n }\n });\n\n function complete() {\n content.classList.add(ClassName.BLOCK);\n content.removeEventListener(transitionEndEvent, complete);\n stepperNode.dispatchEvent(shownEvent);\n done();\n }\n\n if (content.classList.contains(ClassName.FADE)) {\n content.classList.remove(ClassName.NONE);\n var duration = getTransitionDurationFromElement(content);\n content.addEventListener(transitionEndEvent, complete);\n\n if (activeContent.length) {\n activeContent[0].classList.add(ClassName.NONE);\n }\n\n content.classList.add(ClassName.ACTIVE);\n emulateTransitionEnd(content, duration);\n } else {\n content.classList.add(ClassName.ACTIVE);\n content.classList.add(ClassName.BLOCK);\n stepperNode.dispatchEvent(shownEvent);\n done();\n }\n };\n\n var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = window.getComputedStyle(element).transitionDuration;\n var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER;\n };\n\n var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {\n var called = false;\n var durationPadding = 5;\n var emulatedDuration = duration + durationPadding;\n\n function listener() {\n called = true;\n element.removeEventListener(transitionEndEvent, listener);\n }\n\n element.addEventListener(transitionEndEvent, listener);\n window.setTimeout(function () {\n if (!called) {\n element.dispatchEvent(WinEvent(transitionEndEvent));\n }\n\n element.removeEventListener(transitionEndEvent, listener);\n }, emulatedDuration);\n };\n\n var detectAnimation = function detectAnimation(contentList, options) {\n if (options.animation) {\n contentList.forEach(function (content) {\n content.classList.add(ClassName.FADE);\n content.classList.add(ClassName.NONE);\n });\n }\n };\n\n var buildClickStepLinearListener = function buildClickStepLinearListener() {\n return function clickStepLinearListener(event) {\n event.preventDefault();\n };\n };\n\n var buildClickStepNonLinearListener = function buildClickStepNonLinearListener(options) {\n return function clickStepNonLinearListener(event) {\n event.preventDefault();\n var step = closest(event.target, options.selectors.steps);\n var stepperNode = closest(step, options.selectors.stepper);\n var stepper = stepperNode[customProperty];\n\n var stepIndex = stepper._steps.indexOf(step);\n\n show(stepperNode, stepIndex, options, function () {\n stepper._currentIndex = stepIndex;\n });\n };\n };\n\n var DEFAULT_OPTIONS = {\n linear: true,\n animation: false,\n selectors: {\n steps: '.step',\n trigger: '.step-trigger',\n stepper: '.bs-stepper'\n }\n };\n\n var Stepper =\n /*#__PURE__*/\n function () {\n function Stepper(element, _options) {\n var _this = this;\n\n if (_options === void 0) {\n _options = {};\n }\n\n this._element = element;\n this._currentIndex = 0;\n this._stepsContents = [];\n this.options = _extends({}, DEFAULT_OPTIONS, {}, _options);\n this.options.selectors = _extends({}, DEFAULT_OPTIONS.selectors, {}, this.options.selectors);\n\n if (this.options.linear) {\n this._element.classList.add(ClassName.LINEAR);\n }\n\n this._steps = [].slice.call(this._element.querySelectorAll(this.options.selectors.steps));\n\n this._steps.filter(function (step) {\n return step.hasAttribute('data-target');\n }).forEach(function (step) {\n _this._stepsContents.push(_this._element.querySelector(step.getAttribute('data-target')));\n });\n\n detectAnimation(this._stepsContents, this.options);\n\n this._setLinkListeners();\n\n Object.defineProperty(this._element, customProperty, {\n value: this,\n writable: true\n });\n\n if (this._steps.length) {\n show(this._element, this._currentIndex, this.options, function () {});\n }\n } // Private\n\n\n var _proto = Stepper.prototype;\n\n _proto._setLinkListeners = function _setLinkListeners() {\n var _this2 = this;\n\n this._steps.forEach(function (step) {\n var trigger = step.querySelector(_this2.options.selectors.trigger);\n\n if (_this2.options.linear) {\n _this2._clickStepLinearListener = buildClickStepLinearListener(_this2.options);\n trigger.addEventListener('click', _this2._clickStepLinearListener);\n } else {\n _this2._clickStepNonLinearListener = buildClickStepNonLinearListener(_this2.options);\n trigger.addEventListener('click', _this2._clickStepNonLinearListener);\n }\n });\n } // Public\n ;\n\n _proto.next = function next() {\n var _this3 = this;\n\n var nextStep = this._currentIndex + 1 <= this._steps.length - 1 ? this._currentIndex + 1 : this._steps.length - 1;\n show(this._element, nextStep, this.options, function () {\n _this3._currentIndex = nextStep;\n });\n };\n\n _proto.previous = function previous() {\n var _this4 = this;\n\n var previousStep = this._currentIndex - 1 >= 0 ? this._currentIndex - 1 : 0;\n show(this._element, previousStep, this.options, function () {\n _this4._currentIndex = previousStep;\n });\n };\n\n _proto.to = function to(stepNumber) {\n var _this5 = this;\n\n var tempIndex = stepNumber - 1;\n var nextStep = tempIndex >= 0 && tempIndex < this._steps.length ? tempIndex : 0;\n show(this._element, nextStep, this.options, function () {\n _this5._currentIndex = nextStep;\n });\n };\n\n _proto.reset = function reset() {\n var _this6 = this;\n\n show(this._element, 0, this.options, function () {\n _this6._currentIndex = 0;\n });\n };\n\n _proto.destroy = function destroy() {\n var _this7 = this;\n\n this._steps.forEach(function (step) {\n var trigger = step.querySelector(_this7.options.selectors.trigger);\n\n if (_this7.options.linear) {\n trigger.removeEventListener('click', _this7._clickStepLinearListener);\n } else {\n trigger.removeEventListener('click', _this7._clickStepNonLinearListener);\n }\n });\n\n this._element[customProperty] = undefined;\n this._element = undefined;\n this._currentIndex = undefined;\n this._steps = undefined;\n this._stepsContents = undefined;\n this._clickStepLinearListener = undefined;\n this._clickStepNonLinearListener = undefined;\n };\n\n return Stepper;\n }();\n\n return Stepper;\n\n}));\n//# sourceMappingURL=bs-stepper.js.map\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":""}