{"version":3,"file":"./js/bundle.js?1676347310751","mappings":"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","sources":["webpack://Recruit Site Project/./src/js/mouse.js","webpack://Recruit Site Project/./node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack://Recruit Site Project/webpack/bootstrap","webpack://Recruit Site Project/webpack/runtime/compat get default export","webpack://Recruit Site Project/webpack/runtime/define property getters","webpack://Recruit Site Project/webpack/runtime/hasOwnProperty shorthand","webpack://Recruit Site Project/./node_modules/micromodal/dist/micromodal.es.js","webpack://Recruit Site Project/./node_modules/ssr-window/ssr-window.esm.js","webpack://Recruit Site Project/./node_modules/dom7/dom7.esm.js","webpack://Recruit Site Project/./node_modules/swiper/shared/dom.js","webpack://Recruit Site Project/./node_modules/swiper/shared/utils.js","webpack://Recruit Site Project/./node_modules/swiper/shared/get-support.js","webpack://Recruit Site Project/./node_modules/swiper/shared/get-device.js","webpack://Recruit Site Project/./node_modules/swiper/shared/get-browser.js","webpack://Recruit Site Project/./node_modules/swiper/core/events-emitter.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateSize.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateSlides.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateProgress.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://Recruit Site Project/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://Recruit Site Project/./node_modules/swiper/core/translate/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/translate/getTranslate.js","webpack://Recruit Site Project/./node_modules/swiper/core/translate/setTranslate.js","webpack://Recruit Site Project/./node_modules/swiper/core/translate/minTranslate.js","webpack://Recruit Site Project/./node_modules/swiper/core/translate/maxTranslate.js","webpack://Recruit Site Project/./node_modules/swiper/core/translate/translateTo.js","webpack://Recruit Site Project/./node_modules/swiper/core/transition/transitionEmit.js","webpack://Recruit Site Project/./node_modules/swiper/core/slide/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/slide/slideTo.js","webpack://Recruit Site Project/./node_modules/swiper/core/slide/slideToLoop.js","webpack://Recruit Site Project/./node_modules/swiper/core/slide/slideNext.js","webpack://Recruit Site Project/./node_modules/swiper/core/slide/slidePrev.js","webpack://Recruit Site Project/./node_modules/swiper/core/slide/slideReset.js","webpack://Recruit Site Project/./node_modules/swiper/core/slide/slideToClosest.js","webpack://Recruit Site Project/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://Recruit Site Project/./node_modules/swiper/core/loop/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/loop/loopCreate.js","webpack://Recruit Site Project/./node_modules/swiper/core/loop/loopFix.js","webpack://Recruit Site Project/./node_modules/swiper/core/loop/loopDestroy.js","webpack://Recruit Site Project/./node_modules/swiper/core/events/onTouchStart.js","webpack://Recruit Site Project/./node_modules/swiper/core/events/onTouchMove.js","webpack://Recruit Site Project/./node_modules/swiper/core/events/onTouchEnd.js","webpack://Recruit Site Project/./node_modules/swiper/core/events/onResize.js","webpack://Recruit Site Project/./node_modules/swiper/core/events/onClick.js","webpack://Recruit Site Project/./node_modules/swiper/core/events/onScroll.js","webpack://Recruit Site Project/./node_modules/swiper/core/events/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://Recruit Site Project/./node_modules/swiper/core/breakpoints/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://Recruit Site Project/./node_modules/swiper/core/classes/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/classes/addClasses.js","webpack://Recruit Site Project/./node_modules/swiper/core/classes/removeClasses.js","webpack://Recruit Site Project/./node_modules/swiper/core/images/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/images/loadImage.js","webpack://Recruit Site Project/./node_modules/swiper/core/images/preloadImages.js","webpack://Recruit Site Project/./node_modules/swiper/core/defaults.js","webpack://Recruit Site Project/./node_modules/swiper/core/moduleExtendParams.js","webpack://Recruit Site Project/./node_modules/swiper/core/core.js","webpack://Recruit Site Project/./node_modules/swiper/core/transition/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/transition/setTransition.js","webpack://Recruit Site Project/./node_modules/swiper/core/transition/transitionStart.js","webpack://Recruit Site Project/./node_modules/swiper/core/transition/transitionEnd.js","webpack://Recruit Site Project/./node_modules/swiper/core/grab-cursor/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://Recruit Site Project/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://Recruit Site Project/./node_modules/swiper/core/check-overflow/index.js","webpack://Recruit Site Project/./node_modules/swiper/core/modules/resize/resize.js","webpack://Recruit Site Project/./node_modules/swiper/core/modules/observer/observer.js","webpack://Recruit Site Project/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://Recruit Site Project/./node_modules/swiper/shared/classes-to-selector.js","webpack://Recruit Site Project/./node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack://Recruit Site Project/./node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack://Recruit Site Project/./node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack://Recruit Site Project/./node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack://Recruit Site Project/./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack://Recruit Site Project/./node_modules/swiper/shared/effect-init.js","webpack://Recruit Site Project/./node_modules/swiper/shared/effect-target.js","webpack://Recruit Site Project/./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack://Recruit Site Project/./node_modules/swiper/shared/create-shadow.js","webpack://Recruit Site Project/./node_modules/swiper/swiper-bundle.esm.js","webpack://Recruit Site Project/./node_modules/swiper/modules/virtual/virtual.js","webpack://Recruit Site Project/./node_modules/swiper/modules/keyboard/keyboard.js","webpack://Recruit Site Project/./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack://Recruit Site Project/./node_modules/swiper/modules/navigation/navigation.js","webpack://Recruit Site Project/./node_modules/swiper/modules/pagination/pagination.js","webpack://Recruit Site Project/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://Recruit Site Project/./node_modules/swiper/modules/parallax/parallax.js","webpack://Recruit Site Project/./node_modules/swiper/modules/zoom/zoom.js","webpack://Recruit Site Project/./node_modules/swiper/modules/lazy/lazy.js","webpack://Recruit Site Project/./node_modules/swiper/modules/controller/controller.js","webpack://Recruit Site Project/./node_modules/swiper/modules/a11y/a11y.js","webpack://Recruit Site Project/./node_modules/swiper/modules/history/history.js","webpack://Recruit Site Project/./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack://Recruit Site Project/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://Recruit Site Project/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://Recruit Site Project/./node_modules/swiper/modules/free-mode/free-mode.js","webpack://Recruit Site Project/./node_modules/swiper/modules/grid/grid.js","webpack://Recruit Site Project/./node_modules/swiper/modules/manipulation/manipulation.js","webpack://Recruit Site Project/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://Recruit Site Project/./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack://Recruit Site Project/./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack://Recruit Site Project/./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack://Recruit Site Project/./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack://Recruit Site Project/./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack://Recruit Site Project/./node_modules/animejs/lib/anime.es.js","webpack://Recruit Site Project/./src/js/scroll.js","webpack://Recruit Site Project/./src/js/anime.js","webpack://Recruit Site Project/./src/js/swiper-custom.js","webpack://Recruit Site Project/./src/index.js"],"sourcesContent":["function mouseStalker() {\r\n const mouseStalker = document.getElementById('g-ms');\r\n let msPos = {\r\n // マウスストーカーの位置\r\n s: {\r\n x: document.documentElement.clientWidth / 2,\r\n y: document.documentElement.clientHeight / 2,\r\n },\r\n // マウスポインターの位置\r\n m: {\r\n x: document.documentElement.clientWidth / 2,\r\n y: document.documentElement.clientHeight / 2,\r\n },\r\n };\r\n\r\n // マウスストーカーをactiveにする\r\n if (window.matchMedia('(pointer: fine)').matches) {\r\n document.addEventListener('mousemove', msActivate);\r\n }\r\n function msActivate() {\r\n mouseStalker.classList.add('g-ms-active');\r\n document.removeEventListener('mousemove', msActivate);\r\n // mouseの位置セット\r\n document.addEventListener('mousemove', function (e) {\r\n msPos.m.x = e.clientX;\r\n msPos.m.y = e.clientY;\r\n });\r\n // アニメーション開始\r\n requestAnimationFrame(msPosUpdate);\r\n }\r\n\r\n // マウスストーカーを動かす関数\r\n function msPosUpdate() {\r\n msPos.s.x += (msPos.m.x - msPos.s.x) * 0.1;\r\n msPos.s.y += (msPos.m.y - msPos.s.y) * 0.1;\r\n const x = Math.round(msPos.s.x * 10) / 10;\r\n const y = Math.round(msPos.s.y * 10) / 10;\r\n mouseStalker.style.transform = `translate3d(` + x + 'px,' + y + 'px, 0)';\r\n requestAnimationFrame(msPosUpdate);\r\n }\r\n\r\n // hover時にclass追加\r\n const stalkerLinkObj = document.querySelectorAll('a, button, .msl');\r\n for (let i = 0; i < stalkerLinkObj.length; i++) {\r\n stalkerLinkObj[i].addEventListener('mouseover', function () {\r\n mouseStalker.classList.add('g-ms-hover');\r\n });\r\n stalkerLinkObj[i].addEventListener('mouseout', function () {\r\n mouseStalker.classList.remove('g-ms-hover');\r\n });\r\n }\r\n}\r\n\r\nfunction isSmartPhone() {\r\n if (navigator.userAgent.match(/iPhone|Android.+Mobile/)) {\r\n // console.log('pc2');\r\n } else {\r\n // console.log('sp2');\r\n mouseStalker();\r\n }\r\n}\r\n\r\nisSmartPhone();\r\n","!function(n,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).LazyLoad=t()}(this,(function(){\"use strict\";function n(){return n=Object.assign||function(n){for(var t=1;t1,r={elements_selector:\".lazy\",container:e||t?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_bg_set:\"bg-set\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},c=function(t){return n({},r,t)},l=function(n,t){var e,i=\"LazyLoad::Initialized\",o=new n(t);try{e=new CustomEvent(i,{detail:{instance:o}})}catch(n){(e=document.createEvent(\"CustomEvent\")).initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(e)},u=\"src\",s=\"srcset\",d=\"sizes\",f=\"poster\",_=\"llOriginalAttrs\",g=\"data\",v=\"loading\",b=\"loaded\",m=\"applied\",p=\"error\",h=\"native\",E=\"data-\",I=\"ll-status\",y=function(n,t){return n.getAttribute(E+t)},k=function(n){return y(n,I)},w=function(n,t){return function(n,t,e){var i=\"data-ll-status\";null!==e?n.setAttribute(i,e):n.removeAttribute(i)}(n,0,t)},A=function(n){return w(n,null)},L=function(n){return null===k(n)},O=function(n){return k(n)===h},x=[v,b,m,p],C=function(n,t,e,i){n&&(void 0===i?void 0===e?n(t):n(t,e):n(t,e,i))},N=function(n,t){o?n.classList.add(t):n.className+=(n.className?\" \":\"\")+t},M=function(n,t){o?n.classList.remove(t):n.className=n.className.replace(new RegExp(\"(^|\\\\s+)\"+t+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")},z=function(n){return n.llTempImage},T=function(n,t){if(t){var e=t._observer;e&&e.unobserve(n)}},R=function(n,t){n&&(n.loadingCount+=t)},G=function(n,t){n&&(n.toLoadCount=t)},j=function(n){for(var t,e=[],i=0;t=n.children[i];i+=1)\"SOURCE\"===t.tagName&&e.push(t);return e},D=function(n,t){var e=n.parentNode;e&&\"PICTURE\"===e.tagName&&j(e).forEach(t)},H=function(n,t){j(n).forEach(t)},V=[u],F=[u,f],B=[u,s,d],J=[g],P=function(n){return!!n[_]},S=function(n){return n[_]},U=function(n){return delete n[_]},$=function(n,t){if(!P(n)){var e={};t.forEach((function(t){e[t]=n.getAttribute(t)})),n[_]=e}},q=function(n,t){if(P(n)){var e=S(n);t.forEach((function(t){!function(n,t,e){e?n.setAttribute(t,e):n.removeAttribute(t)}(n,t,e[t])}))}},K=function(n,t,e){N(n,t.class_applied),w(n,m),e&&(t.unobserve_completed&&T(n,t),C(t.callback_applied,n,e))},Q=function(n,t,e){N(n,t.class_loading),w(n,v),e&&(R(e,1),C(t.callback_loading,n,e))},W=function(n,t,e){e&&n.setAttribute(t,e)},X=function(n,t){W(n,d,y(n,t.data_sizes)),W(n,s,y(n,t.data_srcset)),W(n,u,y(n,t.data_src))},Y={IMG:function(n,t){D(n,(function(n){$(n,B),X(n,t)})),$(n,B),X(n,t)},IFRAME:function(n,t){$(n,V),W(n,u,y(n,t.data_src))},VIDEO:function(n,t){H(n,(function(n){$(n,V),W(n,u,y(n,t.data_src))})),$(n,F),W(n,f,y(n,t.data_poster)),W(n,u,y(n,t.data_src)),n.load()},OBJECT:function(n,t){$(n,J),W(n,g,y(n,t.data_src))}},Z=[\"IMG\",\"IFRAME\",\"VIDEO\",\"OBJECT\"],nn=function(n,t){!t||function(n){return n.loadingCount>0}(t)||function(n){return n.toLoadCount>0}(t)||C(n.callback_finish,t)},tn=function(n,t,e){n.addEventListener(t,e),n.llEvLisnrs[t]=e},en=function(n,t,e){n.removeEventListener(t,e)},on=function(n){return!!n.llEvLisnrs},an=function(n){if(on(n)){var t=n.llEvLisnrs;for(var e in t){var i=t[e];en(n,e,i)}delete n.llEvLisnrs}},rn=function(n,t,e){!function(n){delete n.llTempImage}(n),R(e,-1),function(n){n&&(n.toLoadCount-=1)}(e),M(n,t.class_loading),t.unobserve_completed&&T(n,e)},cn=function(n,t,e){var i=z(n)||n;on(i)||function(n,t,e){on(n)||(n.llEvLisnrs={});var i=\"VIDEO\"===n.tagName?\"loadeddata\":\"load\";tn(n,i,t),tn(n,\"error\",e)}(i,(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_loaded),w(t,b),C(e.callback_loaded,t,i),o||nn(e,i)}(0,n,t,e),an(i)}),(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_error),w(t,p),C(e.callback_error,t,i),e.restore_on_error&&q(t,B),o||nn(e,i)}(0,n,t,e),an(i)}))},ln=function(n,t,e){!function(n){return Z.indexOf(n.tagName)>-1}(n)?function(n,t,e){!function(n){n.llTempImage=document.createElement(\"IMG\")}(n),cn(n,t,e),function(n){P(n)||(n[_]={backgroundImage:n.style.backgroundImage})}(n),function(n,t,e){var i=y(n,t.data_bg),o=y(n,t.data_bg_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage='url(\"'.concat(r,'\")'),z(n).setAttribute(u,r),Q(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_multi),o=y(n,t.data_bg_multi_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage=r,K(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_set);if(i){var o=i.split(\"|\"),a=o.map((function(n){return\"image-set(\".concat(n,\")\")}));n.style.backgroundImage=a.join(),\"\"===n.style.backgroundImage&&(a=o.map((function(n){return\"-webkit-image-set(\".concat(n,\")\")})),n.style.backgroundImage=a.join()),K(n,t,e)}}(n,t,e)}(n,t,e):function(n,t,e){cn(n,t,e),function(n,t,e){var i=Y[n.tagName];i&&(i(n,t),Q(n,t,e))}(n,t,e)}(n,t,e)},un=function(n){n.removeAttribute(u),n.removeAttribute(s),n.removeAttribute(d)},sn=function(n){D(n,(function(n){q(n,B)})),q(n,B)},dn={IMG:sn,IFRAME:function(n){q(n,V)},VIDEO:function(n){H(n,(function(n){q(n,V)})),q(n,F),n.load()},OBJECT:function(n){q(n,J)}},fn=function(n,t){(function(n){var t=dn[n.tagName];t?t(n):function(n){if(P(n)){var t=S(n);n.style.backgroundImage=t.backgroundImage}}(n)})(n),function(n,t){L(n)||O(n)||(M(n,t.class_entered),M(n,t.class_exited),M(n,t.class_applied),M(n,t.class_loading),M(n,t.class_loaded),M(n,t.class_error))}(n,t),A(n),U(n)},_n=[\"IMG\",\"IFRAME\",\"VIDEO\"],gn=function(n){return n.use_native&&\"loading\"in HTMLImageElement.prototype},vn=function(n,t,e){n.forEach((function(n){return function(n){return n.isIntersecting||n.intersectionRatio>0}(n)?function(n,t,e,i){var o=function(n){return x.indexOf(k(n))>=0}(n);w(n,\"entered\"),N(n,e.class_entered),M(n,e.class_exited),function(n,t,e){t.unobserve_entered&&T(n,e)}(n,e,i),C(e.callback_enter,n,t,i),o||ln(n,e,i)}(n.target,n,t,e):function(n,t,e,i){L(n)||(N(n,e.class_exited),function(n,t,e,i){e.cancel_on_exit&&function(n){return k(n)===v}(n)&&\"IMG\"===n.tagName&&(an(n),function(n){D(n,(function(n){un(n)})),un(n)}(n),sn(n),M(n,e.class_loading),R(i,-1),A(n),C(e.callback_cancel,n,t,i))}(n,t,e,i),C(e.callback_exit,n,t,i))}(n.target,n,t,e)}))},bn=function(n){return Array.prototype.slice.call(n)},mn=function(n){return n.container.querySelectorAll(n.elements_selector)},pn=function(n){return function(n){return k(n)===p}(n)},hn=function(n,t){return function(n){return bn(n).filter(L)}(n||mn(t))},En=function(n,e){var o=c(n);this._settings=o,this.loadingCount=0,function(n,t){i&&!gn(n)&&(t._observer=new IntersectionObserver((function(e){vn(e,n,t)}),function(n){return{root:n.container===document?null:n.container,rootMargin:n.thresholds||n.threshold+\"px\"}}(n)))}(o,this),function(n,e){t&&(e._onlineHandler=function(){!function(n,t){var e;(e=mn(n),bn(e).filter(pn)).forEach((function(t){M(t,n.class_error),A(t)})),t.update()}(n,e)},window.addEventListener(\"online\",e._onlineHandler))}(o,this),this.update(e)};return En.prototype={update:function(n){var t,o,a=this._settings,r=hn(n,a);G(this,r.length),!e&&i?gn(a)?function(n,t,e){n.forEach((function(n){-1!==_n.indexOf(n.tagName)&&function(n,t,e){n.setAttribute(\"loading\",\"lazy\"),cn(n,t,e),function(n,t){var e=Y[n.tagName];e&&e(n,t)}(n,t),w(n,h)}(n,t,e)})),G(e,0)}(r,a,this):(o=r,function(n){n.disconnect()}(t=this._observer),function(n,t){t.forEach((function(t){n.observe(t)}))}(t,o)):this.loadAll(r)},destroy:function(){this._observer&&this._observer.disconnect(),t&&window.removeEventListener(\"online\",this._onlineHandler),mn(this._settings).forEach((function(n){U(n)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(n){var t=this,e=this._settings;hn(n,e).forEach((function(n){T(n,t),ln(n,e,t)}))},restoreAll:function(){var n=this._settings;mn(n).forEach((function(t){fn(t,n)}))}},En.load=function(n,t){var e=c(t);ln(n,e)},En.resetStatus=function(n){A(n)},t&&function(n,t){if(t)if(t.length)for(var e,i=0;e=t[i];i+=1)l(n,e);else l(n,t)}(En,window.lazyLoadOptions),En}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","function e(e,t){for(var o=0;oe.length)&&(t=e.length);for(var o=0,n=new Array(t);o0&&this.registerTriggers.apply(this,t(a)),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}var i,a,r;return i=o,(a=[{key:\"registerTriggers\",value:function(){for(var e=this,t=arguments.length,o=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:null;if(this.activeElement=document.activeElement,this.modal.setAttribute(\"aria-hidden\",\"false\"),this.modal.classList.add(this.config.openClass),this.scrollBehaviour(\"disable\"),this.addEventListeners(),this.config.awaitOpenAnimation){var o=function t(){e.modal.removeEventListener(\"animationend\",t,!1),e.setFocusToFirstNode()};this.modal.addEventListener(\"animationend\",o,!1)}else this.setFocusToFirstNode();this.config.onShow(this.modal,this.activeElement,t)}},{key:\"closeModal\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.modal;if(this.modal.setAttribute(\"aria-hidden\",\"true\"),this.removeEventListeners(),this.scrollBehaviour(\"enable\"),this.activeElement&&this.activeElement.focus&&this.activeElement.focus(),this.config.onClose(this.modal,this.activeElement,e),this.config.awaitCloseAnimation){var o=this.config.openClass;this.modal.addEventListener(\"animationend\",(function e(){t.classList.remove(o),t.removeEventListener(\"animationend\",e,!1)}),!1)}else t.classList.remove(this.config.openClass)}},{key:\"closeModalById\",value:function(e){this.modal=document.getElementById(e),this.modal&&this.closeModal()}},{key:\"scrollBehaviour\",value:function(e){if(this.config.disableScroll){var t=document.querySelector(\"body\");switch(e){case\"enable\":Object.assign(t.style,{overflow:\"\"});break;case\"disable\":Object.assign(t.style,{overflow:\"hidden\"})}}}},{key:\"addEventListeners\",value:function(){this.modal.addEventListener(\"touchstart\",this.onClick),this.modal.addEventListener(\"click\",this.onClick),document.addEventListener(\"keydown\",this.onKeydown)}},{key:\"removeEventListeners\",value:function(){this.modal.removeEventListener(\"touchstart\",this.onClick),this.modal.removeEventListener(\"click\",this.onClick),document.removeEventListener(\"keydown\",this.onKeydown)}},{key:\"onClick\",value:function(e){(e.target.hasAttribute(this.config.closeTrigger)||e.target.parentNode.hasAttribute(this.config.closeTrigger))&&(e.preventDefault(),e.stopPropagation(),this.closeModal(e))}},{key:\"onKeydown\",value:function(e){27===e.keyCode&&this.closeModal(e),9===e.keyCode&&this.retainFocus(e)}},{key:\"getFocusableNodes\",value:function(){var e=this.modal.querySelectorAll(n);return Array.apply(void 0,t(e))}},{key:\"setFocusToFirstNode\",value:function(){var e=this;if(!this.config.disableFocus){var t=this.getFocusableNodes();if(0!==t.length){var o=t.filter((function(t){return!t.hasAttribute(e.config.closeTrigger)}));o.length>0&&o[0].focus(),0===o.length&&t[0].focus()}}}},{key:\"retainFocus\",value:function(e){var t=this.getFocusableNodes();if(0!==t.length)if(t=t.filter((function(e){return null!==e.offsetParent})),this.modal.contains(document.activeElement)){var o=t.indexOf(document.activeElement);e.shiftKey&&0===o&&(t[t.length-1].focus(),e.preventDefault()),!e.shiftKey&&t.length>0&&o===t.length-1&&(t[0].focus(),e.preventDefault())}else t[0].focus()}}])&&e(i.prototype,a),r&&e(i,r),o}(),a=null,r=function(e){if(!document.getElementById(e))return console.warn(\"MicroModal: ❗Seems like you have missed %c'\".concat(e,\"'\"),\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"ID somewhere in your code. Refer example below to resolve it.\"),console.warn(\"%cExample:\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",'
')),!1},s=function(e,t){if(function(e){e.length<=0&&(console.warn(\"MicroModal: ❗Please specify at least one %c'micromodal-trigger'\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"data attribute.\"),console.warn(\"%cExample:\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",''))}(e),!t)return!0;for(var o in t)r(o);return!0},{init:function(e){var o=Object.assign({},{openTrigger:\"data-micromodal-trigger\"},e),n=t(document.querySelectorAll(\"[\".concat(o.openTrigger,\"]\"))),r=function(e,t){var o=[];return e.forEach((function(e){var n=e.attributes[t].value;void 0===o[n]&&(o[n]=[]),o[n].push(e)})),o}(n,o.openTrigger);if(!0!==o.debugMode||!1!==s(n,r))for(var l in r){var c=r[l];o.targetModal=l,o.triggers=t(c),a=new i(o)}},show:function(e,t){var o=t||{};o.targetModal=e,!0===o.debugMode&&!1===r(e)||(a&&a.removeEventListeners(),(a=new i(o)).showModal())},close:function(e){e?a.closeModalById(e):a.closeModal()}});\"undefined\"!=typeof window&&(window.MicroModal=l);export default l;\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 * 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 } 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 };","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 };","/* 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}","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 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 && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n $(el).attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\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 { 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}","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}","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 loopedSlidesLimit: true,\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 changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\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;","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 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}","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};","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 appendSlide(slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n let newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n const baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\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}","export default function effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformEl,\n allSlides\n } = _ref;\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\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}","/**\n * Swiper 8.3.2\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2022 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: July 26, 2022\n */\n\nimport Swiper from './core/core.js';\nexport { default as Swiper, default } from './core/core.js';\nimport Virtual from './modules/virtual/virtual.js';\nimport Keyboard from './modules/keyboard/keyboard.js';\nimport Mousewheel from './modules/mousewheel/mousewheel.js';\nimport Navigation from './modules/navigation/navigation.js';\nimport Pagination from './modules/pagination/pagination.js';\nimport Scrollbar from './modules/scrollbar/scrollbar.js';\nimport Parallax from './modules/parallax/parallax.js';\nimport Zoom from './modules/zoom/zoom.js';\nimport Lazy from './modules/lazy/lazy.js';\nimport Controller from './modules/controller/controller.js';\nimport A11y from './modules/a11y/a11y.js';\nimport History from './modules/history/history.js';\nimport HashNavigation from './modules/hash-navigation/hash-navigation.js';\nimport Autoplay from './modules/autoplay/autoplay.js';\nimport Thumbs from './modules/thumbs/thumbs.js';\nimport FreeMode from './modules/free-mode/free-mode.js';\nimport Grid from './modules/grid/grid.js';\nimport Manipulation from './modules/manipulation/manipulation.js';\nimport EffectFade from './modules/effect-fade/effect-fade.js';\nimport EffectCube from './modules/effect-cube/effect-cube.js';\nimport EffectFlip from './modules/effect-flip/effect-flip.js';\nimport EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js';\nimport EffectCreative from './modules/effect-creative/effect-creative.js';\nimport EffectCards from './modules/effect-cards/effect-cards.js';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\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 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 emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\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}","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 && $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}","import $ from '../../shared/dom.js';\nexport default function Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n snapGrid\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate) {\n if (loadInDuplicate === void 0) {\n loadInDuplicate = true;\n }\n\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\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 classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handleFocus = e => {\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n initSlides(); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n };\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\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 if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\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; // Activate thumbs\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 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 }\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}","import { now } from '../../shared/utils.js';\nexport default function freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","export default function Grid(_ref) {\n let {\n swiper,\n extendParams\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid; // Set slides order\n\n let newSlideOrderIndex;\n let column;\n let row;\n\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n });\n\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each(slideEl => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\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 effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\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}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","export class ScrollObserver {\r\n constructor(els, cb, options) {\r\n this.els = document.querySelectorAll(els);\r\n const defaultOptions = {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: 0,\r\n once: true,\r\n };\r\n this.cb = cb;\r\n this.options = Object.assign(defaultOptions, options);\r\n this.once = this.options.once;\r\n this._init();\r\n }\r\n _init() {\r\n const callback = function (entries, observer) {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n this.cb(entry.target, true);\r\n if (this.once) {\r\n observer.unobserve(entry.target);\r\n }\r\n } else {\r\n this.cb(entry.target, false);\r\n }\r\n });\r\n };\r\n\r\n this.io = new IntersectionObserver(callback.bind(this), this.options);\r\n\r\n // @see https://github.com/w3c/IntersectionObserver/tree/master/polyfill\r\n this.io.POLL_INTERVAL = 100;\r\n\r\n this.els.forEach((el) => this.io.observe(el));\r\n }\r\n\r\n destroy() {\r\n this.io.disconnect();\r\n }\r\n}\r\n","import { aboutSwiperFunc } from './swiper-custom.js';\r\nimport anime from '../../node_modules/animejs/lib/anime.es.js';\r\n\r\n//loading animation\r\nwindow.addEventListener('load', loader);\r\nfunction loader() {\r\n let loadingElm = document.querySelector('.loading');\r\n\r\n //timeline\r\n let tl = anime.timeline({\r\n easing: 'easeOutExpo',\r\n duration: 1000,\r\n });\r\n tl.add({\r\n //fade out anime\r\n targets: '.loading',\r\n opacity: [1, 0],\r\n duration: 300,\r\n easing: 'easeInQuad',\r\n complete: function () {\r\n loadingElm.style.display = 'none';\r\n const main = document.getElementById('mainFadeIn');\r\n main.style.opacity = 1;\r\n if (document.querySelector('.hero_swiper')) {\r\n aboutSwiperFunc();\r\n }\r\n },\r\n });\r\n}\r\n\r\n// //nav animation\r\n// const nav = document.querySelector('.hum_nav');\r\n// const navBtn = document.querySelector('.btn-trigger');\r\n// const navBg = document.querySelector('.hum_nav__bg');\r\n// let tlNav = anime.timeline({\r\n// duration: 500,\r\n// autoplay: false,\r\n// });\r\n// tlNav\r\n// .add({\r\n// targets: '.hum_nav',\r\n// translateX: [-20, 0],\r\n// opacity: [0, 1],\r\n// duration: 300,\r\n// easing: 'easeOutCubic',\r\n// begin: function () {\r\n// nav.style.pointerEvents = 'auto';\r\n// },\r\n// })\r\n// .add({\r\n// targets: '.hum_nav_box',\r\n// translateX: ['-100%', 0],\r\n// duration: 500,\r\n// easing: 'easeOutCubic',\r\n// })\r\n// .add({\r\n// targets: '.hum_nav li',\r\n// translateX: [-15, 0],\r\n// opacity: [0, 1],\r\n// delay: function (el, i, l) {\r\n// return i * 100;\r\n// },\r\n// duration: 300,\r\n// autoplay: false,\r\n// easing: 'easeOutCubic',\r\n// });\r\n// function toggle() {\r\n// navBtn.classList.toggle('active');\r\n// if (tlNav.began) {\r\n// tlNav.reverse();\r\n// nav.style.pointerEvents = 'none';\r\n// // tlNav.finished.then(() => {\r\n// // console.log('finished');\r\n// // });\r\n// if (tlNav.progress === 100 && tlNav.direction === 'reverse') {\r\n// tlNav.completed = false;\r\n// }\r\n// }\r\n// if (tlNav.paused) {\r\n// tlNav.play();\r\n// }\r\n// }\r\n// navBtn.addEventListener('click', toggle);\r\n// navBg.addEventListener('click', toggle);\r\n\r\n// //classでアニメーション\r\n// // const navBtn = document.querySelector('.btn-trigger');\r\n// // const nav = document.querySelector('.hum_nav');\r\n// // const handleClick = () => {\r\n// // navBtn.classList.toggle('active');\r\n// // nav.classList.toggle('active');\r\n// // };\r\n// // navBtn.addEventListener('click', handleClick);\r\n\r\n// //about text animation\r\n// const aboutTextAnime = anime({\r\n// targets: '.scroll_anime_area__box',\r\n// translateX: '-50%',\r\n// duration: 15000,\r\n// loop: true,\r\n// easing: 'linear',\r\n// autoplay: false,\r\n// delay: 0,\r\n// });\r\n\r\n// // let moveRight = function (entry) {\r\n// // anime({\r\n// // targets: entry,\r\n// // skewX: [30, 0],\r\n// // opacity: [0, 1],\r\n// // duration: 1000,\r\n// // easing: 'easeInOutQuad',\r\n// // });\r\n// // };\r\n\r\nimport { ScrollObserver } from './scroll';\r\n\r\n//インターセクションオブザーバー\r\n\r\n//PC用処理\r\n\r\nclass MainPC {\r\n constructor() {\r\n this._observers = [];\r\n this._scrollInit();\r\n }\r\n\r\n _scrollInit() {\r\n this._observers.push(\r\n new ScrollObserver('.appear', this._inviewAnimation.bind(this), {\r\n once: true,\r\n rootMargin: '0px 0px -500px 0px',\r\n }),\r\n new ScrollObserver(\r\n '.staff_slide_card_swiper',\r\n this._inviewAnimation2.bind(this),\r\n {\r\n once: false, //何度も実行\r\n rootMargin: '0px 0px -500px 0px',\r\n }\r\n ),\r\n new ScrollObserver(\r\n '.scroll_anime_area__box',\r\n this._inviewAnimation3.bind(this),\r\n {\r\n once: false,\r\n rootMargin: '0px 0px -100px 0px',\r\n }\r\n )\r\n );\r\n }\r\n\r\n _inviewAnimation(el, inview) {\r\n if (inview) {\r\n el.classList.add('inview');\r\n } else {\r\n el.classList.remove('inview');\r\n }\r\n }\r\n _inviewAnimation2(el, inview) {\r\n if (inview) {\r\n // staffSwiper.autoplay.start();\r\n } else {\r\n //staffSwiper.autoplay.stop();\r\n }\r\n }\r\n _inviewAnimation3(el, inview) {\r\n if (inview) {\r\n // aboutTextAnime.play();\r\n } else {\r\n // aboutTextAnime.pause();\r\n }\r\n }\r\n}\r\n//スマホ用処理\r\nclass MainSP extends MainPC {\r\n constructor() {\r\n super();\r\n }\r\n _scrollInit() {\r\n this._observers.push(\r\n new ScrollObserver('.appear', this._inviewAnimation.bind(this), {\r\n once: true,\r\n rootMargin: '0px 0px -250px 0px',\r\n }),\r\n new ScrollObserver(\r\n '.scroll_anime_area__box',\r\n this._inviewAnimation3.bind(this),\r\n {\r\n once: false,\r\n rootMargin: '0px 0px 10px 0px',\r\n }\r\n )\r\n );\r\n }\r\n}\r\n\r\nif (window.matchMedia('(max-width: 991px)').matches) {\r\n //PC\r\n //オブザーバーAPI\r\n const main = new MainSP();\r\n} else {\r\n //sp\r\n //オブザーバーAPI\r\n const main = new MainPC();\r\n}\r\n","// /// SWPIER ////////\r\n// import Swiper bundle with all modules installed\r\nimport Swiper from 'swiper/bundle';\r\nimport 'swiper/css/bundle';\r\n//about swiper\r\n\r\nexport function aboutSwiperFunc() {\r\n const main = document.querySelector('.hero_swiper');\r\n main.classList.add('loaded');\r\n\r\n const slideLength = document.querySelectorAll(\r\n '.hero_swiper .swiper-slide'\r\n ).length;\r\n const swiper = new Swiper('.hero_swiper', {\r\n loop: true,\r\n slidesPerView: 1,\r\n spaceBetween: 30,\r\n // allowTouchMove: false,\r\n loopedSlides: slideLength,\r\n speed: 4500,\r\n\r\n autoplay: {\r\n delay: 0,\r\n disableOnInteraction: false,\r\n },\r\n freeMode: {\r\n enabled: true,\r\n momentum: false,\r\n },\r\n grabCursor: true,\r\n\r\n breakpoints: {\r\n // 768px以上の場合\r\n 768: {\r\n slidesPerView: 3,\r\n },\r\n },\r\n on: {\r\n touchEnd: (swiper) => {\r\n swiper.slideTo(swiper.activeIndex + 1);\r\n },\r\n },\r\n });\r\n}\r\n","// Bootstrapのスタイルシート側の機能を読み込む\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\n//import 'bootstrap/dist/css/bootstrap-reboot.rtl.min.css';\r\n//import 'bootstrap/dist/css/bootstrap-grid.rtl.min.css';\r\n\r\nimport './sass/style.scss'; //バンドルするCSSの読み込み\r\n\r\n//lazyload\r\nimport LazyLoad from 'vanilla-lazyload';\r\nconst lazyLoadOptions = {\r\n /* your options here */\r\n};\r\nconst pageLazyLoad = new LazyLoad(lazyLoadOptions);\r\n\r\n//modal\r\nimport MicroModal from 'micromodal';\r\nconst modal = document.querySelector('.js-modal-toggle');\r\n//モーダルボタンのaタグ無効化\r\nif (modal) {\r\n MicroModal.init();\r\n modal.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n });\r\n}\r\n\r\n//JSファイルの読み込み\r\n// import './js/smooth';\r\n\r\nimport './js/swiper-custom';\r\nimport './js/mouse';\r\n//import './js/scrollBar';\r\nimport './js/anime';\r\n\r\n// BootstrapのJavaScript側の機能を読み込む\r\n// import 'bootstrap';\r\n\r\n// スマホでヒーローを全画面にする\r\nfunction setHeight() {\r\n let vh = window.innerHeight * 0.01;\r\n document.documentElement.style.setProperty('--vh', `${vh}px`);\r\n}\r\nsetHeight();\r\nwindow.addEventListener('resize', setHeight);\r\n\r\n//\r\n//変数\r\nconst humOpen = document.querySelector('.openbtn');\r\nconst body = document.body;\r\nconst nav = document.querySelector('.nav');\r\nconst navBgLists = document.querySelectorAll('.nav_img_bg__item');\r\nconst hero = document.getElementById('hero');\r\nconst heroHeight = hero.clientHeight;\r\nconst progress = document.querySelector('.progress');\r\nconst header = document.querySelector('.header');\r\nconst sectionLinks = document.querySelectorAll('.progress_list__link');\r\nconst sections = document.querySelectorAll('.section_area');\r\nlet set_position = 0;\r\n\r\n//ハンバーガーメニュー\r\n\r\nfunction navFunc() {\r\n body.classList.toggle('active');\r\n nav.classList.toggle('active');\r\n humOpen.classList.toggle('active');\r\n}\r\nhumOpen.addEventListener('click', navFunc);\r\n\r\n//ナビゲーション\r\n\r\n//ナビゲーションメニューの背景を入れ替える処理(PCのみ適用)\r\nif (!window.matchMedia('(max-width: 991px)').matches) {\r\n menuFunc();\r\n}\r\n\r\nfunction menuFunc() {\r\n //初期化\r\n document.querySelector('.nav_img_bg__item--1').classList.add('active');\r\n\r\n nav.addEventListener('mousemove', function (e) {\r\n const clicked = e.target.closest('.nav_main_list__link');\r\n\r\n if (!clicked) return;\r\n\r\n navBgLists.forEach((c) => c.classList.remove('active'));\r\n\r\n document\r\n .querySelector(`.nav_img_bg__item--${clicked.dataset.nav}`)\r\n .classList.add('active');\r\n });\r\n}\r\n//メニューリンクをクリックしたらナビゲーションを閉じる処理\r\nnav.addEventListener('click', function (e) {\r\n if (e.target.classList.contains('nav_main_list__link')) {\r\n setTimeout(navFunc, 100);\r\n }\r\n});\r\n\r\n// ヘッダーのスクロール制御\r\n\r\nwindow.addEventListener('scroll', function () {\r\n if (!nav.classList.contains('active')) {\r\n if (set_position < document.documentElement.scrollTop) {\r\n // console.log(`down`);\r\n header.classList.add('active');\r\n } else {\r\n // console.log(`up`);\r\n header.classList.remove('active');\r\n }\r\n }\r\n set_position = document.documentElement.scrollTop;\r\n});\r\n\r\n// //elevatorリンク\r\n// function elevatorFunc() {\r\n// window.addEventListener('scroll', function () {\r\n// if (\r\n// document.body.scrollTop > heroHeight ||\r\n// document.documentElement.scrollTop > heroHeight\r\n// ) {\r\n// progress.classList.add('active');\r\n// } else {\r\n// progress.classList.remove('active');\r\n// }\r\n\r\n// // sectionLinks.forEach((link, index) => {\r\n// // //document要素の絶対位置(値は固定) window.pageYOffsetはdocumentの上端からのスクロール量\r\n// // console.log(sectionLinks)[index];\r\n// // const absolutePositionTop =\r\n// // sections[index].getBoundingClientRect().top + window.pageYOffset;\r\n// // if (document.documentElement.scrollTop > absolutePositionTop) {\r\n// // link.classList.add('inview');\r\n// // } else {\r\n// // link.classList.remove('inview');\r\n// // }\r\n// // });\r\n// });\r\n// }\r\n// elevatorFunc();\r\n"],"names":["navigator","userAgent","match","mouseStalker","document","getElementById","msPos","s","x","documentElement","clientWidth","y","clientHeight","m","msPosUpdate","Math","round","style","transform","requestAnimationFrame","window","matchMedia","matches","addEventListener","msActivate","classList","add","removeEventListener","e","clientX","clientY","stalkerLinkObj","querySelectorAll","i","length","remove","module","exports","n","Object","assign","t","arguments","prototype","hasOwnProperty","call","apply","this","test","o","createElement","a","devicePixelRatio","r","elements_selector","container","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_bg_set","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","restore_on_error","c","l","CustomEvent","detail","instance","createEvent","initCustomEvent","dispatchEvent","u","d","f","_","g","v","b","p","h","getAttribute","k","w","setAttribute","removeAttribute","A","L","O","C","N","className","M","replace","RegExp","z","llTempImage","T","_observer","unobserve","R","loadingCount","G","toLoadCount","j","children","tagName","push","D","parentNode","forEach","H","V","F","B","J","P","S","U","$","q","K","Q","W","X","Y","IMG","IFRAME","VIDEO","load","OBJECT","Z","nn","tn","llEvLisnrs","en","on","an","rn","cn","ln","indexOf","backgroundImage","concat","split","map","join","un","sn","dn","_n","gn","HTMLImageElement","bn","Array","slice","mn","pn","hn","filter","En","_settings","IntersectionObserver","isIntersecting","intersectionRatio","target","vn","root","rootMargin","_onlineHandler","update","disconnect","observe","loadAll","destroy","restoreAll","fn","resetStatus","lazyLoadOptions","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","key","defineProperty","enumerable","get","obj","prop","isArray","Symbol","iterator","from","toString","constructor","name","TypeError","targetModal","triggers","onShow","onClose","openTrigger","closeTrigger","openClass","disableScroll","disableFocus","awaitCloseAnimation","E","awaitOpenAnimation","debugMode","modal","config","registerTriggers","onClick","bind","onKeydown","value","Boolean","showModal","activeElement","scrollBehaviour","addEventListeners","setFocusToFirstNode","removeEventListeners","focus","closeModal","querySelector","overflow","hasAttribute","preventDefault","stopPropagation","keyCode","retainFocus","getFocusableNodes","offsetParent","contains","shiftKey","configurable","writable","console","warn","init","attributes","show","close","closeModalById","MicroModal","isObject","extend","src","keys","ssrDocument","body","blur","nodeName","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","history","replaceState","pushState","go","back","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","callback","cancelAnimationFrame","id","win","Dom7","items","super","proto","__proto__","set","makeReactive","arrayFlat","arr","res","el","arrayFilter","selector","context","html","trim","toCreate","tempParent","innerHTML","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","shortcut","args","trigger","Methods","addClass","classes","classNames","removeClass","hasClass","toggleClass","toggle","attr","attrs","attrName","removeAttr","transition","duration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","handleEvent","events","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","evt","bubbles","cancelable","data","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","each","index","text","textContent","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","closest","find","foundElements","found","removeChild","methodName","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","max","min","easeProgress","cos","PI","currentPosition","scrollTo","support","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","priority","self","eventsListeners","destroyed","method","once","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","emit","_len2","_key2","updateSize","width","height","$el","isHorizontal","isVertical","parseInt","Number","isNaN","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","Error","indexAsNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","loopedSlidesLimit","prependSlides","appendSlides","cloneNode","diff","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","device","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","ios","android","attachEvents","detachEvents","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","resizeObserver","createElements","url","simulateTouch","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","moving","isLocked","cursor","unsetGrabCursor","wasLocked","lastSlideIndex","lastSlideRightEdge","images","extendedDefaults","Swiper","swipers","newParams","overrides","_temp","platform","ua","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","isSafari","toLowerCase","isWebView","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","options","getWrapper","wrapper","deleteInstance","cleanStyles","object","deleteProps","static","newDefaults","installModule","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","createElementIfNotDefined","checkProps","element","classesToSelector","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","effectTarget","effectParams","$slideEl","transformEl","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","createShadow","shadowClass","$shadowContainer","$shadowEl","cssModeTimeout","renderSlide","cache","force","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","handle","kc","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","toggleEl","disabled","disabledClass","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","targetEl","pagination","clickable","isHidden","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","$dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","parallax","setTransform","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handleFocus","includes","isActive","isVisible","$containerEl","repeat","random","live","addElLive","updateNavigation","bulletEl","updatePagination","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","onHashChange","newHash","setHash","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","rotate","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","defaultInstanceSettings","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","timelineOffset","defaultTweenSettings","endDelay","easing","validTransforms","CSS","springs","minMax","stringContains","str","applyArguments","func","pth","svg","SVGElement","inp","HTMLInputElement","fnc","und","nil","hex","rgb","hsl","col","parseEasingParameters","string","exec","spring","mass","stiffness","damping","w0","zeta","wd","solver","exp","cached","frame","elapsed","rest","steps","eases","functionEasings","bezier","kSampleStepSize","aA1","aA2","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentT","binarySubdivide","getTForX","penner","linear","Sine","Circ","Back","Bounce","pow2","pow","Elastic","amplitude","period","asin","easeIn","parseEasings","ease","selectString","filterArray","thisArg","result","flattenArray","reduce","toArray","NodeList","HTMLCollection","arrayContains","some","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","getUnit","getFunctionValue","animatable","convertPxToUnit","unit","tempEl","parentEl","factor","convertedUnit","getCSSValue","uppercasePropName","getAnimationType","getElementTransforms","reg","transforms","Map","getOriginalTargetValue","propName","defaultVal","getTransformUnit","list","getTransformValue","getRelativeValue","operator","validateValue","rgbValue","hexValue","hexToRgba","hslValue","hue2rgb","hslToRgba","colorToRgb","originalUnit","unitLess","getDistance","p1","p2","getPolylineLength","previousPos","totalLength","numberOfItems","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","viewBoxAttr","viewBox","vW","vH","getPathProgress","isPathTargetInsideSVG","getPointAtLength","p0","decomposeValue","rgx","original","numbers","strings","parseTargets","targets","pos","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","setProgressValue","attribute","manual","last","setTargetsValue","properties","valueUnit","originalValue","animType","getAnimations","animatables","tweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","previousValue","fromUnit","isPath","isColor","normalizeTweens","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","activeInstances","engine","raf","activeInstancesLength","activeInstance","tick","anime","suspendWhenDocumentHidden","isDocumentHidden","_onDocumentVisibility","hidden","lastTime","childrenLength","resolve","makePromise","promise","Promise","_resolve","finished","instanceSettings","keyframes","propertyNames","newKey","flattenKeyframes","getProperties","createNewInstance","toggleInstanceDirection","reversed","adjustTime","resetTime","currentTime","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","reset","play","reverse","restart","removeTargetsFromInstance","removeTargetsFromAnimations","targetsArray","childAnimations","version","convertPx","percent","setDashoffset","pathLength","stagger","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","values","maxValue","fromX","fromY","distanceX","distanceY","timeline","tl","instanceParams","tlIndex","ins","insParams","tlDuration","ScrollObserver","_init","io","entry","POLL_INTERVAL","loadingElm","slideLength","touchEnd","aboutSwiperFunc","MainPC","_observers","_scrollInit","_inviewAnimation","_inviewAnimation2","_inviewAnimation3","inview","MainSP","LazyLoad","setHeight","vh","humOpen","nav","navBgLists","header","set_position","navFunc","clicked","dataset"],"sourceRoot":""}