{"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:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/ssr-window/ssr-window.esm.js","webpack:///./src/Core/Blocks/Content/common/tag_filter/script.js","webpack:///./src/Core/Blocks/Content/common/usps/script.js","webpack:///./src/Core/Blocks/Marginals/header/thin_topbar_menu/script.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/dom7/dom7.esm.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/dom.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/get-support.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/get-device.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/get-browser.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/utils.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/transition/transitionEmit.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/events/onTouchStart.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/events/onTouchMove.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/events/onTouchEnd.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/events/onResize.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/events/onClick.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/events/onScroll.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/events/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/check-overflow/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/defaults.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/moduleExtendParams.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/core.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/events-emitter.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateSize.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateSlides.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateAutoHeight.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateSlidesOffset.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateSlidesProgress.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateProgress.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateSlidesClasses.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateActiveIndex.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/update/updateClickedSlide.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/translate/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/translate/getTranslate.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/translate/setTranslate.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/translate/minTranslate.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/translate/maxTranslate.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/translate/translateTo.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/transition/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/transition/setTransition.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/transition/transitionStart.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/transition/transitionEnd.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/slide/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/slide/slideTo.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/slide/slideToLoop.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/slide/slideNext.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/slide/slidePrev.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/slide/slideReset.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/slide/slideToClosest.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/loop/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/loop/loopCreate.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/loop/loopFix.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/loop/loopDestroy.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/grab-cursor/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/breakpoints/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/classes/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/classes/addClasses.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/classes/removeClasses.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/images/index.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/images/loadImage.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/images/preloadImages.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/modules/resize/resize.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/core/modules/observer/observer.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/create-element-if-not-defined.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/classes-to-selector.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/effect-init.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/effect-target.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/shared/create-shadow.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/assets/js/script.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/modules/navigation/navigation.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/modules/pagination/pagination.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/modules/autoplay/autoplay.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/modules/thumbs/thumbs.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/modules/controller/controller.js","webpack:////srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/themes/veenstrayachts/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/process/browser.js","webpack:///./assets/js/scripts/cookies.js","webpack:///./node_modules/aos/dist/aos.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./assets/js/scripts/ie11.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./assets/js/scripts/resizes.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./assets/js/vendors/mobile.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./src/Core/Blocks/Content/common/reviews/script.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/shared/dom.js","webpack:///./node_modules/swiper/shared/get-support.js","webpack:///./node_modules/swiper/shared/get-device.js","webpack:///./node_modules/swiper/shared/get-browser.js","webpack:///./node_modules/swiper/shared/utils.js","webpack:///./node_modules/swiper/core/transition/transitionEmit.js","webpack:///./node_modules/swiper/core/events/onTouchStart.js","webpack:///./node_modules/swiper/core/events/onTouchMove.js","webpack:///./node_modules/swiper/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/core/events/onResize.js","webpack:///./node_modules/swiper/core/events/onClick.js","webpack:///./node_modules/swiper/core/events/onScroll.js","webpack:///./node_modules/swiper/core/events/index.js","webpack:///./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/core/check-overflow/index.js","webpack:///./node_modules/swiper/core/defaults.js","webpack:///./node_modules/swiper/core/moduleExtendParams.js","webpack:///./node_modules/swiper/core/core.js","webpack:///./node_modules/swiper/core/events-emitter.js","webpack:///./node_modules/swiper/core/update/index.js","webpack:///./node_modules/swiper/core/update/updateSize.js","webpack:///./node_modules/swiper/core/update/updateSlides.js","webpack:///./node_modules/swiper/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/core/update/updateProgress.js","webpack:///./node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/core/translate/index.js","webpack:///./node_modules/swiper/core/translate/getTranslate.js","webpack:///./node_modules/swiper/core/translate/setTranslate.js","webpack:///./node_modules/swiper/core/translate/minTranslate.js","webpack:///./node_modules/swiper/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/core/translate/translateTo.js","webpack:///./node_modules/swiper/core/transition/index.js","webpack:///./node_modules/swiper/core/transition/setTransition.js","webpack:///./node_modules/swiper/core/transition/transitionStart.js","webpack:///./node_modules/swiper/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/core/slide/index.js","webpack:///./node_modules/swiper/core/slide/slideTo.js","webpack:///./node_modules/swiper/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/core/slide/slideNext.js","webpack:///./node_modules/swiper/core/slide/slidePrev.js","webpack:///./node_modules/swiper/core/slide/slideReset.js","webpack:///./node_modules/swiper/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/core/loop/index.js","webpack:///./node_modules/swiper/core/loop/loopCreate.js","webpack:///./node_modules/swiper/core/loop/loopFix.js","webpack:///./node_modules/swiper/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/core/grab-cursor/index.js","webpack:///./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/core/breakpoints/index.js","webpack:///./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/core/classes/index.js","webpack:///./node_modules/swiper/core/classes/addClasses.js","webpack:///./node_modules/swiper/core/classes/removeClasses.js","webpack:///./node_modules/swiper/core/images/index.js","webpack:///./node_modules/swiper/core/images/loadImage.js","webpack:///./node_modules/swiper/core/images/preloadImages.js","webpack:///./node_modules/swiper/core/modules/resize/resize.js","webpack:///./node_modules/swiper/core/modules/observer/observer.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///./node_modules/swiper/modules/navigation/navigation.js","webpack:///./node_modules/swiper/shared/classes-to-selector.js","webpack:///./node_modules/swiper/modules/pagination/pagination.js","webpack:///./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/modules/controller/controller.js","webpack:///./node_modules/swiper/modules/autoplay/autoplay.js","webpack:///./node_modules/swiper/modules/thumbs/thumbs.js","webpack:///./node_modules/swiper/shared/effect-init.js","webpack:///./node_modules/swiper/shared/effect-target.js","webpack:///./node_modules/swiper/shared/create-shadow.js","webpack:///./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/Core/Blocks/Content/common/featured_menu_items/script.js","webpack:///./assets/js/vendors/parallax.js","webpack:///./assets/js/vendors/clamp.js","webpack:///./assets/js/scripts/buddypress.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./assets/js/scripts/scroll-to-top.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/what-input/dist/what-input.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./assets/js/scripts/blocks.js","webpack:///./node_modules/axios/index.js","webpack:///./src/Core/Blocks/Content/common/pricing/script.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///external \"jQuery\"","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/axios.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","AxiosError","CanceledError","message","this","ERR_CANCELED","inherits","__CANCEL__","url","test","toString","Array","isArray","arr","e","length","push","arguments","window","Promise","A","recalculate","useContainerForBreakpoints","container","clientWidth","innerWidth","columns","b","margin","x","y","keys","breakAt","mobileFirst","options","responsiveOptions","docWidth","a","parseInt","O","parseFloat","replace","u","rows","v","style","height","M","offsetHeight","isNaN","forEach","position","top","left","cols","dataset","macyComplete","tmpRows","f","lastcol","C","h","nodeName","byCss","selectors","split","RegExp","document","querySelectorAll","getElementsByClassName","substring","getElementsByTagName","getElementById","running","events","add","run","shift","clear","instance","data","on","emit","g","naturalHeight","naturalWidth","width","E","complete","addEventListener","then","constants","EVENT_IMAGE_LOAD","img","catch","EVENT_IMAGE_ERROR","w","all","EVENT_IMAGE_COMPLETE","I","clearTimeout","setTimeout","EVENT_RESIZE","queue","_","debug","console","error","N","resizer","T","useOwnImageLoader","waitForImages","EVENT_INITIALIZED","L","getComputedStyle","getPropertyValue","V","children","from","filter","offsetParent","trueOrder","EVENT_RECALCULATED","R","assign","k","useImageLoader","onInit","cancelLegacy","createElement","querySelector","getAttribute","id","Math","floor","random","apply","removeAttribute","Element","q","init","warn","recalculateOnImageLoad","runOnImageLoad","remove","removeEventListener","reInit","utils","obj","formData","FormData","stack","convertValue","isDate","toISOString","isArrayBuffer","isTypedArray","Blob","Buffer","build","parentKey","isPlainObject","indexOf","Error","isUndefined","fullKey","endsWith","JSON","stringify","toArray","el","append","pop","baseURL","relativeURL","AOS","rtl","$","attr","GetYoDigits","namespace","str","chars","charsLength","transitionend","$elem","end","transitions","elem","transition","triggerHandler","onLoad","handler","didLoad","readyState","eventType","cb","one","ignoreMousedisappear","ignoreLeaveWindow","ignoreReappear","eLeave","rest","callback","relatedTarget","hasFocus","eReenter","currentTarget","has","target","matchMedia","styleMedia","media","info","script","type","parentNode","insertBefore","head","appendChild","currentStyle","matchMedium","text","styleSheet","cssText","textContent","matches","MediaQuery","queries","current","_init","isInitialized","appendTo","namedQueries","extractedStyles","css","styleObject","trim","slice","reduce","ret","param","parts","val","decodeURIComponent","parseStyleToObject","_getCurrentSize","_watcher","_reInit","atLeast","size","query","only","upTo","nextSize","next","is","bpSize","bpModifier","queryIndex","findIndex","_getQueryName","nextQuery","TypeError","matched","newSize","currentSize","trigger","Foundation","version","_plugins","_uuids","plugin","className","functionName","attrName","hyphenate","registerPlugin","pluginName","constructor","toLowerCase","uuid","$element","unregisterPlugin","prop","splice","removeAttr","removeData","plugins","isJQ","each","_this","plgs","foundation","err","reflow","find","addBack","$el","opts","option","opt","map","parseValue","er","getFnName","addToJquery","fn","method","$noJS","removeClass","args","plugClass","ReferenceError","Function","results","exec","util","throttle","func","delay","timer","context","Date","now","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","navigator","userAgent","lastTime","nextTime","max","performance","start","oThis","aArgs","fToBind","fNOP","fBound","concat","Plugin","element","_setup","getPluginName","_destroy","keyCodes","9","13","27","32","35","36","37","38","39","40","commands","findFocusable","sort","aTabIndex","bTabIndex","parseKey","event","which","keyCode","String","fromCharCode","toUpperCase","shiftKey","ctrlKey","altKey","Keyboard","kcs","kc","getKeyCodes","handleKey","component","functions","commandList","zfIsKeyHandled","ltr","Rtl","extend","returnValue","handled","unhandled","register","componentName","cmds","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","preventDefault","focus","releaseFocus","off","Accordion","defaults","_isInitializing","$tabs","idx","$content","linkId","$initActive","_initialAnchor","prev","_openSingleTab","_checkDeepLink","anchor","location","hash","$anchor","$link","parent","hasClass","_closeAllTabs","deepLinkSmudge","offset","animate","scrollTop","deepLinkSmudgeOffset","deepLinkSmudgeDelay","deepLink","_events","$tabContent","toggle","$a","multiExpand","previous","first","last","$target","closest","up","down","updateHistory","history","pushState","replaceState","_openTab","$targetItem","$othersItems","siblings","allowAllClosed","_closeTab","$activeContents","not","targetContentId","addClass","finish","slideDown","slideSpeed","slideUp","$activeTabs","stop","Nest","menu","items","subMenuClass","subItemClass","hasSubClass","applyAria","$item","$sub","firstItem","AccordionMenu","multiOpen","$menuLinks","subId","isActive","parentLink","clone","prependTo","wrap","submenuToggle","after","submenuToggleText","initPanes","$submenu","$prevElement","$nextElement","$elements","min","parents","open","close","closeAll","hideAll","$targetBranch","parentsUntil","$othersActiveSubmenus","$submenus","$allmenus","detach","Box","ImNotTouchingYou","lrOnly","tbOnly","ignoreBottom","OverlapArea","GetDimensions","GetExplicitOffsets","alignment","vOffset","hOffset","isOverflow","topVal","leftVal","$eleDims","$anchorDims","topOver","bottomOver","leftOver","rightOver","eleDims","parDims","windowDims","sqrt","rect","getBoundingClientRect","parRect","winRect","body","winY","pageYOffset","winX","pageXOffset","parentDims","POSITIONS","VERTICAL_ALIGNMENTS","HORIZONTAL_ALIGNMENTS","ALIGNMENTS","nextItem","item","array","currentIdx","Positionable","triedPositions","_getDefaultPosition","_getDefaultAlignment","originalPosition","originalAlignment","_alignmentsExhausted","_realign","_addTriedPosition","isExhausted","$parent","allowOverlap","_getVOffset","_getHOffset","minOverlap","minCoordinates","_positionsExhausted","overlap","allowBottomOverlap","_reposition","initClasses","activeClasses","Motion","animation","isIn","initClass","activeClass","reset","show","offsetWidth","hide","transitionDuration","MutationObserver","prefixes","triggers","Triggers","Listeners","Basic","Global","Initializers","debounceGlobalListener","debounce","listener","openListener","closeListener","toggleListener","closeableListener","stopPropagation","fadeOut","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","addClosemeListener","yetiBoxes","plugNames","listeners","join","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","attributeName","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","__","triggersInitialized","IHearYou","startPosX","startTime","elapsedTime","startEvent","Touch","isMoving","didMoved","onTouchEnd","onTouchMove","tapEvent","Event","spotSwipe","dir","touches","pageX","dx","abs","moveThreshold","timeThreshold","onTouchStart","passive","SpotSwipe","enabled","documentElement","special","swipe","setup","tap","noop","setupSpotSwipe","setupTouchHandler","addTouch","handleTouch","simulatedEvent","changedTouches","touchstart","touchmove","touchend","MouseEvent","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","dispatchEvent","Dropdown","$id","$anchors","_setCurrentAnchor","parentClass","$currentAnchor","match","horizontalPosition","hasTouch","ontouchstart","_setPosition","forceFollow","hover","bodyData","whatinput","timeout","hoverDelay","hoverPane","$body","autoFocus","closeOnClick","_addBodyHandler","DropdownMenu","subs","$menuItems","verticalClass","rightClass","changed","parClass","clickOpen","hasSub","hasClicked","stopImmediatePropagation","_hide","_show","closeOnClickInside","disableHoverOnTouch","disableHover","autoclose","closingTime","isTab","index","nextSibling","prevSibling","openSub","closeSub","_isVertical","_isRtl","_removeBodyHandler","$sibs","oldClass","$parentLi","$toClose","$activeItem","onImagesLoaded","images","unloaded","singleImageLoaded","image","Image","me","src","Equalizer","eqId","$watched","hasNested","isNested","isOn","_bindHandler","onResizeMeBound","_onResizeMe","onPostEqualizedBound","_onPostEqualized","tooSmall","imgs","equalizeOn","_checkMQ","_reflow","_pauseEvents","equalizeOnStack","_isStacked","equalizeByRow","getHeightsByRow","applyHeightByRow","getHeights","applyHeight","heights","len","lastElTopOffset","groups","group","elOffsetTop","j","ln","groupsILength","lenJ","Drilldown","autoApplyClass","$submenuAnchors","$currentMenu","_prepareMenu","_registerEvents","_keyboardEvents","$menu","backButtonPosition","backButton","prepend","_back","autoHeight","$wrapper","wrapper","animateHeight","_getMaxDims","ev","contains","_hideAll","_scrollTop","_resize","$scrollTopElement","scrollTopElement","scrollPos","scrollTopOffset","animationDuration","animationEasing","calcHeight","parentSubMenu","_setHideSubMenuClasses","isLastChild","_setShowSubMenuClasses","blur","maxHeight","result","unwrap","MenuPlugins","dropdown","cssClass","drilldown","accordion","ResponsiveMenu","rules","currentMq","currentPlugin","rulesTree","rule","ruleSize","rulePlugin","isEmptyObject","_checkMediaQueries","matchedMq","destroy","ResponsiveToggle","targetID","$targetMenu","$toggler","input","animationIn","animationOut","_update","_updateMqHandler","toggleMenu","hideFor","Reveal","cached","mq","fullScreen","overlay","$overlay","_makeOverlay","onLoadListener","additionalOverlayClasses","outerWidth","outerHeight","_updatePosition","_handleState","$activeAnchor","activeElement","multipleOpened","_disableScroll","focusableElements","_addGlobalClasses","showDelay","_addGlobalListeners","updateScrollbarClass","toggleClass","closeOnEsc","finishUp","_removeGlobalClasses","_enableScroll","hideDelay","resetOnClose","html","urlWithoutHash","pathname","search","title","Slider","initialized","inputs","handles","$handle","$input","$fill","vertical","disabled","disabledClass","binding","_setInitAttr","doubleSided","$handle2","$input2","setHandles","_setHandlePos","pctOfBar","percent","positionValueFunction","_logTransform","_powTransform","toFixed","base","log","baseLog","nonLinearBase","pow","$hndl","isDbl","h2Val","step","h1Val","vert","hOrW","lOrT","handleDim","elemDim","_pctOfBar","movement","decimal","_setValues","dim","isLeftHndl","handlePct","handlePos","initialStart","duration","anim","prog","move","ts","Move","moveTime","changedDelay","initVal","initialEnd","_adjustValue","direction","eventOffset","pageY","barDim","windowScroll","scrollLeft","elemOffset","barXY","eventFromBar","offsetPct","_value","absPosition","previousVal","div","_eventsForHandle","curHandle","handleChangeEvent","_handleEvent","clickSelect","draggable","newValue","_$handle","oldValue","decrease","increase","decreaseFast","increaseFast","frac","num","clickPos","invertVertical","SmoothScroll","loc","$loc","round","threshold","_linkClickListener","_handleLinkClick","arrival","_inTransition","scrollToLoc","Sticky","$container","wasWrapped","containerClass","stickyClass","scrollCount","checkEvery","isStuck","containerHeight","elemHeight","_parsePoints","_setSizes","scroll","_calc","_removeSticky","topPoint","reverse","pts","topAnchor","btmAnchor","scrollHeight","breaks","pt","place","points","canStick","_eventsHandler","_pauseListeners","checkSizes","bottomPoint","_setSticky","stickTo","mrgn","notStuckTo","isTop","stickToTop","anchorPt","anchorHeight","topOrBottom","bottom","stickyOn","newElemWidth","comp","pdngl","pdngr","dynamicHeight","newContainerHeight","_setBreakPoints","mTop","emCalc","marginTop","mBtm","marginBottom","winHeight","innerHeight","em","fontSize","Tabs","$tabTitles","linkClass","linkActiveClass","matchHeight","$images","_setHeight","anchorNoHash","selectTab","_collapse","_addKeyHandler","_addClickHandler","_setHeightMqHandler","_handleTabChange","wrapOnKeys","historyHandled","activeCollapse","$oldTab","$tabLink","$targetContent","_collapseTab","panelActiveClass","$targetAnchor","$activeTab","idStr","hashIdStr","panelClass","panel","temp","Toggler","$triggers","toggler","$trigger","controls","_updateARIA","undefined","Tooltip","isClick","elemId","tipText","template","_buildTemplate","allowHtml","triggerClass","elementClassName","SVGElement","baseVal","tooltipWidth","tooltipHeight","templateClasses","tooltipClass","showOn","fadeIn","fadeInDuration","fadeOutDuration","isFocus","disableForTouch","touchCloseText","tabs","ResponsiveAccordionTabs","storezfData","currentRule","_getAllOptions","allOptions","dummyPlugin","tmpPlugin","keyKey","objObj","_changedZfMediaQueryHandler","_handleMarkup","toSet","fromString","$panels","tabsTitle","tabsPanel","$liHeads","$liHeadsA","display","visibility","$tabsContent","$placeholder","insertAfter","tempValue","masonryGrids","Macy","640","1024","objectFitImages","__assign","CountUp","endVal","startVal","decimalPlaces","useEasing","useGrouping","smartEasingThreshold","smartEasingAmount","separator","prefix","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","paused","once","count","remaining","frameVal","easingFn","Number","printValue","rAF","update","formatNumber","numerals","easeOutExpo","formattingFn","validateValue","resetDuration","onScrollFns","handleScroll","onscroll","scrollY","determineDirectionAndSmartEasing","pauseResume","tagName","innerHTML","ensureNumber","bubbles","cancelable","composed","registerEventListeners","elements","intersectionObserver","IntersectionObserver","animateModern","root","rootMargin","animateLegacy","elementIsInView","animateElement","countUp","counterDecimal","button","postID","action","themosis","axios","response","addToFavorites","removeFromFavorites","directions","column","containerId","LazyLoad","randomID","submenu","logo","logoMobile","language","overlayItems","li","toggleArrow","submenuTogglesCheckInterval","setInterval","submenuToggles","clearInterval","searchBlockButton","searchFormBlock","galleryThumbs","slidesPerView","freeMode","watchSlidesVisibility","watchSlidesProgress","scrollbar","navigation","nextEl","prevEl","thumbs","swiper","select","wp","gutenbergLoadCheck","anchors","editPost","fields","initialOffset","masonry","slider","textLoadMore","textLoading","textLoadFailed","cards","cardSliders","isObject","$hiddenInput","$emptyInput","$smartTag","cache","smart_tag","success","$select","selectedOption","selectedSmartTagLabel","ga","analyticsGTMID","resolve","Swiper","msInitializeUSPSlider","ssrDocument","childNodes","createElementNS","importNode","host","hostname","href","origin","protocol","getDocument","doc","ssrWindow","CustomEvent","screen","getWindow","win","Dom7","proto","__proto__","set","arrayFlat","res","arrayFilter","selector","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","classes","classNames","classList","attrs","setAttribute","transform","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","dom7LiveListeners","proxyListener","dom7Listeners","handlers","dom7proxy","evt","detail","dataIndex","transitionEnd","dom","fireCallBack","includeMargins","styles","box","clientTop","clientLeft","scrollX","props","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","newChild","tempDiv","firstChild","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","foundElements","found","removeChild","methodName","writable","support","deviceCached","browser","nextTick","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","time","targetPosition","side","startPosition","translate","params","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","cancel","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","self","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","offsetLeft","offsetTop","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","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","point","minRatio","substr","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","entries","resultClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","onReady","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","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","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","WebkitMutationObserver","mutations","observerUpdate","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","classesToSelector","effectInit","requireUpdateOnVirtual","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","_s","slideShadows","effectTarget","effectParams","$slideEl","transformEl","createShadow","shadowClass","$shadowContainer","$shadowEl","getEl","toggleEl","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","targetEl","pagination","clickable","isHidden","bulletSize","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","$dragEl","newPos","opacity","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","$activeSlideEl","proceed","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","LinearSpline","maxIndex","minIndex","guess","i1","i3","binarySearch","interpolate","x2","removeSpline","controller","control","spline","inverse","by","_t","controlledTranslate","controlled","setControlledTranslate","getInterpolateFunction","setControlledTransition","coverflowEffect","rotate","stretch","depth","modifier","swiperWidth","swiperHeight","center","centerOffset","offsetMultiplier","rotateY","rotateX","translateZ","translateY","translateX","slideTransform","zIndex","$shadowBeforeEl","$shadowAfterEl","printContent","print","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","env","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","translationNotice","cname","cvalue","exdays","expires","setCookie","loaded","default","easing","throttleDelay","debounceDelay","disableMutationObserver","atob","mobile","phone","tablet","S","isSupported","ready","refresh","refreshHard","leading","maxWait","trailing","flush","valueOf","iterator","NaN","WebKitMutationObserver","MozMutationObserver","addedNodes","removedNodes","aos","vendor","opera","configurable","anchorPlacement","InterceptorManager","fulfilled","rejected","synchronous","runWhen","eject","OFI","propRegex","testImg","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","setPlaceholder","placeholder","onImageReady","fixOne","parsed","fontFamily","getStyle","ofi","skipTest","descriptors","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","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","reject","getUri","fullPath","paramsSerializer","generateHTTPMethod","isForm","headers","flexBasis","isMargin","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","len2","encodeChunk","lookup","Uint8Array","code","output","thisArg","encode","encodeURIComponent","serializedParams","isURLSearchParams","hashmarkIndex","scrollbox","scrollBarWidth","setScrollbarSize","epve","getEditorWidth","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","port","charAt","requestURL","isString","containers","validateStatus","status","ERR_BAD_REQUEST","ERR_BAD_RESPONSE","msInitializeReviewSlider","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","wasModuleEnabled","isModuleEnabled","Navigation","navigationDisabledClass","Pagination","paginationDisabledClass","Scrollbar","scrollbarDisabledClass","Controller","Autoplay","Thumb","EffectCoverflow","transformData","isCancel","throwIfCancellationRequested","cancelToken","throwIfRequested","signal","aborted","reason","payload","isAxiosError","previews","link","preview","positions","positionX","positionY","imageSrc","sliderExisted","$slider","Parallax","currTime","timeToCall","bleed","iosFix","androidFix","overScrollFix","mirrorContainer","boxOffsetTop","docHeight","maxOffset","minOffset","imageHeightMin","boxHeight","imageOffsetMin","imageWidth","boxWidth","imageHeight","overScroll","scrollBottom","boxOffsetBottom","boxOffsetLeft","offsetBaseTop","mirrorTop","maxWidth","winWidth","sliders","isReady","isFresh","isBusy","$doc","$win","loadDimensions","loadScrollPosition","winScrollTop","scrollTopMax","scrollLeftMax","lastPosition","frameLoop","configure","requestRender","parallaxElement","old","$this","clamp","useNativeClamp","splitOnChars","truncationChar","truncationHTML","sty","originalText","supportsNativeClamp","clampValue","isCSSValue","re","availHeight","lineHeight","getLineHeight","lh","computeStyle","truncationHTMLContainer","splitChar","getLastChild","getMaxLines","clampedText","nodeValue","chunks","lastChunk","applyEllipsis","truncate","original","clamped","changeOption","field","toJSON","description","fileName","lineNumber","columnNumber","defineProperties","customProps","axiosError","toFlatObject","write","domain","secure","cookie","isNumber","toGMTString","read","backTop","checkBackToTop","windowTop","scrollElement","scrolling","scrollEl","currentTime","animateScroll","timestamp","final","dataElement","scrollDuration","scrollOffset","moveFocus","isAbsoluteURL","combineURLs","requestedURL","VERSION","thing","deprecatedWarnings","formatMessage","ERR_DEPRECATED","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","CancelToken","executor","resolvePromise","token","_listeners","onfulfilled","_resolve","subscribe","unsubscribe","factory","ask","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","docElem","currentElement","currentInput","currentIntent","currentTimestamp","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","keydown","keyup","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","mousePos","pointerMap","2","3","4","addListeners","setPersist","PointerEvent","setInput","setIntent","MSPointerEvent","detectWheel","setElement","clearElement","sessionStorage","getItem","doUpdate","eventKey","pointerType","ignoreMatch","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","checkClosest","fireFunctions","detectScrolling","setItem","touchIsValid","onmousewheel","tag","ElementPrototype","parentElement","objPos","clearStorage","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","Infinity","rt","LN2","settle","cookies","parseHeaders","isURLSameOrigin","parseProtocol","onCanceled","requestData","requestHeaders","done","auth","username","password","unescape","Authorization","btoa","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","onreadystatechange","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","send","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","checked","copy","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","list","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","stringtrim","base64clean","dst","wpSoupGetBlocksOnPage","blocks","wpSoupGetBlocksFromBlock","block","blockType","notDefined","wp_soup_deprecated_blocks","available_blocks","blocks_in_page","priceToggle","priceContent","extraPriceContent","priceBlock","priceBlocks","buttonWC","buttonWCHref","buttonHref","extraOptions","selectedOptionsID","selectedOptions","optionName","optionID","firstPriceNode","secondPriceNode","optionPrice","optionPrice2","firstPrice","newFirstPriceHTML","secondPrice","secondPriceHTML","optionsString","ignoreDuplicateOf","line","fns","kindOf","kindOfTest","getPrototypeOf","isFunction","TypedArray","pipe","product","assignValue","stripBOM","content","superConstructor","sourceObj","destObj","merged","getOwnPropertyNames","searchString","jQuery","normalizedName","createInstance","defaultConfig","Cancel","promises","spread"],"mappings":"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","file":"/dist/js/site/veenstrayachts.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/v/veenstrayachts.nl/vhosts/www/htdocs/content/mu-plugins/wp-soup-plugin/node_modules/axios\";\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n () => {\n const favoriteButtons = document.querySelectorAll(\".favorite-button\");\n for (const button of favoriteButtons) {\n button.addEventListener(\n \"click\",\n function (event) {\n const postID = this.dataset.postId;\n if (!postID) {\n return;\n }\n\n const action = this.dataset.action;\n if (action === \"add\") {\n addToFavorites(postID, button);\n } else if (action === \"remove\") {\n removeFromFavorites(postID, button);\n }\n },\n { passive: true }\n );\n }\n\n function addToFavorites(postID, button) {\n let formData = new FormData();\n formData.append(\"action\", \"add_to_favorites\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"post_id\", postID);\n\n axios.post(themosis.ajaxurl, formData).then((response) => {\n if (response.data.success) {\n button.classList.add(\"is-favorited\");\n button.querySelector(\"svg\").outerHTML = themosis.wpsoup.favorites.button_icon_favorited;\n button.dataset.action = \"remove\";\n }\n });\n }\n\n function removeFromFavorites(postID, button) {\n let formData = new FormData();\n formData.append(\"action\", \"remove_from_favorites\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"post_id\", postID);\n\n axios.post(themosis.ajaxurl, formData).then((response) => {\n if (response.data.success) {\n button.classList.remove(\"is-favorited\");\n button.querySelector(\"svg\").outerHTML = themosis.wpsoup.favorites.button_icon;\n button.dataset.action = \"add\";\n }\n });\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\n\nwindow.addEventListener(\n \"load\",\n () => {\n if (Foundation.MediaQuery.atLeast(\"large\")) {\n const directions = [\"left\", \"right\"];\n directions.forEach((direction) => {\n const columns = $(`.wp-block-column.half-width-image-${direction}`);\n if (columns.length) {\n columns.each(function () {\n const column = $(this);\n const container = $(this).closest(\".wp-block-ms-container\");\n const containerId = container.attr(\"id\");\n const img = $(this).find(\"img\");\n let src = img.attr(\"src\");\n if (typeof src === \"undefined\") {\n return;\n }\n\n if (typeof LazyLoad === \"function\") {\n if (!src.includes(\"data:image/svg+xml\")) {\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n }\n\n img.on(\"load\", function () {\n src = img.attr(\"src\");\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n });\n } else {\n if (!src.includes(\"data:image/svg+xml\")) {\n img.parent().css(\"display\", \"none\");\n column.append(\n ``\n );\n }\n }\n });\n }\n });\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n () => {\n /**\n * Add submenu toggle functionality.\n */\n const menus = document.querySelectorAll(\".js-ms-has-submenu\");\n let i = 0;\n // For every menu item with a submenu.\n for (const menu of menus) {\n // Apply id for toggling purposes.\n const randomID = \"id-\" + i++;\n const submenu = menu.querySelector(\".submenu\");\n if (submenu) {\n submenu.setAttribute(\"id\", randomID);\n }\n const toggle = menu.querySelector(\".toggle\");\n if (toggle) {\n toggle.setAttribute(\"data-toggle\", randomID);\n }\n\n // On toggling.\n $(`#${randomID}`).on(\"on.zf.toggler off.zf.toggler\", function (event) {\n if (event.target !== this) return;\n\n switch (event.type) {\n case \"on\":\n $(this).slideDown({\n start: function () {\n $(this).css({\n display: \"flex\",\n });\n },\n });\n break;\n case \"off\":\n $(this).slideUp();\n break;\n }\n\n // Recalculate sticky height if sticky exists.\n if ($(\".ms-menu .sticky\").length) {\n $(\".ms-menu .sticky\").foundation(\"_calc\", true);\n }\n });\n }\n\n // Recalculate sticky height on toggling submenu.\n $(\".menu-mobile\").on(\"on.zf.toggler off.zf.toggler\", function (event) {\n if (event.target !== this) return;\n\n switch (event.type) {\n case \"on\":\n $(this).slideDown();\n break;\n case \"off\":\n $(this).slideUp();\n break;\n }\n\n // Recalculate sticky height if sticky exists.\n if ($(\".ms-menu .sticky\").length) {\n $(\".ms-menu .sticky\").foundation(\"_calc\", true);\n }\n });\n\n // Properly update the ARIA states on focus (keyboard) and mouse over events.\n $('[role=\"menubar\"]').on(\"focus.aria mouseenter.aria\", '[aria-haspopup=\"true\"]', (event) => {\n $(event.currentTarget).attr(\"aria-expanded\", true);\n });\n\n // Properly update the ARIA states on blur (keyboard) and mouse out events.\n $('[role=\"menubar\"]').on(\"blur.aria mouseleave.aria\", '[aria-haspopup=\"true\"]', (event) => {\n $(event.currentTarget).attr(\"aria-expanded\", false);\n });\n\n const overlayToggles = document.querySelectorAll(\".trigger-overlay\");\n for (const toggle of overlayToggles) {\n toggle.addEventListener(\n \"click\",\n () => {\n const body = document.querySelector(\"body\");\n const logo = document.querySelector(\".logo-image-overlay\");\n const logoMobile = document.querySelector(\".logo-mobile-image-overlay\");\n const language = document.querySelector(\".language-block\");\n const overlay = document.querySelector(\".top-bar-overlay\");\n const overlayItems = overlay.querySelectorAll(\"li\");\n if (overlay.classList.contains(\"visible\")) {\n body.classList.remove(\"overlay-visible\");\n overlay.classList.remove(\"visible\");\n if (logo) {\n logo.classList.remove(\"fadeInUp\");\n }\n if (logoMobile) {\n logoMobile.classList.remove(\"fadeInUp\");\n }\n if (language) {\n language.classList.remove(\"fadeInUp\");\n }\n for (const li of overlayItems) {\n li.classList.remove(\"fadeInUp\");\n }\n } else {\n body.classList.add(\"overlay-visible\");\n overlay.classList.add(\"visible\");\n if (logo) {\n logo.classList.add(\"fadeInUp\");\n }\n if (logoMobile) {\n logoMobile.classList.add(\"fadeInUp\");\n }\n if (language) {\n language.classList.add(\"fadeInUp\");\n }\n for (const li of overlayItems) {\n li.classList.add(\"fadeInUp\");\n }\n }\n },\n { passive: true }\n );\n }\n\n const toggleArrow = document.querySelector(\".hide.icon-arrow\");\n if (toggleArrow) {\n const submenuTogglesCheckInterval = setInterval(function () {\n const submenuToggles = document.getElementsByClassName(\"submenu-toggle\");\n\n if (submenuToggles.length !== 0) {\n for (let toggle of submenuToggles) {\n if (toggle.getElementsByTagName(\"svg\").length === 0) {\n toggle.innerHTML += toggleArrow.innerHTML;\n }\n }\n\n clearInterval(submenuTogglesCheckInterval);\n }\n });\n }\n\n const searchBlockButton = document.querySelector(\".search-block-button\");\n const searchFormBlock = document.querySelector(\".search-form-block\");\n if (searchBlockButton) {\n searchBlockButton.addEventListener(\n \"click\",\n () => {\n searchBlockButton.classList.toggle(\"visible\");\n if (searchFormBlock) {\n searchFormBlock.classList.toggle(\"visible\");\n }\n },\n { passive: true }\n );\n }\n },\n { passive: true }\n);\n","import $ from \"jquery\";\nimport Swiper from \"swiper\";\n\nif ($(\".woocommerce .product-image-slider\").length) {\n const galleryThumbs = new Swiper(\".woocommerce .product-thumbnail-slider\", {\n slidesPerView: 5,\n freeMode: true,\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n scrollbar: {\n el: \".swiper-scrollbar\",\n hide: true,\n },\n });\n\n if ($(\".woocommerce .product-thumbnail-slider\").length) {\n const galleryTop = new Swiper(\".woocommerce .product-image-slider\", {\n autoHeight: true,\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\",\n },\n thumbs: {\n swiper: galleryThumbs,\n },\n });\n }\n}\n\n$(document).on(\"change input\", \".woocommerce-cart-form .cart_item :input\", function (e) {\n $('.woocommerce-cart-form :input[name=\"update_cart\"]').prop(\"disabled\", false);\n});\n\n$(document.body).on(\"change blur\", \"form.woocommerce-cart-form .qty-field select\", function (e) {\n const select = $(this);\n const value = select.val();\n const parent = select.parent();\n parent.find(\"input\").val(value);\n});\n","import $ from \"jquery\";\n\nif (wp && wp.data) {\n if ($(window).width() > 600 && $(\"body\").hasClass(\"custom-admin-styling\")) {\n $(\"html\").css(\"padding-top\", \"50px\");\n }\n\n $(window).on(\"resize\", () => {\n if ($(\"body\").hasClass(\"custom-admin-styling\")) {\n if ($(window).width() > 600) {\n if ($(\"html\").css(\"padding-top\") != \"50px\") {\n $(\"html\").css(\"padding-top\", \"50px\");\n }\n } else {\n $(\"html\").css(\"padding-top\", \"\");\n }\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n const gutenbergLoadCheck = setInterval(() => {\n const anchors = $(\"[data-block] a\");\n if (anchors.length > 0) {\n anchors.on(\"click\", (e) => {\n e.preventDefault();\n });\n\n clearInterval(gutenbergLoadCheck);\n }\n }, 100);\n\n const editPost = wp.data.select(\"core/edit-post\");\n if (editPost) {\n editPost.isFeatureActive(\"fullscreenMode\") &&\n wp.data.dispatch(\"core/edit-post\").toggleFeature(\"fullscreenMode\");\n }\n });\n}\n","import $ from \"jquery\";\nimport axios from \"axios\";\n\n$(() => {\n $(\".load-more\").on(\"click\", function () {\n const id = $(this).data(\"id\");\n const fields = $(this).data(\"fields\");\n if (!fields) {\n return;\n }\n\n const initialOffset = $(this).data(\"initial-offset\") ?? 0;\n const offset = $(`#${id} .related-pages .related-page-card:not([class$=\"included\"])`).length ?? 0;\n const masonry = $(this).data(\"is-masonry\") ?? 0;\n const slider = $(this).data(\"is-slider\") ?? 0;\n const textLoadMore = $(this).data(\"text-load-more\");\n const textLoading = $(this).data(\"text-loading\");\n const textLoadFailed = $(this).data(\"text-load-failed\");\n\n // Data to send back to WordPress.\n const formData = new FormData();\n formData.append(\"action\", \"load_posts_by_ajax\");\n formData.append(\"security\", themosis.nonce);\n formData.append(\"offset\", initialOffset + offset);\n formData.append(\"fields\", JSON.stringify(fields));\n\n // Change button text to loading text.\n $(`#${id} .load-more`).html(textLoading);\n\n // Do request.\n axios\n .post(themosis.ajaxurl, formData)\n .then(({ data }) => {\n // Create a placeholder div to store retrieved posts.\n const cards = document.createElement(\"div\");\n cards.innerHTML = data;\n\n // If retrieved posts length is smaller than the amount to load,\n // hide the button, else replace text with initial text.\n if (cards.children.length < fields.ajax_amount_to_load) {\n $(`#${id} .load-more`).remove();\n } else {\n $(`#${id} .load-more`).html(textLoadMore);\n }\n\n // Append loaded posts to the end.\n $(`#${id} .related-pages`).append(data);\n\n // Reinit masonry or equalizer.\n if (slider) {\n const instance = cardSliders.find((x) => x.id === id).instance;\n instance.update();\n }\n\n // Reinit masonry or equalizer.\n if (masonry) {\n const instance = masonryGrids.find((x) => x.id === id).instance;\n instance.runOnImageLoad(function () {\n instance.recalculate(true);\n }, true);\n } else {\n Foundation.reInit(\"equalizer\");\n }\n })\n .catch((error) => {\n $(`#${id} .load-more`).html(textLoadFailed);\n });\n });\n});\n","/**\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","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 Swiper, { Navigation, Pagination, Scrollbar, Autoplay, Thumbs, Controller, EffectCoverflow } from \"swiper\";\nSwiper.use([Navigation, Pagination, Scrollbar, Autoplay, Thumbs, Controller, EffectCoverflow]);\n\n/**\n * Dynamically intialize the `.usp-slider`'s.\n */\n\n\n function msInitializeUSPSlider() {\n const slider = document.querySelector(`.usp-slider`);\n if (slider) {\n let options = slider.dataset.sliderOptions;\n options = JSON.parse(options);\n const uspSlider = new Swiper(`.usp-slider`, options);\n }\n}\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n function () {\n msInitializeUSPSlider();\n },\n { passive: true }\n);\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","/**\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 }\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 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}","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}","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 $ from \"/srv/www/v/veenstrayachts.nl/vhosts/www/htdocs/content/mu-plugins/wp-soup-plugin/node_modules/jquery\";\n// import Swiper JS\nimport Swiper, { Navigation, Pagination, Scrollbar, Autoplay, Thumbs, Controller, EffectCoverflow } from \"swiper\";\nSwiper.use([Navigation, Pagination, Scrollbar, Autoplay, Thumbs, Controller, EffectCoverflow]);\n\n\n$(document).ready(function () {\n $(\".print-summary-button\").click(function () {\n const printContent = document.querySelector(\".print-summary\");\n const print = window.open(\n \"\",\n \"\",\n \"left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0\"\n );\n print.document.write(printContent.innerHTML);\n print.document.close();\n print.focus();\n print.print();\n });\n\n $('.has-fixed-layout > tbody > tr').each(function () {\n if ($(this).find('.has-text-align-left').is(':empty')) {\n $(this).hide();\n }\n });\n \n});\nvar slider = new Swiper ('.gallery-slider', {\n slidesPerView: 1,\n centeredSlides: true,\n loop: true,\n loopedSlides: 5, \n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n});\n\nvar thumbs = new Swiper ('.gallery-thumbs', {\n slidesPerView: 5,\n spaceBetween: 10,\n centeredSlides: true,\n loop: true,\n slideToClickedSlide: true,\n});\n\n\n\n\nslider.controller.control = thumbs;\nthumbs.controller.control = slider;\n\n//Print chrome image for images\nfunction PopUp(data) {\n var mywindow = window.open('','','left=0,top=0,width=950,height=600,toolbar=0,scrollbars=0,status=0,addressbar=0');\n\n var is_chrome = Boolean(mywindow.chrome);\n var isPrinting = false;\n mywindow.document.write(data);\n mywindow.document.close(); \n\n\n if (is_chrome) {\n mywindow.onload = function() { // wait until all resources loaded \n isPrinting = true;\n mywindow.focus(); \n mywindow.print(); \n mywindow.close();\n isPrinting = false;\n };\n setTimeout(function () { if(!isPrinting){mywindow.print();mywindow.close();} }, 300);\n }\n else {\n mywindow.document.close(); \n mywindow.focus(); \n mywindow.print();\n mywindow.close();\n }\n\n return true;\n}\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 }\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 init();\n update();\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 Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\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 }\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 init();\n render();\n update();\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 Object.assign(swiper.pagination, {\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 }\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 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) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.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 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 disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\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 Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy\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 const proceed = () => {\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 };\n\n clearTimeout(timeout);\n\n if (delay === 0) {\n proceed();\n return;\n }\n\n timeout = nextTick(() => {\n proceed();\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}","/* 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}","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}","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function setCookie(cname, cvalue, exdays) {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n const expires = \"expires=\" + d.toUTCString();\n document.cookie = cname + \"=\" + cvalue + \";\" + expires;\n}\n\nconst translationNotice = document.querySelector(\".automatic-translation-notice\");\nif (translationNotice) {\n translationNotice\n .querySelector(\"button\")\n .addEventListener(\"click\", (e) => setCookie(\"hide-automatic-translation-notice\", true, 7), { passive: true });\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","window.addEventListener(\n \"load\",\n () => {\n // Do IE stuff\n if (window.document.documentMode) {\n if (Foundation.MediaQuery.current !== \"small\") {\n const columns = document.querySelectorAll(\".wp-block-column\");\n for (const column of columns) {\n const flexBasis = column.style.flexBasis;\n const isMargin = column.parentElement.classList.contains(\"margin\");\n if (flexBasis && !isMargin) {\n column.style.setAttribute(\"width\", flexBasis);\n column.style.setProperty(\"flex-basis\", \"auto\", \"important\");\n } else if (flexBasis && isMargin) {\n column.style.setAttribute(\"width\", `calc(${flexBasis} - 2rem)`);\n column.style.setProperty(\"flex-basis\", \"auto\", \"important\");\n }\n }\n }\n } else {\n if (Foundation.MediaQuery.current !== \"small\") {\n const columns = document.querySelectorAll(\".wp-block-column\");\n for (const column of columns) {\n const flexBasis = column.style.flexBasis;\n const isMargin = column.parentElement.classList.contains(\"margin\");\n if (flexBasis && isMargin) {\n column.style.setProperty(\"flex-basis\", `calc(${flexBasis} - 2rem)`, \"important\");\n }\n }\n }\n }\n },\n { passive: true }\n);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","/**\n * Set scrollbar sizes\n */\ndocument.addEventListener(\n \"DOMContentLoaded\",\n () => {\n function setScrollbarSize() {\n // Add temporary box to wrapper.\n let scrollbox = document.createElement(\"div\");\n // Make box scrollable.\n scrollbox.style.overflow = \"scroll\";\n // Append box to document.\n document.body.appendChild(scrollbox);\n // Measure inner width of box.\n let scrollBarWidth = scrollbox.offsetWidth - scrollbox.clientWidth;\n // Remove box.\n document.body.removeChild(scrollbox);\n\n if (!(document.body.scrollHeight > window.innerHeight)) {\n scrollBarWidth = 0;\n }\n\n if (scrollBarWidth !== 0) {\n document.body.classList.add(\"has-scrollbar\");\n document.body.setAttribute(\"style\", `--scroll-bar: ${scrollBarWidth}px`);\n } else {\n document.body.classList.remove(\"has-scrollbar\");\n }\n }\n\n setScrollbarSize();\n window.addEventListener(\"resize\", setScrollbarSize, { passive: true });\n\n const epve = document.querySelector(\".edit-post-visual-editor\");\n if (epve !== null) {\n function getEditorWidth() {\n const width = epve.offsetWidth;\n document.body.setAttribute(\"style\", `--editor-width: ${width - 2}px`);\n }\n\n getEditorWidth();\n window.addEventListener(\"resize\", getEditorWidth, { passive: true });\n }\n\n // const adminToolbar = document.querySelector(\"#wpadminbar\");\n // if (adminToolbar !== null) {\n // const html = document.querySelector(\"html:not(.wp-toolbar)\");\n // if (html !== null) {\n // html.setAttribute(\"style\", \"margin-top: 50px !important;\");\n // }\n // }\n },\n { passive: true }\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","function iOS() {\n return (\n (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)) &&\n !window.MSStream\n );\n}\n\nwindow.addEventListener(\"load\", () => {\n if (iOS()) {\n const containers = document.querySelectorAll(\".wp-block-ms-container\");\n if (containers.length) {\n [...containers].forEach((container) =>\n container.style.setProperty(\"background-attachment\", \"scroll\", \"important\")\n );\n }\n }\n});\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","/**\n * Dynamically intialize the `.review-slider`'s.\n */\nfunction msInitializeReviewSlider() {\n const slider = document.querySelector(`.review-slider`);\n if (slider) {\n let options = slider.dataset.sliderOptions;\n options = JSON.parse(options);\n const reviewSlider = new Swiper(`.review-slider`, options);\n }\n}\n\ndocument.addEventListener(\n `DOMContentLoaded`,\n function () {\n msInitializeReviewSlider();\n },\n { passive: true }\n);\n\nif (typeof acf !== \"undefined\") {\n acf.addAction(`render_block_preview`, function ($el, attributes) {\n msInitializeReviewSlider();\n });\n}\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
      `);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
      `);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","document.addEventListener(\n \"DOMContentLoaded\",\n () => {\n // Load all blocks on the page.\n const featuredMenuItems = document.querySelectorAll(\".ms_featured-menu-items\");\n for (menu of featuredMenuItems) {\n // Get all previews and menu links from current block.\n const previews = menu.querySelectorAll(\".preview\");\n const menuLinks = menu.querySelectorAll(\"a\");\n for (link of menuLinks) {\n // Get the target.\n const target = link.dataset?.target;\n link.addEventListener(\n \"mouseover\",\n (event) => {\n for (preview of previews) {\n if (preview.dataset?.content === target) {\n preview.classList.remove(\"hide\");\n } else {\n preview.classList.add(\"hide\");\n }\n }\n },\n { passive: true }\n );\n }\n }\n },\n { passive: true }\n);\n","/*!\n * parallax.js v1.5.0 (http://pixelcog.github.io/parallax.js/)\n * @copyright 2016 PixelCog, Inc.\n * @license MIT (https://github.com/pixelcog/parallax.js/blob/master/LICENSE)\n */\n\n(function ($, window, document, undefined) {\n // Polyfill for requestAnimationFrame\n // via: https://gist.github.com/paulirish/1579671\n\n (function () {\n var lastTime = 0;\n var vendors = [\"ms\", \"moz\", \"webkit\", \"o\"];\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x] + \"RequestAnimationFrame\"];\n window.cancelAnimationFrame =\n window[vendors[x] + \"CancelAnimationFrame\"] || window[vendors[x] + \"CancelRequestAnimationFrame\"];\n }\n\n if (!window.requestAnimationFrame)\n window.requestAnimationFrame = function (callback) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n if (!window.cancelAnimationFrame)\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n })();\n\n // Parallax Constructor\n\n function Parallax(element, options) {\n var self = this;\n\n if (typeof options == \"object\") {\n delete options.refresh;\n delete options.render;\n $.extend(this, options);\n }\n\n this.$element = $(element);\n\n if (!this.imageSrc && this.$element.is(\"img\")) {\n this.imageSrc = this.$element.attr(\"src\");\n }\n\n var positions = (this.position + \"\").toLowerCase().match(/\\S+/g) || [];\n\n if (positions.length < 1) {\n positions.push(\"center\");\n }\n if (positions.length == 1) {\n positions.push(positions[0]);\n }\n\n if (positions[0] == \"top\" || positions[0] == \"bottom\" || positions[1] == \"left\" || positions[1] == \"right\") {\n positions = [positions[1], positions[0]];\n }\n\n if (this.positionX !== undefined) positions[0] = this.positionX.toLowerCase();\n if (this.positionY !== undefined) positions[1] = this.positionY.toLowerCase();\n\n self.positionX = positions[0];\n self.positionY = positions[1];\n\n if (this.positionX != \"left\" && this.positionX != \"right\") {\n if (isNaN(parseInt(this.positionX))) {\n this.positionX = \"center\";\n } else {\n this.positionX = parseInt(this.positionX);\n }\n }\n\n if (this.positionY != \"top\" && this.positionY != \"bottom\") {\n if (isNaN(parseInt(this.positionY))) {\n this.positionY = \"center\";\n } else {\n this.positionY = parseInt(this.positionY);\n }\n }\n\n this.position =\n this.positionX +\n (isNaN(this.positionX) ? \"\" : \"px\") +\n \" \" +\n this.positionY +\n (isNaN(this.positionY) ? \"\" : \"px\");\n\n if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {\n if (this.imageSrc && this.iosFix && !this.$element.is(\"img\")) {\n this.$element.css({\n backgroundImage: 'url(\"' + this.imageSrc + '\")',\n backgroundSize: \"cover\",\n backgroundPosition: this.position,\n });\n }\n return this;\n }\n\n if (navigator.userAgent.match(/(Android)/)) {\n if (this.imageSrc && this.androidFix && !this.$element.is(\"img\")) {\n this.$element.css({\n backgroundImage: 'url(\"' + this.imageSrc + '\")',\n backgroundSize: \"cover\",\n backgroundPosition: this.position,\n });\n }\n return this;\n }\n\n this.$mirror = $(\"
      \").prependTo(this.mirrorContainer);\n\n var slider = this.$element.find(\">.parallax-slider\");\n var sliderExisted = false;\n\n if (slider.length == 0) this.$slider = $(\"\").prependTo(this.$mirror);\n else {\n this.$slider = slider.prependTo(this.$mirror);\n sliderExisted = true;\n }\n\n this.$mirror.addClass(\"parallax-mirror\").css({\n visibility: \"hidden\",\n zIndex: this.zIndex,\n position: \"fixed\",\n top: 0,\n left: 0,\n overflow: \"hidden\",\n });\n\n this.$slider.addClass(\"parallax-slider\").one(\"load\", function () {\n if (!self.naturalHeight || !self.naturalWidth) {\n self.naturalHeight = this.naturalHeight || this.height || 1;\n self.naturalWidth = this.naturalWidth || this.width || 1;\n }\n self.aspectRatio = self.naturalWidth / self.naturalHeight;\n\n Parallax.isSetup || Parallax.setup();\n Parallax.sliders.push(self);\n Parallax.isFresh = false;\n Parallax.requestRender();\n });\n\n if (!sliderExisted) this.$slider[0].src = this.imageSrc;\n\n if ((this.naturalHeight && this.naturalWidth) || this.$slider[0].complete || slider.length > 0) {\n this.$slider.trigger(\"load\");\n }\n }\n\n // Parallax Instance Methods\n\n $.extend(Parallax.prototype, {\n speed: 0.2,\n bleed: 0,\n zIndex: -100,\n iosFix: true,\n androidFix: true,\n position: \"center\",\n overScrollFix: false,\n mirrorContainer: \"body\",\n\n refresh: function () {\n this.boxWidth = this.$element.outerWidth();\n this.boxHeight = this.$element.outerHeight() + this.bleed * 2;\n this.boxOffsetTop = this.$element.offset().top - this.bleed;\n this.boxOffsetLeft = this.$element.offset().left;\n this.boxOffsetBottom = this.boxOffsetTop + this.boxHeight;\n\n var winHeight = Parallax.winHeight;\n var docHeight = Parallax.docHeight;\n var maxOffset = Math.min(this.boxOffsetTop, docHeight - winHeight);\n var minOffset = Math.max(this.boxOffsetTop + this.boxHeight - winHeight, 0);\n var imageHeightMin = (this.boxHeight + (maxOffset - minOffset) * (1 - this.speed)) | 0;\n var imageOffsetMin = ((this.boxOffsetTop - maxOffset) * (1 - this.speed)) | 0;\n var margin;\n\n if (imageHeightMin * this.aspectRatio >= this.boxWidth) {\n this.imageWidth = (imageHeightMin * this.aspectRatio) | 0;\n this.imageHeight = imageHeightMin;\n this.offsetBaseTop = imageOffsetMin;\n\n margin = this.imageWidth - this.boxWidth;\n\n if (this.positionX == \"left\") {\n this.offsetLeft = 0;\n } else if (this.positionX == \"right\") {\n this.offsetLeft = -margin;\n } else if (!isNaN(this.positionX)) {\n this.offsetLeft = Math.max(this.positionX, -margin);\n } else {\n this.offsetLeft = (-margin / 2) | 0;\n }\n } else {\n this.imageWidth = this.boxWidth;\n this.imageHeight = (this.boxWidth / this.aspectRatio) | 0;\n this.offsetLeft = 0;\n\n margin = this.imageHeight - imageHeightMin;\n\n if (this.positionY == \"top\") {\n this.offsetBaseTop = imageOffsetMin;\n } else if (this.positionY == \"bottom\") {\n this.offsetBaseTop = imageOffsetMin - margin;\n } else if (!isNaN(this.positionY)) {\n this.offsetBaseTop = imageOffsetMin + Math.max(this.positionY, -margin);\n } else {\n this.offsetBaseTop = (imageOffsetMin - margin / 2) | 0;\n }\n }\n },\n\n render: function () {\n var scrollTop = Parallax.scrollTop;\n var scrollLeft = Parallax.scrollLeft;\n var overScroll = this.overScrollFix ? Parallax.overScroll : 0;\n var scrollBottom = scrollTop + Parallax.winHeight;\n\n if (this.boxOffsetBottom > scrollTop && this.boxOffsetTop <= scrollBottom) {\n this.visibility = \"visible\";\n this.mirrorTop = this.boxOffsetTop - scrollTop;\n this.mirrorLeft = this.boxOffsetLeft - scrollLeft;\n this.offsetTop = this.offsetBaseTop - this.mirrorTop * (1 - this.speed);\n } else {\n this.visibility = \"hidden\";\n }\n\n this.$mirror.css({\n transform: \"translate3d(\" + this.mirrorLeft + \"px, \" + (this.mirrorTop - overScroll) + \"px, 0px)\",\n visibility: this.visibility,\n height: this.boxHeight,\n width: this.boxWidth,\n });\n\n this.$slider.css({\n transform: \"translate3d(\" + this.offsetLeft + \"px, \" + this.offsetTop + \"px, 0px)\",\n position: \"absolute\",\n height: this.imageHeight,\n width: this.imageWidth,\n maxWidth: \"none\",\n });\n },\n });\n\n // Parallax Static Methods\n\n $.extend(Parallax, {\n scrollTop: 0,\n scrollLeft: 0,\n winHeight: 0,\n winWidth: 0,\n docHeight: 1 << 30,\n docWidth: 1 << 30,\n sliders: [],\n isReady: false,\n isFresh: false,\n isBusy: false,\n\n setup: function () {\n if (this.isReady) return;\n\n var self = this;\n\n var $doc = $(document),\n $win = $(window);\n\n var loadDimensions = function () {\n Parallax.winHeight = $win.height();\n Parallax.winWidth = $win.width();\n Parallax.docHeight = $doc.height();\n Parallax.docWidth = $doc.width();\n };\n\n var loadScrollPosition = function () {\n var winScrollTop = $win.scrollTop();\n var scrollTopMax = Parallax.docHeight - Parallax.winHeight;\n var scrollLeftMax = Parallax.docWidth - Parallax.winWidth;\n Parallax.scrollTop = Math.max(0, Math.min(scrollTopMax, winScrollTop));\n Parallax.scrollLeft = Math.max(0, Math.min(scrollLeftMax, $win.scrollLeft()));\n Parallax.overScroll = Math.max(winScrollTop - scrollTopMax, Math.min(winScrollTop, 0));\n };\n\n $win.on(\"resize.px.parallax load.px.parallax\", function () {\n loadDimensions();\n self.refresh();\n Parallax.isFresh = false;\n Parallax.requestRender();\n }).on(\"scroll.px.parallax load.px.parallax\", function () {\n loadScrollPosition();\n Parallax.requestRender();\n });\n\n loadDimensions();\n loadScrollPosition();\n\n this.isReady = true;\n\n var lastPosition = -1;\n\n function frameLoop() {\n if (lastPosition == window.pageYOffset) {\n // Avoid overcalculations\n window.requestAnimationFrame(frameLoop);\n return false;\n } else lastPosition = window.pageYOffset;\n\n self.render();\n window.requestAnimationFrame(frameLoop);\n }\n\n frameLoop();\n },\n\n configure: function (options) {\n if (typeof options == \"object\") {\n delete options.refresh;\n delete options.render;\n $.extend(this.prototype, options);\n }\n },\n\n refresh: function () {\n $.each(this.sliders, function () {\n this.refresh();\n });\n this.isFresh = true;\n },\n\n render: function () {\n this.isFresh || this.refresh();\n $.each(this.sliders, function () {\n this.render();\n });\n },\n\n requestRender: function () {\n var self = this;\n self.render();\n self.isBusy = false;\n },\n destroy: function (el) {\n var i,\n parallaxElement = $(el).data(\"px.parallax\");\n parallaxElement.$mirror.remove();\n for (i = 0; i < this.sliders.length; i += 1) {\n if (this.sliders[i] == parallaxElement) {\n this.sliders.splice(i, 1);\n }\n }\n $(el).data(\"px.parallax\", false);\n if (this.sliders.length === 0) {\n $(window).off(\"scroll.px.parallax resize.px.parallax load.px.parallax\");\n this.isReady = false;\n Parallax.isSetup = false;\n }\n },\n });\n\n // Parallax Plugin Definition\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var options = typeof option == \"object\" && option;\n\n if (this == window || this == document || $this.is(\"body\")) {\n Parallax.configure(options);\n } else if (!$this.data(\"px.parallax\")) {\n options = $.extend({}, $this.data(), options);\n $this.data(\"px.parallax\", new Parallax(this, options));\n } else if (typeof option == \"object\") {\n $.extend($this.data(\"px.parallax\"), options);\n }\n if (typeof option == \"string\") {\n if (option == \"destroy\") {\n Parallax.destroy(this);\n } else {\n Parallax[option]();\n }\n }\n });\n }\n\n var old = $.fn.parallax;\n\n $.fn.parallax = Plugin;\n $.fn.parallax.Constructor = Parallax;\n\n // Parallax No Conflict\n\n $.fn.parallax.noConflict = function () {\n $.fn.parallax = old;\n return this;\n };\n\n // Parallax Data-API\n\n $(function () {\n $('[data-parallax=\"scroll\"]').parallax();\n });\n})(jQuery, window, document);\n","/*!\n * Clamp.js 0.5.1\n *\n * Copyright 2011-2013, Joseph Schmitt http://joe.sh\n * Released under the WTFPL license\n * http://sam.zoy.org/wtfpl/\n */\n\n(function() {\n /**\n * Clamps a text node.\n * @param {HTMLElement} element. Element containing the text node to clamp.\n * @param {Object} options. Options to pass to the clamper.\n */\n function clamp(element, options) {\n options = options || {};\n\n var self = this,\n win = window,\n opt = {\n clamp: options.clamp || 2,\n useNativeClamp:\n typeof options.useNativeClamp != \"undefined\"\n ? options.useNativeClamp\n : true,\n splitOnChars: options.splitOnChars || [\".\", \"-\", \"–\", \"—\", \" \"], //Split on sentences (periods), hypens, en-dashes, em-dashes, and words (spaces).\n animate: options.animate || false,\n truncationChar: options.truncationChar || \"…\",\n truncationHTML: options.truncationHTML\n },\n sty = element.style,\n originalText = element.innerHTML,\n supportsNativeClamp =\n typeof element.style.webkitLineClamp != \"undefined\",\n clampValue = opt.clamp,\n isCSSValue =\n clampValue.indexOf &&\n (clampValue.indexOf(\"px\") > -1 ||\n clampValue.indexOf(\"em\") > -1),\n truncationHTMLContainer;\n\n if (opt.truncationHTML) {\n truncationHTMLContainer = document.createElement(\"span\");\n truncationHTMLContainer.innerHTML = opt.truncationHTML;\n }\n\n // UTILITY FUNCTIONS __________________________________________________________\n\n /**\n * Return the current style for an element.\n * @param {HTMLElement} elem The element to compute.\n * @param {string} prop The style property.\n * @returns {number}\n */\n function computeStyle(elem, prop) {\n if (!win.getComputedStyle) {\n win.getComputedStyle = function(el, pseudo) {\n this.el = el;\n this.getPropertyValue = function(prop) {\n var re = /(\\-([a-z]){1})/g;\n if (prop == \"float\") prop = \"styleFloat\";\n if (re.test(prop)) {\n prop = prop.replace(re, function() {\n return arguments[2].toUpperCase();\n });\n }\n return el.currentStyle && el.currentStyle[prop]\n ? el.currentStyle[prop]\n : null;\n };\n return this;\n };\n }\n\n return win.getComputedStyle(elem, null).getPropertyValue(prop);\n }\n\n /**\n * Returns the maximum number of lines of text that should be rendered based\n * on the current height of the element and the line-height of the text.\n */\n function getMaxLines(height) {\n var availHeight = height || element.clientHeight,\n lineHeight = getLineHeight(element);\n\n return Math.max(Math.floor(availHeight / lineHeight), 0);\n }\n\n /**\n * Returns the maximum height a given element should have based on the line-\n * height of the text and the given clamp value.\n */\n function getMaxHeight(clmp) {\n var lineHeight = getLineHeight(element);\n return lineHeight * clmp;\n }\n\n /**\n * Returns the line-height of an element as an integer.\n */\n function getLineHeight(elem) {\n var lh = computeStyle(elem, \"line-height\");\n if (lh == \"normal\") {\n // Normal line heights vary from browser to browser. The spec recommends\n // a value between 1.0 and 1.2 of the font size. Using 1.1 to split the diff.\n lh = parseInt(computeStyle(elem, \"font-size\")) * 1.2;\n }\n return parseInt(lh);\n }\n\n // MEAT AND POTATOES (MMMM, POTATOES...) ______________________________________\n var splitOnChars = opt.splitOnChars.slice(0),\n splitChar = splitOnChars[0],\n chunks,\n lastChunk;\n\n /**\n * Gets an element's last child. That may be another node or a node's contents.\n */\n function getLastChild(elem) {\n //Current element has children, need to go deeper and get last child as a text node\n if (elem.lastChild.children && elem.lastChild.children.length > 0) {\n return getLastChild(\n Array.prototype.slice.call(elem.children).pop()\n );\n }\n //This is the absolute last child, a text node, but something's wrong with it. Remove it and keep trying\n else if (\n !elem.lastChild ||\n !elem.lastChild.nodeValue ||\n elem.lastChild.nodeValue == \"\" ||\n elem.lastChild.nodeValue == opt.truncationChar\n ) {\n elem.lastChild.parentNode.removeChild(elem.lastChild);\n return getLastChild(element);\n }\n //This is the last child we want, return it\n else {\n return elem.lastChild;\n }\n }\n\n /**\n * Removes one character at a time from the text until its width or\n * height is beneath the passed-in max param.\n */\n function truncate(target, maxHeight) {\n if (!maxHeight) {\n return;\n }\n\n /**\n * Resets global variables.\n */\n function reset() {\n splitOnChars = opt.splitOnChars.slice(0);\n splitChar = splitOnChars[0];\n chunks = null;\n lastChunk = null;\n }\n\n var nodeValue = target.nodeValue.replace(opt.truncationChar, \"\");\n\n //Grab the next chunks\n if (!chunks) {\n //If there are more characters to try, grab the next one\n if (splitOnChars.length > 0) {\n splitChar = splitOnChars.shift();\n }\n //No characters to chunk by. Go character-by-character\n else {\n splitChar = \"\";\n }\n\n chunks = nodeValue.split(splitChar);\n }\n\n //If there are chunks left to remove, remove the last one and see if\n // the nodeValue fits.\n if (chunks.length > 1) {\n // console.log('chunks', chunks);\n lastChunk = chunks.pop();\n // console.log('lastChunk', lastChunk);\n applyEllipsis(target, chunks.join(splitChar));\n }\n //No more chunks can be removed using this character\n else {\n chunks = null;\n }\n\n //Insert the custom HTML before the truncation character\n if (truncationHTMLContainer) {\n target.nodeValue = target.nodeValue.replace(\n opt.truncationChar,\n \"\"\n );\n element.innerHTML =\n target.nodeValue +\n \" \" +\n truncationHTMLContainer.innerHTML +\n opt.truncationChar;\n }\n\n //Search produced valid chunks\n if (chunks) {\n //It fits\n if (element.clientHeight <= maxHeight) {\n //There's still more characters to try splitting on, not quite done yet\n if (splitOnChars.length >= 0 && splitChar != \"\") {\n applyEllipsis(\n target,\n chunks.join(splitChar) + splitChar + lastChunk\n );\n chunks = null;\n }\n //Finished!\n else {\n return element.innerHTML;\n }\n }\n }\n //No valid chunks produced\n else {\n //No valid chunks even when splitting by letter, time to move\n //on to the next node\n if (splitChar == \"\") {\n applyEllipsis(target, \"\");\n target = getLastChild(element);\n\n reset();\n }\n }\n\n //If you get here it means still too big, let's keep truncating\n if (opt.animate) {\n setTimeout(\n function() {\n truncate(target, maxHeight);\n },\n opt.animate === true ? 10 : opt.animate\n );\n } else {\n return truncate(target, maxHeight);\n }\n }\n\n function applyEllipsis(elem, str) {\n elem.nodeValue = str + opt.truncationChar;\n }\n\n // CONSTRUCTOR ________________________________________________________________\n\n if (clampValue == \"auto\") {\n clampValue = getMaxLines();\n } else if (isCSSValue) {\n clampValue = getMaxLines(parseInt(clampValue));\n }\n\n var clampedText;\n if (supportsNativeClamp && opt.useNativeClamp) {\n sty.overflow = \"hidden\";\n sty.textOverflow = \"ellipsis\";\n sty.webkitBoxOrient = \"vertical\";\n sty.display = \"-webkit-box\";\n sty.webkitLineClamp = clampValue;\n\n if (isCSSValue) {\n sty.height = opt.clamp + \"px\";\n }\n } else {\n var height = getMaxHeight(clampValue);\n if (height <= element.clientHeight) {\n clampedText = truncate(getLastChild(element), height);\n }\n }\n\n return {\n original: originalText,\n clamped: clampedText\n };\n }\n\n window.$clamp = clamp;\n})();\n","document.addEventListener(\n \"DOMContentLoaded\",\n () => {\n const changeOption = (selector, label) => {\n const field = document.querySelector(selector);\n if (field) {\n const option = field.querySelector(\"option:first-child\");\n if (option) {\n option.innerHTML = label;\n option.disabled = true;\n }\n }\n };\n\n changeOption('#buddypress select[name$=\"day\"]', \"Geboortedag\");\n changeOption('#buddypress select[name$=\"month\"]', \"Geboortemaand\");\n changeOption('#buddypress select[name$=\"year\"]', \"Geboortejaar\");\n },\n { passive: true }\n);\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","(() => {\n const backTop = document.getElementsByClassName(\"js-back-to-top\")[0];\n if (backTop) {\n const dataElement = backTop.getAttribute(\"data-element\");\n const scrollElement = dataElement ? document.querySelector(dataElement) : window;\n\n const //scroll to top duration\n scrollDuration = parseInt(backTop.getAttribute(\"data-duration\")) || 300;\n\n const //show back-to-top if scrolling > scrollOffset\n scrollOffset = parseInt(backTop.getAttribute(\"data-offset\")) || 0;\n\n let scrolling = false;\n\n //detect click on back-to-top link\n backTop.addEventListener(\"click\", (event) => {\n event.preventDefault();\n if (!window.requestAnimationFrame) {\n scrollElement.scrollTo(0, 0);\n } else {\n dataElement ? scrollTo(0, scrollDuration, false, scrollElement) : scrollTo(0, scrollDuration);\n }\n //move the focus to the #top-element - don't break keyboard navigation\n moveFocus(document.getElementById(backTop.getAttribute(\"href\").replace(\"#\", \"\")));\n });\n\n //listen to the window scroll and update back-to-top visibility\n checkBackToTop();\n if (scrollOffset > 0) {\n scrollElement.addEventListener(\n \"scroll\",\n (event) => {\n if (!scrolling) {\n scrolling = true;\n !window.requestAnimationFrame\n ? setTimeout(() => {\n checkBackToTop();\n }, 250)\n : window.requestAnimationFrame(checkBackToTop);\n }\n },\n { passive: true }\n );\n }\n\n function checkBackToTop() {\n let windowTop = scrollElement.scrollTop || document.documentElement.scrollTop;\n if (!dataElement) {\n windowTop = window.scrollY || document.documentElement.scrollTop;\n }\n if (windowTop >= scrollOffset) {\n backTop.classList.add(\"back-to-top--is-visible\");\n } else {\n backTop.classList.remove(\"back-to-top--is-visible\");\n }\n scrolling = false;\n }\n\n function scrollTo(final, duration, cb, scrollEl) {\n const element = scrollEl || window;\n let start = element.scrollTop || document.documentElement.scrollTop;\n let currentTime = null;\n\n if (!scrollEl) start = window.scrollY || document.documentElement.scrollTop;\n\n const animateScroll = (timestamp) => {\n if (!currentTime) currentTime = timestamp;\n let progress = timestamp - currentTime;\n if (progress > duration) progress = duration;\n const val = Math.easeInOutQuad(progress, start, final - start, duration);\n element.scrollTo(0, val);\n if (progress < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n cb && cb();\n }\n };\n\n window.requestAnimationFrame(animateScroll);\n }\n\n function moveFocus(element) {\n if (!element) element = document.getElementsByTagName(\"body\")[0];\n element.focus();\n if (document.activeElement !== element) {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n }\n }\n\n Math.easeInOutQuad = function (t, b, c, d) {\n t /= d / 2;\n if (t < 1) return (c / 2) * t * t + b;\n t--;\n return (-c / 2) * (t * (t - 2) - 1) + b;\n };\n }\n})();\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.12\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = false;\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true, capture: true } : true;\n\n\t document.addEventListener('DOMContentLoaded', setPersist, true);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput, true);\n\t window.addEventListener('pointermove', setIntent, true);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput, true);\n\t window.addEventListener('MSPointerMove', setIntent, true);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput, true);\n\t window.addEventListener('mousemove', setIntent, true);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput, true);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput, true);\n\t window.addEventListener('keyup', setInput, true);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement, true);\n\t window.addEventListener('focusout', clearElement, true);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') === 'false' || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","// Add classes to blocks that normally don't have classes.\nconst addClassToBlock = (props, blockType, attributes) => {\n const notDefined = typeof props.className === \"undefined\" || !props.className ? true : false;\n\n if (blockType.name === \"core/list\") {\n return Object.assign(props, {\n className: notDefined ? `wp-block-list` : `wp-block-list ${props.className}`,\n });\n }\n\n // if (blockType.name === \"core/paragraph\") {\n // return Object.assign(props, {\n // className: notDefined\n // ? \"wp-block-paragraph\"\n // : `wp-block-paragraph ${props.className}`\n // });\n // }\n\n return props;\n};\n\nif (wp.hooks !== undefined) {\n wp.hooks.addFilter(\"blocks.getSaveContent.extraProps\", \"wp-soup/add-class-to-blocks\", addClassToBlock);\n}\n\n/**\n * returns blocks on page, all on same level (instead of innerblocks)\n * @returns [{}]\n */\nfunction wpSoupGetBlocksOnPage() {\n let blocks = [];\n // get all blocks, and call recursive function for it\n wp.data\n .select(\"core/block-editor\")\n .getBlocks()\n .forEach((block) => {\n blocks = [...blocks, ...wpSoupGetBlocksFromBlock(block)];\n });\n return blocks;\n}\n\n/**\n * recursive method for wpSoupGetBlocksOnPage()\n * @param block\n * @returns [{}]\n */\nfunction wpSoupGetBlocksFromBlock(block) {\n let blocks = [block];\n if (block.hasOwnProperty(\"innerBlocks\")) {\n block.innerBlocks.forEach((inner_block) => {\n blocks = [...blocks, ...wpSoupGetBlocksFromBlock(inner_block)];\n });\n }\n return blocks;\n}\n\nif (wp.domReady !== undefined) {\n wp.domReady(() => {\n /**\n * Deprecated blocks\n * `wp_soup_deprecated_blocks` gets shared from php, it's a constant array\n * of strings\n */\n if (typeof wp_soup_deprecated_blocks !== \"undefined\") {\n const available_blocks = wp.blocks.getBlockTypes();\n const blocks_in_page = wpSoupGetBlocksOnPage();\n\n wp_soup_deprecated_blocks.forEach((deprecated_block) => {\n // check if the deprecated block is used on this page\n const current_result = blocks_in_page.find((block) => {\n return block.name === deprecated_block;\n });\n\n // if it's on the page, set it in the deprecated blocks category\n // we do this because unregistering it would break the page.\n if (current_result !== undefined) {\n const result = available_blocks.find((block) => {\n return block.name === deprecated_block;\n });\n if (result !== undefined) {\n result.category = \"deprecated\";\n }\n }\n\n // if it's not used on the page, we can fully remove it instead\n else {\n wp.blocks.unregisterBlockType(deprecated_block);\n }\n });\n }\n });\n}\n\ndocument.addEventListener(\n \"DOMContentLoaded\",\n () => {\n for (let i = 1; i < 10; i++) {\n const clampTo = document.querySelectorAll(`.clamp-to-${i}`);\n for (c of clampTo) {\n window.$clamp(c, { clamp: i });\n }\n }\n },\n { passive: true }\n);\n","module.exports = require('./lib/axios');","document.addEventListener(\n `DOMContentLoaded`,\n () => {\n /**\n * Add change event to the price toggle switch to show/hide prices.\n */\n const priceToggle = document.querySelector(\".ms_pricing .js-time-period-switch input\");\n const priceContent = document.querySelectorAll(\".ms_pricing .price-content\");\n const extraPriceContent = document.querySelectorAll(\".ms_pricing .extra-price-content\");\n if (priceToggle) {\n priceToggle.addEventListener(\n \"change\",\n () => {\n if (priceContent) {\n for (const priceBlock of priceContent) {\n priceBlock.classList.toggle(\"hide\");\n }\n }\n if (extraPriceContent) {\n for (const priceBlock of extraPriceContent) {\n priceBlock.classList.toggle(\"hide\");\n }\n }\n Foundation.reInit(\"equalizer\");\n },\n { passive: true }\n );\n }\n\n const priceBlocks = document.querySelectorAll(\".ms_pricing .price-block\");\n if (priceBlocks) {\n for (const block of priceBlocks) {\n const title = block.querySelector(\".title\").textContent;\n const buttonWC = block.querySelector(\".cta-button.woocommerce a\");\n const buttonWCHref = buttonWC ? buttonWC.href : undefined;\n const button = block.querySelector(\".cta-button:not(.woocommerce) a\");\n const buttonHref = button ? button.href : undefined;\n const extraOptions = block.querySelectorAll(\".extra-options input\");\n let selectedOptionsID = [];\n let selectedOptions = [];\n if (extraOptions) {\n for (const [index, option] of extraOptions.entries()) {\n const optionName = option.parentElement.parentElement.textContent.trim();\n const optionID = option.parentElement.parentElement.dataset.id;\n const firstPriceNode = block.querySelector(\".price-content.first .price .number\");\n const secondPriceNode = block.querySelector(\".price-content.second .price .number\");\n option.addEventListener(\n \"change\",\n function () {\n const optionPrice = parseFloat(this.dataset.price);\n const optionPrice2 = parseFloat(this.dataset.secondPrice);\n // Apply first extra option price to \"left label price\".\n if (optionPrice) {\n // First price.\n if (firstPriceNode) {\n const firstPrice = parseFloat(\n firstPriceNode.textContent.replace(/(\\d),(?=\\d)/g, \"$1.\")\n );\n const newFirstPriceHTML = this.checked\n ? firstPrice + optionPrice\n : firstPrice - optionPrice;\n firstPriceNode.textContent = newFirstPriceHTML\n .toFixed(2)\n .replace(\".\", \",\")\n .replace(\",00\", \"\");\n }\n }\n // Apply second extra option price to \"right label price\".\n if (optionPrice2) {\n // Second price.\n if (secondPriceNode) {\n const secondPrice = parseFloat(\n secondPriceNode.textContent.replace(/(\\d),(?=\\d)/g, \"$1.\")\n );\n const secondPriceHTML = this.checked\n ? secondPrice + optionPrice2\n : secondPrice - optionPrice2;\n secondPriceNode.textContent = secondPriceHTML\n .toFixed(2)\n .replace(\".\", \",\")\n .replace(\",00\", \"\");\n }\n }\n\n // Add parameters to the URL if extra options have been selected.\n if (title && button) {\n // Add or remove selected extra option.\n this.checked\n ? selectedOptions.splice(index, 0, optionName)\n : (selectedOptions = selectedOptions.filter((value) => value !== optionName));\n // Create the query string for the button.\n const params = new URLSearchParams();\n const options = selectedOptions.join(\" & \");\n const newParams = {\n ...(options !== \"\" && { \"extra-options\": options }),\n };\n for (const [key, val] of Object.entries(newParams)) {\n params.append(key, val);\n }\n button.href = buttonHref + params.toString();\n }\n\n if (buttonWC && optionID) {\n // Add or remove selected extra option.\n this.checked\n ? selectedOptionsID.splice(index, 0, optionID)\n : (selectedOptionsID = selectedOptionsID.filter((value) => value !== optionID));\n const optionsString = selectedOptionsID.join(\",\");\n buttonWC.href =\n optionsString !== \"\" ? buttonWCHref + \",\" + optionsString : buttonWCHref;\n buttonWC.dataset.id = buttonWC.href.split(\"=\")[1];\n }\n },\n { passive: true }\n );\n }\n }\n }\n }\n },\n { passive: true }\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","module.exports = jQuery;","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n"],"sourceRoot":""}