{
  "version": 3,
  "sources": ["../../../../frontend/node_modules/fslightbox/index.js", "../../../../frontend/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../../frontend/node_modules/ssr-window/ssr-window.esm.js", "../../../../frontend/node_modules/dom7/dom7.esm.js", "../../../../frontend/node_modules/swiper/shared/dom.js", "../../../../frontend/node_modules/swiper/shared/utils.js", "../../../../frontend/node_modules/swiper/shared/get-support.js", "../../../../frontend/node_modules/swiper/shared/get-device.js", "../../../../frontend/node_modules/swiper/shared/get-browser.js", "../../../../frontend/node_modules/swiper/core/modules/resize/resize.js", "../../../../frontend/node_modules/swiper/core/modules/observer/observer.js", "../../../../frontend/node_modules/swiper/core/events-emitter.js", "../../../../frontend/node_modules/swiper/core/update/updateSize.js", "../../../../frontend/node_modules/swiper/core/update/updateSlides.js", "../../../../frontend/node_modules/swiper/core/update/updateAutoHeight.js", "../../../../frontend/node_modules/swiper/core/update/updateSlidesOffset.js", "../../../../frontend/node_modules/swiper/core/update/updateSlidesProgress.js", "../../../../frontend/node_modules/swiper/core/update/updateProgress.js", "../../../../frontend/node_modules/swiper/core/update/updateSlidesClasses.js", "../../../../frontend/node_modules/swiper/core/update/updateActiveIndex.js", "../../../../frontend/node_modules/swiper/core/update/updateClickedSlide.js", "../../../../frontend/node_modules/swiper/core/update/index.js", "../../../../frontend/node_modules/swiper/core/translate/getTranslate.js", "../../../../frontend/node_modules/swiper/core/translate/setTranslate.js", "../../../../frontend/node_modules/swiper/core/translate/minTranslate.js", "../../../../frontend/node_modules/swiper/core/translate/maxTranslate.js", "../../../../frontend/node_modules/swiper/core/translate/translateTo.js", "../../../../frontend/node_modules/swiper/core/translate/index.js", "../../../../frontend/node_modules/swiper/core/transition/setTransition.js", "../../../../frontend/node_modules/swiper/core/transition/transitionEmit.js", "../../../../frontend/node_modules/swiper/core/transition/transitionStart.js", "../../../../frontend/node_modules/swiper/core/transition/transitionEnd.js", "../../../../frontend/node_modules/swiper/core/transition/index.js", "../../../../frontend/node_modules/swiper/core/slide/slideTo.js", "../../../../frontend/node_modules/swiper/core/slide/slideToLoop.js", "../../../../frontend/node_modules/swiper/core/slide/slideNext.js", "../../../../frontend/node_modules/swiper/core/slide/slidePrev.js", "../../../../frontend/node_modules/swiper/core/slide/slideReset.js", "../../../../frontend/node_modules/swiper/core/slide/slideToClosest.js", "../../../../frontend/node_modules/swiper/core/slide/slideToClickedSlide.js", "../../../../frontend/node_modules/swiper/core/slide/index.js", "../../../../frontend/node_modules/swiper/core/loop/loopCreate.js", "../../../../frontend/node_modules/swiper/core/loop/loopFix.js", "../../../../frontend/node_modules/swiper/core/loop/loopDestroy.js", "../../../../frontend/node_modules/swiper/core/loop/index.js", "../../../../frontend/node_modules/swiper/core/grab-cursor/setGrabCursor.js", "../../../../frontend/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js", "../../../../frontend/node_modules/swiper/core/grab-cursor/index.js", "../../../../frontend/node_modules/swiper/core/events/onTouchStart.js", "../../../../frontend/node_modules/swiper/core/events/onTouchMove.js", "../../../../frontend/node_modules/swiper/core/events/onTouchEnd.js", "../../../../frontend/node_modules/swiper/core/events/onResize.js", "../../../../frontend/node_modules/swiper/core/events/onClick.js", "../../../../frontend/node_modules/swiper/core/events/onScroll.js", "../../../../frontend/node_modules/swiper/core/events/index.js", "../../../../frontend/node_modules/swiper/core/breakpoints/setBreakpoint.js", "../../../../frontend/node_modules/swiper/core/breakpoints/getBreakpoint.js", "../../../../frontend/node_modules/swiper/core/breakpoints/index.js", "../../../../frontend/node_modules/swiper/core/classes/addClasses.js", "../../../../frontend/node_modules/swiper/core/classes/removeClasses.js", "../../../../frontend/node_modules/swiper/core/classes/index.js", "../../../../frontend/node_modules/swiper/core/images/loadImage.js", "../../../../frontend/node_modules/swiper/core/images/preloadImages.js", "../../../../frontend/node_modules/swiper/core/images/index.js", "../../../../frontend/node_modules/swiper/core/check-overflow/index.js", "../../../../frontend/node_modules/swiper/core/defaults.js", "../../../../frontend/node_modules/swiper/core/moduleExtendParams.js", "../../../../frontend/node_modules/swiper/core/core.js", "../../../../frontend/node_modules/swiper/modules/virtual/virtual.js", "../../../../frontend/node_modules/swiper/modules/keyboard/keyboard.js", "../../../../frontend/node_modules/swiper/modules/mousewheel/mousewheel.js", "../../../../frontend/node_modules/swiper/shared/create-element-if-not-defined.js", "../../../../frontend/node_modules/swiper/modules/navigation/navigation.js", "../../../../frontend/node_modules/swiper/shared/classes-to-selector.js", "../../../../frontend/node_modules/swiper/modules/pagination/pagination.js", "../../../../frontend/node_modules/swiper/modules/scrollbar/scrollbar.js", "../../../../frontend/node_modules/swiper/modules/parallax/parallax.js", "../../../../frontend/node_modules/swiper/modules/zoom/zoom.js", "../../../../frontend/node_modules/swiper/modules/lazy/lazy.js", "../../../../frontend/node_modules/swiper/modules/controller/controller.js", "../../../../frontend/node_modules/swiper/modules/a11y/a11y.js", "../../../../frontend/node_modules/swiper/modules/history/history.js", "../../../../frontend/node_modules/swiper/modules/hash-navigation/hash-navigation.js", "../../../../frontend/node_modules/swiper/modules/autoplay/autoplay.js", "../../../../frontend/node_modules/swiper/modules/thumbs/thumbs.js", "../../../../frontend/node_modules/swiper/modules/free-mode/free-mode.js", "../../../../frontend/node_modules/swiper/modules/grid/grid.js", "../../../../frontend/node_modules/swiper/modules/manipulation/methods/appendSlide.js", "../../../../frontend/node_modules/swiper/modules/manipulation/methods/prependSlide.js", "../../../../frontend/node_modules/swiper/modules/manipulation/methods/addSlide.js", "../../../../frontend/node_modules/swiper/modules/manipulation/methods/removeSlide.js", "../../../../frontend/node_modules/swiper/modules/manipulation/methods/removeAllSlides.js", "../../../../frontend/node_modules/swiper/modules/manipulation/manipulation.js", "../../../../frontend/node_modules/swiper/shared/effect-init.js", "../../../../frontend/node_modules/swiper/shared/effect-target.js", "../../../../frontend/node_modules/swiper/shared/effect-virtual-transition-end.js", "../../../../frontend/node_modules/swiper/modules/effect-fade/effect-fade.js", "../../../../frontend/node_modules/swiper/modules/effect-cube/effect-cube.js", "../../../../frontend/node_modules/swiper/shared/create-shadow.js", "../../../../frontend/node_modules/swiper/modules/effect-flip/effect-flip.js", "../../../../frontend/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js", "../../../../frontend/node_modules/swiper/modules/effect-creative/effect-creative.js", "../../../../frontend/node_modules/swiper/modules/effect-cards/effect-cards.js", "../../../../frontend/node_modules/swiper/swiper-bundle.esm.js", "../../../../frontend/node_modules/stimulus-carousel/dist/stimulus-carousel.es.js", "../../../../frontend/scripts/_carousel_controller.js", "../../../../frontend/scripts/main.js"],
  "sourcesContent": ["!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)(\"object\"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=0)}([function(e,t,n){\"use strict\";n.r(t);var o,i=\"fslightbox-\",r=\"\".concat(i,\"styles\"),s=\"\".concat(i,\"cursor-grabbing\"),a=\"\".concat(i,\"full-dimension\"),c=\"\".concat(i,\"flex-centered\"),l=\"\".concat(i,\"open\"),u=\"\".concat(i,\"transform-transition\"),d=\"\".concat(i,\"absoluted\"),f=\"\".concat(i,\"slide-btn\"),p=\"\".concat(f,\"-container\"),h=\"\".concat(i,\"fade-in\"),m=\"\".concat(i,\"fade-out\"),g=h+\"-strong\",v=m+\"-strong\",b=\"\".concat(i,\"opacity-\"),x=\"\".concat(b,\"1\"),y=\"\".concat(i,\"source\");function w(e){return(w=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function S(e){var t=e.stageIndexes,n=e.core.stageManager,o=e.props.sources.length-1;n.getPreviousSlideIndex=function(){return 0===t.current?o:t.current-1},n.getNextSlideIndex=function(){return t.current===o?0:t.current+1},n.updateStageIndexes=0===o?function(){}:1===o?function(){0===t.current?(t.next=1,delete t.previous):(t.previous=0,delete t.next)}:function(){t.previous=n.getPreviousSlideIndex(),t.next=n.getNextSlideIndex()},n.i=o<=2?function(){return!0}:function(e){var n=t.current;if(0===n&&e===o||n===o&&0===e)return!0;var i=n-e;return-1===i||0===i||1===i}}\"object\"===(\"undefined\"==typeof document?\"undefined\":w(document))&&((o=document.createElement(\"style\")).className=r,o.appendChild(document.createTextNode(\".fslightbox-absoluted{position:absolute;top:0;left:0}.fslightbox-fade-in{animation:fslightbox-fade-in .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out{animation:fslightbox-fade-out .3s ease}.fslightbox-fade-in-strong{animation:fslightbox-fade-in-strong .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out-strong{animation:fslightbox-fade-out-strong .3s ease}@keyframes fslightbox-fade-in{from{opacity:.65}to{opacity:1}}@keyframes fslightbox-fade-out{from{opacity:.35}to{opacity:0}}@keyframes fslightbox-fade-in-strong{from{opacity:.3}to{opacity:1}}@keyframes fslightbox-fade-out-strong{from{opacity:1}to{opacity:0}}.fslightbox-cursor-grabbing{cursor:grabbing}.fslightbox-full-dimension{width:100%;height:100%}.fslightbox-open{overflow:hidden;height:100%}.fslightbox-flex-centered{display:flex;justify-content:center;align-items:center}.fslightbox-opacity-0{opacity:0!important}.fslightbox-opacity-1{opacity:1!important}.fslightbox-scrollbarfix{padding-right:17px}.fslightbox-transform-transition{transition:transform .3s}.fslightbox-container{font-family:Arial,sans-serif;position:fixed;top:0;left:0;background:linear-gradient(rgba(30,30,30,.9),#000 1810%);touch-action:pinch-zoom;z-index:1000000000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fslightbox-container *{box-sizing:border-box}.fslightbox-svg-path{transition:fill .15s ease;fill:#ddd}.fslightbox-nav{height:45px;width:100%;position:absolute;top:0;left:0}.fslightbox-slide-number-container{display:flex;justify-content:center;align-items:center;position:relative;height:100%;font-size:15px;color:#d7d7d7;z-index:0;max-width:55px;text-align:left}.fslightbox-slide-number-container .fslightbox-flex-centered{height:100%}.fslightbox-slash{display:block;margin:0 5px;width:1px;height:12px;transform:rotate(15deg);background:#fff}.fslightbox-toolbar{position:absolute;z-index:3;right:0;top:0;height:100%;display:flex;background:rgba(35,35,35,.65)}.fslightbox-toolbar-button{height:100%;width:45px;cursor:pointer}.fslightbox-toolbar-button:hover .fslightbox-svg-path{fill:#fff}.fslightbox-slide-btn-container{display:flex;align-items:center;padding:12px 12px 12px 6px;position:absolute;top:50%;cursor:pointer;z-index:3;transform:translateY(-50%)}@media (min-width:476px){.fslightbox-slide-btn-container{padding:22px 22px 22px 6px}}@media (min-width:768px){.fslightbox-slide-btn-container{padding:30px 30px 30px 6px}}.fslightbox-slide-btn-container:hover .fslightbox-svg-path{fill:#f1f1f1}.fslightbox-slide-btn{padding:9px;font-size:26px;background:rgba(35,35,35,.65)}@media (min-width:768px){.fslightbox-slide-btn{padding:10px}}@media (min-width:1600px){.fslightbox-slide-btn{padding:11px}}.fslightbox-slide-btn-container-previous{left:0}@media (max-width:475.99px){.fslightbox-slide-btn-container-previous{padding-left:3px}}.fslightbox-slide-btn-container-next{right:0;padding-left:12px;padding-right:3px}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-left:22px}}@media (min-width:768px){.fslightbox-slide-btn-container-next{padding-left:30px}}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-right:6px}}.fslightbox-down-event-detector{position:absolute;z-index:1}.fslightbox-slide-swiping-hoverer{z-index:4}.fslightbox-invalid-file-wrapper{font-size:22px;color:#eaebeb;margin:auto}.fslightbox-video{object-fit:cover}.fslightbox-youtube-iframe{border:0}.fslightboxl{display:block;margin:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:67px;height:67px}.fslightboxl div{box-sizing:border-box;display:block;position:absolute;width:54px;height:54px;margin:6px;border:5px solid;border-color:#999 transparent transparent transparent;border-radius:50%;animation:fslightboxl 1.2s cubic-bezier(.5,0,.5,1) infinite}.fslightboxl div:nth-child(1){animation-delay:-.45s}.fslightboxl div:nth-child(2){animation-delay:-.3s}.fslightboxl div:nth-child(3){animation-delay:-.15s}@keyframes fslightboxl{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fslightbox-source{position:relative;z-index:2;opacity:0}\")),document.head.appendChild(o));function L(e){var t,n=e.props,o=0,i={};this.getSourceTypeFromLocalStorageByUrl=function(e){return t[e]?t[e]:r(e)},this.handleReceivedSourceTypeForUrl=function(e,n){if(!1===i[n]&&(o--,\"invalid\"!==e?i[n]=e:delete i[n],0===o)){!function(e,t){for(var n in t)e[n]=t[n]}(t,i);try{localStorage.setItem(\"fslightbox-types\",JSON.stringify(t))}catch(e){}}};var r=function(e){o++,i[e]=!1};if(n.disableLocalStorage)this.getSourceTypeFromLocalStorageByUrl=function(){},this.handleReceivedSourceTypeForUrl=function(){};else{try{t=JSON.parse(localStorage.getItem(\"fslightbox-types\"))}catch(e){}t||(t={},this.getSourceTypeFromLocalStorageByUrl=r)}}function A(e,t,n,o){var i=e.data,r=e.elements.sources,s=n/o,a=0;this.adjustSize=function(){if((a=i.maxSourceWidth/s)<i.maxSourceHeight)return n<i.maxSourceWidth&&(a=o),c();a=o>i.maxSourceHeight?i.maxSourceHeight:o,c()};var c=function(){r[t].style.width=a*s+\"px\",r[t].style.height=a+\"px\"}}function C(e,t){var n=this,o=e.collections.sourceSizers,i=e.elements,r=i.sourceAnimationWrappers,s=i.sources,a=e.isl,c=e.resolve;function l(e,n){o[t]=c(A,[t,e,n]),o[t].adjustSize()}this.runActions=function(e,o){a[t]=!0,s[t].classList.add(x),r[t].classList.add(g),r[t].removeChild(r[t].firstChild),l(e,o),n.runActions=l}}function E(e,t){var n,o=this,i=e.elements.sources,r=e.props,s=(0,e.resolve)(C,[t]);this.handleImageLoad=function(e){var t=e.target,n=t.naturalWidth,o=t.naturalHeight;s.runActions(n,o)},this.handleVideoLoad=function(e){var t=e.target,o=t.videoWidth,i=t.videoHeight;n=!0,s.runActions(o,i)},this.handleNotMetaDatedVideoLoad=function(){n||o.handleYoutubeLoad()},this.handleYoutubeLoad=function(){var e=1920,t=1080;r.maxYoutubeDimensions&&(e=r.maxYoutubeDimensions.width,t=r.maxYoutubeDimensions.height),s.runActions(e,t)},this.handleCustomLoad=function(){var e=i[t],n=e.offsetWidth,r=e.offsetHeight;n&&r?s.runActions(n,r):setTimeout(o.handleCustomLoad)}}function F(e,t,n){var o=e.elements.sources,i=e.props.customClasses,r=i[t]?i[t]:\"\";o[t].className=n+\" \"+r}function I(e,t){var n=e.elements.sources,o=e.props.customAttributes;for(var i in o[t])n[t].setAttribute(i,o[t][i])}function T(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props.sources;i[t]=document.createElement(\"img\"),F(e,t,y),i[t].src=s[t],i[t].onload=n[t].handleImageLoad,I(e,t),r[t].appendChild(i[t])}function N(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props,a=s.sources,c=s.videosPosters;i[t]=document.createElement(\"video\"),F(e,t,y),i[t].src=a[t],i[t].onloadedmetadata=function(e){n[t].handleVideoLoad(e)},i[t].controls=!0,I(e,t),c[t]&&(i[t].poster=c[t]);var l=document.createElement(\"source\");l.src=a[t],i[t].appendChild(l),setTimeout(n[t].handleNotMetaDatedVideoLoad,3e3),r[t].appendChild(i[t])}function z(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,r=o.sources,s=o.sourceAnimationWrappers,a=e.props.sources;r[t]=document.createElement(\"iframe\"),F(e,t,\"\".concat(y,\" \").concat(i,\"youtube-iframe\"));var c=a[t],l=c.split(\"?\")[1];r[t].src=\"https://www.youtube.com/embed/\".concat(c.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/)[2],\"?\").concat(l||\"\"),r[t].allowFullscreen=!0,I(e,t),s[t].appendChild(r[t]),n[t].handleYoutubeLoad()}function P(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props.sources;i[t]=s[t],F(e,t,\"\".concat(i[t].className,\" \").concat(y)),r[t].appendChild(i[t]),n[t].handleCustomLoad()}function k(e,t){var n=e.elements,o=n.sources,r=n.sourceAnimationWrappers;e.props.sources;o[t]=document.createElement(\"div\"),o[t].className=\"\".concat(i,\"invalid-file-wrapper \").concat(c),o[t].innerHTML=\"Invalid source\",r[t].classList.add(g),r[t].removeChild(r[t].firstChild),r[t].appendChild(o[t])}function H(e){var t=e.collections,n=t.sourceLoadHandlers,o=t.sourcesRenderFunctions,i=e.core.sourceDisplayFacade,r=e.resolve;this.runActionsForSourceTypeAndIndex=function(t,s){var a;switch(\"invalid\"!==t&&(n[s]=r(E,[s])),t){case\"image\":a=T;break;case\"video\":a=N;break;case\"youtube\":a=z;break;case\"custom\":a=P;break;default:a=k}o[s]=function(){return a(e,s)},i.displaySourcesWhichShouldBeDisplayed()}}function W(){var e,t,n,o={isUrlYoutubeOne:function(e){var t=document.createElement(\"a\");return t.href=e,\"www.youtube.com\"===t.hostname||\"youtu.be\"===t.hostname},getTypeFromResponseContentType:function(e){return e.slice(0,e.indexOf(\"/\"))}};function i(){if(4!==n.readyState){if(2===n.readyState){var e;switch(o.getTypeFromResponseContentType(n.getResponseHeader(\"content-type\"))){case\"image\":e=\"image\";break;case\"video\":e=\"video\";break;default:e=\"invalid\"}n.onreadystatechange=null,n.abort(),t(e)}}else t(\"invalid\")}this.setUrlToCheck=function(t){e=t},this.getSourceType=function(r){if(o.isUrlYoutubeOne(e))return r(\"youtube\");t=r,(n=new XMLHttpRequest).onreadystatechange=i,n.open(\"GET\",e,!0),n.send()}}function R(e,t,n){var o=e.props,i=o.types,r=o.type,s=o.sources,a=e.resolve;this.getTypeSetByClientForIndex=function(e){var t;return i&&i[e]?t=i[e]:r&&(t=r),t},this.retrieveTypeWithXhrForIndex=function(e){var o=a(W);o.setUrlToCheck(s[e]),o.getSourceType((function(o){t.handleReceivedSourceTypeForUrl(o,s[e]),n.runActionsForSourceTypeAndIndex(o,e)}))}}function D(e,t){var n=e.core.stageManager,o=e.elements,i=o.smw,r=o.sourceWrappersContainer,s=e.props,l=0,f=document.createElement(\"div\");function p(e){f.style.transform=\"translateX(\".concat(e+l,\"px)\"),l=0}function h(){return(1+s.slideDistance)*innerWidth}f.className=\"\".concat(d,\" \").concat(a,\" \").concat(c),f.s=function(){f.style.display=\"flex\"},f.h=function(){f.style.display=\"none\"},f.a=function(){f.classList.add(u)},f.d=function(){f.classList.remove(u)},f.n=function(){f.style.removeProperty(\"transform\")},f.v=function(e){return l=e,f},f.ne=function(){p(-h())},f.z=function(){p(0)},f.p=function(){p(h())},n.i(t)||f.h(),i[t]=f,r.appendChild(f),function(e,t){var n=e.elements,o=n.smw,i=n.sourceAnimationWrappers,r=document.createElement(\"div\"),s=document.createElement(\"div\");s.className=\"fslightboxl\";for(var a=0;a<3;a++){var c=document.createElement(\"div\");s.appendChild(c)}r.appendChild(s),o[t].appendChild(r),i[t]=r}(e,t)}function O(e,t,n,o){var r=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");r.setAttributeNS(null,\"width\",t),r.setAttributeNS(null,\"height\",t),r.setAttributeNS(null,\"viewBox\",n);var s=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\");return s.setAttributeNS(null,\"class\",\"\".concat(i,\"svg-path\")),s.setAttributeNS(null,\"d\",o),r.appendChild(s),e.appendChild(r),r}function M(e,t){var n=document.createElement(\"div\");return n.className=\"\".concat(i,\"toolbar-button \").concat(c),n.title=t,e.appendChild(n),n}function j(e,t){var n=document.createElement(\"div\");n.className=\"\".concat(i,\"toolbar\"),t.appendChild(n),function(e,t){var n=e.componentsServices,o=e.data,i=e.fs,r=\"M4.5 11H3v4h4v-1.5H4.5V11zM3 7h1.5V4.5H7V3H3v4zm10.5 6.5H11V15h4v-4h-1.5v2.5zM11 3v1.5h2.5V7H15V3h-4z\",s=M(t);s.title=\"Enter fullscreen\";var a=O(s,\"20px\",\"0 0 18 18\",r);n.ofs=function(){o.ifs=!0,s.title=\"Exit fullscreen\",a.setAttributeNS(null,\"width\",\"24px\"),a.setAttributeNS(null,\"height\",\"24px\"),a.setAttributeNS(null,\"viewBox\",\"0 0 950 1024\"),a.firstChild.setAttributeNS(null,\"d\",\"M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z\")},n.xfs=function(){o.ifs=!1,s.title=\"Enter fullscreen\",a.setAttributeNS(null,\"width\",\"20px\"),a.setAttributeNS(null,\"height\",\"20px\"),a.setAttributeNS(null,\"viewBox\",\"0 0 18 18\"),a.firstChild.setAttributeNS(null,\"d\",r)},s.onclick=i.t}(e,n),function(e,t){var n=M(t,\"Close\");n.onclick=e.core.lightboxCloser.closeLightbox,O(n,\"20px\",\"0 0 24 24\",\"M 4.7070312 3.2929688 L 3.2929688 4.7070312 L 10.585938 12 L 3.2929688 19.292969 L 4.7070312 20.707031 L 12 13.414062 L 19.292969 20.707031 L 20.707031 19.292969 L 13.414062 12 L 20.707031 4.7070312 L 19.292969 3.2929688 L 12 10.585938 L 4.7070312 3.2929688 z\")}(e,n)}function X(e){var t=e.props.sources,n=e.elements.container,o=document.createElement(\"div\");o.className=\"\".concat(i,\"nav\"),n.appendChild(o),j(e,o),t.length>1&&function(e,t){var n=e.componentsServices,o=e.props.sources,r=(e.stageIndexes,document.createElement(\"div\"));r.className=\"\".concat(i,\"slide-number-container\");var s=document.createElement(\"div\");s.className=c;var a=document.createElement(\"span\");n.setSlideNumber=function(e){return a.innerHTML=e};var l=document.createElement(\"span\");l.className=\"\".concat(i,\"slash\");var u=document.createElement(\"div\");u.innerHTML=o.length,r.appendChild(s),s.appendChild(a),s.appendChild(l),s.appendChild(u),t.appendChild(r),setTimeout((function(){s.offsetWidth>55&&(r.style.justifyContent=\"flex-start\")}))}(e,o)}function B(e,t,n,o){var i=e.elements.container,r=n.charAt(0).toUpperCase()+n.slice(1),s=document.createElement(\"div\");s.className=\"\".concat(p,\" \").concat(p,\"-\").concat(n),s.title=\"\".concat(r,\" slide\"),s.onclick=t,function(e,t){var n=document.createElement(\"div\");n.className=\"\".concat(f,\" \").concat(c),O(n,\"20px\",\"0 0 20 20\",t),e.appendChild(n)}(s,o),i.appendChild(s)}function U(e){var t=e.core,n=t.lightboxCloser,o=t.slideChangeFacade,i=e.fs;this.listener=function(e){switch(e.key){case\"Escape\":n.closeLightbox();break;case\"ArrowLeft\":o.changeToPrevious();break;case\"ArrowRight\":o.changeToNext();break;case\"F11\":e.preventDefault(),i.t()}}}function q(e){var t=e.elements,n=e.sourcePointerProps,o=e.stageIndexes;function i(e,o){t.smw[e].v(n.swipedX)[o]()}this.runActionsForEvent=function(e){var r,a,c;t.container.contains(t.slideSwipingHoverer)||t.container.appendChild(t.slideSwipingHoverer),r=t.container,a=s,(c=r.classList).contains(a)||c.add(a),n.swipedX=e.screenX-n.downScreenX;var l=o.previous,u=o.next;i(o.current,\"z\"),void 0!==l&&n.swipedX>0?i(l,\"ne\"):void 0!==u&&n.swipedX<0&&i(u,\"p\")}}function V(e){var t=e.props.sources,n=e.resolve,o=e.sourcePointerProps,i=n(q);1===t.length?this.listener=function(){o.swipedX=1}:this.listener=function(e){o.isPointering&&i.runActionsForEvent(e)}}function _(e){var t=e.core.slideIndexChanger,n=e.elements.smw,o=e.stageIndexes,i=e.sws;function r(e){var t=n[o.current];t.a(),t[e]()}function s(e,t){void 0!==e&&(n[e].s(),n[e][t]())}this.runPositiveSwipedXActions=function(){var e=o.previous;if(void 0===e)r(\"z\");else{r(\"p\");var n=o.next;t.changeTo(e);var a=o.previous;i.d(a),i.b(n),r(\"z\"),s(a,\"ne\")}},this.runNegativeSwipedXActions=function(){var e=o.next;if(void 0===e)r(\"z\");else{r(\"ne\");var n=o.previous;t.changeTo(e);var a=o.next;i.d(a),i.b(n),r(\"z\"),s(a,\"p\")}}}function Y(e,t){e.contains(t)&&e.removeChild(t)}function J(e){var t=e.core.lightboxCloser,n=e.elements,o=e.resolve,i=e.sourcePointerProps,r=o(_);this.runNoSwipeActions=function(){Y(n.container,n.slideSwipingHoverer),i.isSourceDownEventTarget||t.closeLightbox(),i.isPointering=!1},this.runActions=function(){i.swipedX>0?r.runPositiveSwipedXActions():r.runNegativeSwipedXActions(),Y(n.container,n.slideSwipingHoverer),n.container.classList.remove(s),i.isPointering=!1}}function G(e){var t=e.resolve,n=e.sourcePointerProps,o=t(J);this.listener=function(){n.isPointering&&(n.swipedX?o.runActions():o.runNoSwipeActions())}}function $(e){var t=this,n=e.core,o=n.eventsDispatcher,i=n.globalEventsController,r=n.scrollbarRecompensor,s=e.data,a=e.elements,c=e.fs,u=e.props,d=e.sourcePointerProps;this.isLightboxFadingOut=!1,this.runActions=function(){t.isLightboxFadingOut=!0,a.container.classList.add(v),i.removeListeners(),u.exitFullscreenOnClose&&s.ifs&&c.x(),setTimeout((function(){t.isLightboxFadingOut=!1,d.isPointering=!1,a.container.classList.remove(v),document.documentElement.classList.remove(l),r.removeRecompense(),document.body.removeChild(a.container),o.dispatch(\"onClose\")}),270)}}function K(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function Q(e){var t,n,o;n=(t=e).core.eventsDispatcher,o=t.props,n.dispatch=function(e){o[e]&&o[e]()},function(e){var t=e.componentsServices,n=e.data,o=e.fs,i=[\"fullscreenchange\",\"webkitfullscreenchange\",\"mozfullscreenchange\",\"MSFullscreenChange\"];function r(e){for(var t=0;t<i.length;t++)document[e](i[t],s)}function s(){document.fullscreenElement||document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement?t.ofs():t.xfs()}o.o=function(){t.ofs();var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.msRequestFullscreen&&e.msRequestFullscreen()},o.x=function(){t.xfs(),document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},o.t=function(){n.ifs?o.x():o.o()},o.l=function(){r(\"addEventListener\")},o.q=function(){r(\"removeEventListener\")}}(e),function(e){var t=e.core,n=t.globalEventsController,o=t.windowResizeActioner,i=e.fs,r=e.resolve,s=r(U),a=r(V),c=r(G);n.attachListeners=function(){document.addEventListener(\"pointermove\",a.listener),document.addEventListener(\"pointerup\",c.listener),addEventListener(\"resize\",o.runActions),document.addEventListener(\"keydown\",s.listener),i.l()},n.removeListeners=function(){document.removeEventListener(\"pointermove\",a.listener),document.removeEventListener(\"pointerup\",c.listener),removeEventListener(\"resize\",o.runActions),document.removeEventListener(\"keydown\",s.listener),i.q()}}(e),function(e){var t=e.core.lightboxCloser,n=(0,e.resolve)($);t.closeLightbox=function(){n.isLightboxFadingOut||n.runActions()}}(e),function(e){var t=e.data,n=e.core.scrollbarRecompensor;function o(){document.body.offsetHeight>innerHeight&&(document.body.style.marginRight=t.scrollbarWidth+\"px\")}n.addRecompense=function(){\"complete\"===document.readyState?o():addEventListener(\"load\",(function(){o(),n.addRecompense=o}))},n.removeRecompense=function(){document.body.style.removeProperty(\"margin-right\")}}(e),function(e){var t=e.core,n=t.slideChangeFacade,o=t.slideIndexChanger,i=t.stageManager;e.props.sources.length>1?(n.changeToPrevious=function(){o.jumpTo(i.getPreviousSlideIndex())},n.changeToNext=function(){o.jumpTo(i.getNextSlideIndex())}):(n.changeToPrevious=function(){},n.changeToNext=function(){})}(e),function(e){var t=e.componentsServices,n=e.core,o=n.slideIndexChanger,i=n.sourceDisplayFacade,r=n.stageManager,s=e.elements,a=s.smw,c=s.sourceAnimationWrappers,l=e.isl,u=e.stageIndexes,d=e.sws;o.changeTo=function(e){u.current=e,r.updateStageIndexes(),t.setSlideNumber(e+1),i.displaySourcesWhichShouldBeDisplayed()},o.jumpTo=function(e){var t=u.previous,n=u.current,i=u.next,s=l[n],f=l[e];o.changeTo(e);for(var p=0;p<a.length;p++)a[p].d();d.d(n),d.c(),requestAnimationFrame((function(){requestAnimationFrame((function(){var e=u.previous,o=u.next;function p(){r.i(n)?n===u.previous?a[n].ne():n===u.next&&a[n].p():(a[n].h(),a[n].n())}s&&c[n].classList.add(m),f&&c[u.current].classList.add(h),d.a(),void 0!==e&&e!==n&&a[e].ne(),a[u.current].n(),void 0!==o&&o!==n&&a[o].p(),d.b(t),d.b(i),l[n]?setTimeout(p,260):p()}))}))}}(e),function(e){var t=e.core.sourcesPointerDown,n=e.elements,o=n.smw,i=n.sources,r=e.sourcePointerProps,s=e.stageIndexes;t.listener=function(e){\"VIDEO\"!==e.target.tagName&&e.preventDefault(),r.isPointering=!0,r.downScreenX=e.screenX,r.swipedX=0;var t=i[s.current];t&&t.contains(e.target)?r.isSourceDownEventTarget=!0:r.isSourceDownEventTarget=!1;for(var n=0;n<o.length;n++)o[n].d()}}(e),function(e){var t=e.collections.sourcesRenderFunctions,n=e.core.sourceDisplayFacade,o=e.props,i=e.stageIndexes;function r(e){t[e]&&(t[e](),delete t[e])}n.displaySourcesWhichShouldBeDisplayed=function(){if(o.loadOnlyCurrentSource)r(i.current);else for(var e in i)r(i[e])}}(e),function(e){var t=e.core.stageManager,n=e.elements,o=n.smw,i=n.sourceAnimationWrappers,r=e.isl,s=e.stageIndexes,a=e.sws;a.a=function(){for(var e in s)o[s[e]].s()},a.b=function(e){void 0===e||t.i(e)||(o[e].h(),o[e].n())},a.c=function(){for(var e in s)a.d(s[e])},a.d=function(e){if(r[e]){var t=i[e];K(t,g),K(t,h),K(t,m)}}}(e),function(e){var t=e.collections.sourceSizers,n=e.core.windowResizeActioner,o=e.data,i=e.elements.smw,r=e.stageIndexes;n.runActions=function(){innerWidth<992?o.maxSourceWidth=innerWidth:o.maxSourceWidth=.9*innerWidth,o.maxSourceHeight=.9*innerHeight;for(var e=0;e<i.length;e++)i[e].d(),t[e]&&t[e].adjustSize();var n=r.previous,s=r.next;void 0!==n&&i[n].ne(),void 0!==s&&i[s].p()}}(e)}function Z(e){var t=e.componentsServices,n=e.core,o=n.eventsDispatcher,r=n.globalEventsController,s=n.scrollbarRecompensor,c=n.sourceDisplayFacade,u=n.stageManager,f=n.windowResizeActioner,p=e.data,h=e.elements,m=(e.props,e.stageIndexes),v=e.sws;function b(){var t,n;p.i=!0,p.scrollbarWidth=function(){var e=document.createElement(\"div\"),t=e.style,n=document.createElement(\"div\");t.visibility=\"hidden\",t.width=\"100px\",t.msOverflowStyle=\"scrollbar\",t.overflow=\"scroll\",n.style.width=\"100%\",document.body.appendChild(e);var o=e.offsetWidth;e.appendChild(n);var i=n.offsetWidth;return document.body.removeChild(e),o-i}(),Q(e),h.container=document.createElement(\"div\"),h.container.className=\"\".concat(i,\"container \").concat(a,\" \").concat(g),function(e){var t=e.elements;t.slideSwipingHoverer=document.createElement(\"div\"),t.slideSwipingHoverer.className=\"\".concat(i,\"slide-swiping-hoverer \").concat(a,\" \").concat(d)}(e),X(e),function(e){var t=e.core.sourcesPointerDown,n=e.elements,o=e.props.sources,i=document.createElement(\"div\");i.className=\"\".concat(d,\" \").concat(a),n.container.appendChild(i),i.addEventListener(\"pointerdown\",t.listener),n.sourceWrappersContainer=i;for(var r=0;r<o.length;r++)D(e,r)}(e),e.props.sources.length>1&&(n=(t=e).core.slideChangeFacade,B(t,n.changeToPrevious,\"previous\",\"M18.271,9.212H3.615l4.184-4.184c0.306-0.306,0.306-0.801,0-1.107c-0.306-0.306-0.801-0.306-1.107,0L1.21,9.403C1.194,9.417,1.174,9.421,1.158,9.437c-0.181,0.181-0.242,0.425-0.209,0.66c0.005,0.038,0.012,0.071,0.022,0.109c0.028,0.098,0.075,0.188,0.142,0.271c0.021,0.026,0.021,0.061,0.045,0.085c0.015,0.016,0.034,0.02,0.05,0.033l5.484,5.483c0.306,0.307,0.801,0.307,1.107,0c0.306-0.305,0.306-0.801,0-1.105l-4.184-4.185h14.656c0.436,0,0.788-0.353,0.788-0.788S18.707,9.212,18.271,9.212z\"),B(t,n.changeToNext,\"next\",\"M1.729,9.212h14.656l-4.184-4.184c-0.307-0.306-0.307-0.801,0-1.107c0.305-0.306,0.801-0.306,1.106,0l5.481,5.482c0.018,0.014,0.037,0.019,0.053,0.034c0.181,0.181,0.242,0.425,0.209,0.66c-0.004,0.038-0.012,0.071-0.021,0.109c-0.028,0.098-0.075,0.188-0.143,0.271c-0.021,0.026-0.021,0.061-0.045,0.085c-0.015,0.016-0.034,0.02-0.051,0.033l-5.483,5.483c-0.306,0.307-0.802,0.307-1.106,0c-0.307-0.305-0.307-0.801,0-1.105l4.184-4.185H1.729c-0.436,0-0.788-0.353-0.788-0.788S1.293,9.212,1.729,9.212z\")),function(e){for(var t=e.props.sources,n=e.resolve,o=n(L),i=n(H),r=n(R,[o,i]),s=0;s<t.length;s++)if(\"string\"==typeof t[s]){var a=r.getTypeSetByClientForIndex(s);if(a)i.runActionsForSourceTypeAndIndex(a,s);else{var c=o.getSourceTypeFromLocalStorageByUrl(t[s]);c?i.runActionsForSourceTypeAndIndex(c,s):r.retrieveTypeWithXhrForIndex(s)}}else i.runActionsForSourceTypeAndIndex(\"custom\",s)}(e),o.dispatch(\"onInit\")}e.open=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=m.previous,a=m.current,d=m.next;m.current=n,p.i||S(e),u.updateStageIndexes(),p.i?(v.c(),v.a(),v.b(i),v.b(a),v.b(d),o.dispatch(\"onShow\")):b(),c.displaySourcesWhichShouldBeDisplayed(),t.setSlideNumber(n+1),document.body.appendChild(h.container),document.documentElement.classList.add(l),s.addRecompense(),r.attachListeners(),f.runActions(),h.smw[m.current].n(),o.dispatch(\"onOpen\")}}function ee(e,t,n){return(ee=te()?Reflect.construct.bind():function(e,t,n){var o=[null];o.push.apply(o,t);var i=new(Function.bind.apply(e,o));return n&&ne(i,n.prototype),i}).apply(null,arguments)}function te(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function ne(e,t){return(ne=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function oe(e){return function(e){if(Array.isArray(e))return ie(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||function(e,t){if(!e)return;if(\"string\"==typeof e)return ie(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ie(e,t)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function re(){for(var e=document.getElementsByTagName(\"a\"),t=function(t){if(!e[t].hasAttribute(\"data-fslightbox\"))return\"continue\";var n=e[t].hasAttribute(\"data-href\")?e[t].getAttribute(\"data-href\"):e[t].getAttribute(\"href\");if(!n)return console.warn('The \"data-fslightbox\" attribute was set without the \"href\" attribute.'),\"continue\";var o=e[t].getAttribute(\"data-fslightbox\");fsLightboxInstances[o]||(fsLightboxInstances[o]=new FsLightbox);var i=null;\"#\"===n.charAt(0)?(i=document.getElementById(n.substring(1)).cloneNode(!0)).removeAttribute(\"id\"):i=n,fsLightboxInstances[o].props.sources.push(i),fsLightboxInstances[o].elements.a.push(e[t]);var r=fsLightboxInstances[o].props.sources.length-1;e[t].onclick=function(e){e.preventDefault(),fsLightboxInstances[o].open(r)},d(\"types\",\"data-type\"),d(\"videosPosters\",\"data-video-poster\"),d(\"customClasses\",\"data-class\"),d(\"customClasses\",\"data-custom-class\");for(var s=[\"href\",\"data-fslightbox\",\"data-href\",\"data-type\",\"data-video-poster\",\"data-class\",\"data-custom-class\"],a=e[t].attributes,c=fsLightboxInstances[o].props.customAttributes,l=0;l<a.length;l++)if(-1===s.indexOf(a[l].name)&&\"data-\"===a[l].name.substr(0,5)){c[r]||(c[r]={});var u=a[l].name.substr(5);c[r][u]=a[l].value}function d(n,i){e[t].hasAttribute(i)&&(fsLightboxInstances[o].props[n][r]=e[t].getAttribute(i))}},n=0;n<e.length;n++)t(n);var o=Object.keys(fsLightboxInstances);window.fsLightbox=fsLightboxInstances[o[o.length-1]]}window.FsLightbox=function(){var e=this;this.props={sources:[],customAttributes:[],customClasses:[],types:[],videosPosters:[],slideDistance:.3},this.data={isFullscreenOpen:!1,maxSourceWidth:0,maxSourceHeight:0,scrollbarWidth:0},this.isl=[],this.sourcePointerProps={downScreenX:null,isPointering:!1,isSourceDownEventTarget:!1,swipedX:0},this.stageIndexes={},this.elements={a:[],container:null,slideSwipingHoverer:null,smw:[],sourceWrappersContainer:null,sources:[],sourceAnimationWrappers:[]},this.componentsServices={setSlideNumber:function(){}},this.resolve=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return n.unshift(e),ee(t,oe(n))},this.collections={sourceLoadHandlers:[],sourcesRenderFunctions:[],sourceSizers:[]},this.core={eventsDispatcher:{},globalEventsController:{},lightboxCloser:{},lightboxUpdater:{},scrollbarRecompensor:{},slideChangeFacade:{},slideIndexChanger:{},sourcesPointerDown:{},sourceDisplayFacade:{},stageManager:{},windowResizeActioner:{}},this.fs={},this.sws={},Z(this),this.close=function(){return e.core.lightboxCloser.closeLightbox()}},window.fsLightboxInstances={},re(),window.refreshFsLightbox=function(){for(var e in fsLightboxInstances){var t=fsLightboxInstances[e].props;fsLightboxInstances[e]=new FsLightbox,fsLightboxInstances[e].props=t,fsLightboxInstances[e].props.sources=[],fsLightboxInstances[e].elements.a=[]}re()}}])}));", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[2];\n    let keyFilter = matches[3];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName,\n        eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n        identifier: matches[5],\n        methodName: matches[6],\n        keyFilter: matches[1] || keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n    return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    shouldIgnoreKeyboardEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = this.keyFilter.split(\"+\");\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!hasProperty(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    shouldIgnoreMouseEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = [this.keyFilter];\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        return false;\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n    keyFilterDissatisfied(event, filters) {\n        const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n        return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        const actionEvent = this.prepareActionEvent(event);\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n            this.invokeWithEvent(actionEvent);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        const { controller } = this.context;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element, controller });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    prepareActionEvent(event) {\n        return Object.assign(event, { params: this.action.params });\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            this.method.call(this.controller, event);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n            return false;\n        }\n        if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(element, attributeName) {\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details) {\n        this._selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    get selector() {\n        return this._selector;\n    }\n    set selector(selector) {\n        this._selector = selector;\n        this.refresh();\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const { selector } = this;\n        if (selector) {\n            const matches = element.matches(selector);\n            if (this.delegate.selectorMatchElement) {\n                return matches && this.delegate.selectorMatchElement(element, this.details);\n            }\n            return matches;\n        }\n        else {\n            return false;\n        }\n    }\n    matchElementsInTree(tree) {\n        const { selector } = this;\n        if (selector) {\n            const match = this.matchElement(tree) ? [tree] : [];\n            const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n            return match.concat(matches);\n        }\n        else {\n            return [];\n        }\n    }\n    elementMatched(element) {\n        const { selector } = this;\n        if (selector) {\n            this.selectorMatched(element, selector);\n        }\n    }\n    elementUnmatched(element) {\n        const selectors = this.matchesByElement.getKeysForValue(element);\n        for (const selector of selectors) {\n            this.selectorUnmatched(element, selector);\n        }\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const { selector } = this;\n        if (selector) {\n            const matches = this.matchElement(element);\n            const matchedBefore = this.matchesByElement.has(selector, element);\n            if (matches && !matchedBefore) {\n                this.selectorMatched(element, selector);\n            }\n            else if (!matches && matchedBefore) {\n                this.selectorUnmatched(element, selector);\n            }\n        }\n    }\n    selectorMatched(element, selector) {\n        this.delegate.selectorMatched(element, selector, this.details);\n        this.matchesByElement.add(selector, element);\n    }\n    selectorUnmatched(element, selector) {\n        this.delegate.selectorUnmatched(element, selector, this.details);\n        this.matchesByElement.delete(selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.started = false;\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n        this.attributeObserverMap = new Map();\n    }\n    start() {\n        if (!this.started) {\n            this.outletDefinitions.forEach((outletName) => {\n                this.setupSelectorObserverForOutlet(outletName);\n                this.setupAttributeObserverForOutlet(outletName);\n            });\n            this.started = true;\n            this.dependentContexts.forEach((context) => context.refresh());\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n        this.attributeObserverMap.forEach((observer) => observer.refresh());\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.disconnectAllOutlets();\n            this.stopSelectorObservers();\n            this.stopAttributeObservers();\n        }\n    }\n    stopSelectorObservers() {\n        if (this.selectorObserverMap.size > 0) {\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    stopAttributeObservers() {\n        if (this.attributeObserverMap.size > 0) {\n            this.attributeObserverMap.forEach((observer) => observer.stop());\n            this.attributeObserverMap.clear();\n        }\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        const selector = this.selector(outletName);\n        const hasOutlet = this.hasOutlet(element, outletName);\n        const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n        if (selector) {\n            return hasOutlet && hasOutletController && element.matches(selector);\n        }\n        else {\n            return false;\n        }\n    }\n    elementMatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementAttributeValueChanged(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementUnmatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    updateSelectorObserverForOutlet(outletName) {\n        const observer = this.selectorObserverMap.get(outletName);\n        if (observer) {\n            observer.selector = this.selector(outletName);\n        }\n    }\n    setupSelectorObserverForOutlet(outletName) {\n        const selector = this.selector(outletName);\n        const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n        this.selectorObserverMap.set(outletName, selectorObserver);\n        selectorObserver.start();\n    }\n    setupAttributeObserverForOutlet(outletName) {\n        const attributeName = this.attributeNameForOutletName(outletName);\n        const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n        this.attributeObserverMap.set(outletName, attributeObserver);\n        attributeObserver.start();\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    attributeNameForOutletName(outletName) {\n        return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n    }\n    getOutletNameFromOutletAttributeName(attributeName) {\n        return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        return this.parseValueForElementAndIdentifier(element, identifier);\n    }\n    parseValueForElementAndIdentifier(element, identifier) {\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n        const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n        if (scope) {\n            this.scopeObserver.elementMatchedValue(scope.element, scope);\n        }\n        else {\n            console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n    return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n    let outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n    controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n    outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                    if (outletController)\n                        return outletController;\n                    throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n                }\n                throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outletElement) => {\n                        const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                        if (outletController)\n                            return outletController;\n                        console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    return outletElement;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const { controller, token, typeObject } = payload;\n    const hasType = isSomething(typeObject.type);\n    const hasDefault = isSomething(typeObject.default);\n    const fullObject = hasType && hasDefault;\n    const onlyType = hasType && !hasDefault;\n    const onlyDefault = !hasType && hasDefault;\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n    if (onlyType)\n        return typeFromObject;\n    if (onlyDefault)\n        return typeFromDefaultValue;\n    if (typeFromObject !== typeFromDefaultValue) {\n        const propertyPath = controller ? `${controller}.${token}` : token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n    }\n    if (fullObject)\n        return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const { controller, token, typeDefinition } = payload;\n    const typeObject = { controller, token, typeObject: typeDefinition };\n    const typeFromObject = parseValueTypeObject(typeObject);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const hasDefault = hasProperty(typeDefinition, \"default\");\n    const hasType = hasProperty(typeDefinition, \"type\");\n    const typeObject = typeDefinition;\n    if (hasDefault)\n        return typeObject.default;\n    if (hasType) {\n        const { type } = typeObject;\n        const constantFromType = parseValueTypeConstant(type);\n        if (constantFromType)\n            return defaultValuesByType[constantFromType];\n    }\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const { token, typeDefinition } = payload;\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value.replace(/_/g, \"\"));\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\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.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\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('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => 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 transitionStart(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionstart', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionstart', fireCallBack);\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, transitionStart, 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 = 0) {\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 = 'x') {\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(...args) {\n  const to = Object(args[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[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({\n  swiper,\n  targetPosition,\n  side\n}) {\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({\n  userAgent\n} = {}) {\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 (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n\n  return deviceCached;\n}\n\nexport { getDevice };", "import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n\n  return {\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\n\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n\n  return browser;\n}\n\nexport { getBrowser };", "import { getWindow } from 'ssr-window';\nexport default function Resize({\n  swiper,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  let observer = 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      const {\n        width,\n        height\n      } = swiper;\n      let newWidth = width;\n      let newHeight = height;\n      entries.forEach(({\n        contentBoxSize,\n        contentRect,\n        target\n      }) => {\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    observer.observe(swiper.el);\n  };\n\n  const removeObserver = () => {\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const observers = [];\n  const window = getWindow();\n\n  const attach = (target, options = {}) => {\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}", "/* eslint-disable no-underscore-dangle */\nexport default {\n  on(events, handler, priority) {\n    const self = this;\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 (typeof handler !== 'function') return self;\n\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\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 (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.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) 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(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\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};", "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}", "export 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 = this && this.translate || 0) {\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 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};", "import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\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 = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n\n    if (!swiper.animating) {\n      swiper.animating = true;\n\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}", "import 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};", "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}", "export default function transitionEmit({\n  swiper,\n  runCallbacks,\n  direction,\n  step\n}) {\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 transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\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 = true, direction) {\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 setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};", "import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\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 = 0, speed = this.params.speed, runCallbacks = true, internal) {\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 = this.params.speed, runCallbacks = true, internal) {\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 = this.params.speed, runCallbacks = true, internal) {\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    return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\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 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 { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    $wrapperEl\n  } = swiper; // Remove duplicated slides\n\n  const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n  let slides = $selector.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $selector.append(blankNode);\n      }\n\n      slides = $selector.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((el, index) => {\n    const slide = $(el);\n\n    if (index < swiper.loopedSlides) {\n      appendSlides.push(el);\n    }\n\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n      prependSlides.push(el);\n    }\n\n    slide.attr('data-swiper-slide-index', index);\n  });\n\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}", "export default function loopFix() {\n  const swiper = this;\n  swiper.emit('beforeLoopFix');\n  const {\n    activeIndex,\n    slides,\n    loopedSlides,\n    allowSlidePrev,\n    allowSlideNext,\n    snapGrid,\n    rtlTranslate: rtl\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n  if (activeIndex < loopedSlides) {\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  swiper.emit('loopFix');\n}", "export default function loopDestroy() {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    slides\n  } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}", "import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy\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 ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}", "export default function unsetGrabCursor() {\n  const swiper = this;\n\n  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}", "import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n  setGrabCursor,\n  unsetGrabCursor\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 = this) {\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    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, e.target) : $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    if ($targetEl.is(data.focusableElements)) preventDefault = false;\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  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    // isMoved = true;\n    swiper.allowClick = false;\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  } // 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(stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\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(stopIndex + increment);\n      }\n\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}", "export default function onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return; // Breakpoints\n\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  } // Save locks\n\n\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper; // Disable locks on resize\n\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  } // Return locks after resize\n\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}", "export default function onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}", "export default function onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  } // eslint-disable-next-line\n\n\n  if (swiper.translate === -0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}", "import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    touchEvents,\n    el,\n    wrapperEl,\n    device,\n    support\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method; // Touch Events\n\n  if (!support.touch) {\n    el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n      passive: false,\n      capture\n    } : capture);\n    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n    if (touchEvents.cancel) {\n      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n    }\n  } // Prevent Links Clicks\n\n\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  } // Resize handler\n\n\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n};\n\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    support\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  if (support.touch && !dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n\n  events(swiper, 'on');\n}\n\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\n\nexport default {\n  attachEvents,\n  detachEvents\n};", "import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n  const swiper = this;\n  const {\n    activeIndex,\n    initialized,\n    loopedSlides = 0,\n    params,\n    $el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n\n  if (wasMultiRow && !isMultiRow) {\n    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    $el.addClass(`${params.containerModifierClass}grid`);\n\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      $el.addClass(`${params.containerModifierClass}grid-column`);\n    }\n\n    swiper.emitContainerClasses();\n  }\n\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n\n  if (needsReLoop && initialized) {\n    swiper.loopDestroy();\n    swiper.loopCreate();\n    swiper.updateSlides();\n    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n  }\n\n  swiper.emit('breakpoint', breakpointParams);\n}", "import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\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 setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n  setBreakpoint,\n  getBreakpoint\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  }], 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 addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n  addClasses,\n  removeClasses\n};", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n  const window = getWindow();\n  let image;\n\n  function onReady() {\n    if (callback) callback();\n  }\n\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n\n      if (sizes) {\n        image.sizes = sizes;\n      }\n\n      if (srcset) {\n        image.srcset = srcset;\n      }\n\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}", "export default function preloadImages() {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n  }\n}", "import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n  loadImage,\n  preloadImages\n};", "function checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\n\nexport default {\n  checkOverflow\n};", "export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n  loopPreventsSlide: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  // 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    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(...args) {\n    let el;\n    let params;\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    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 = 'current', exact = false) {\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 = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n\n    swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.each(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n\n  mount(el) {\n    const swiper = this;\n    if (swiper.mounted) return true; // Find el\n\n    const $el = $(el || swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return false;\n    }\n\n    el.swiper = swiper;\n\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n        res.children = options => $el.children(options);\n\n        return res;\n      }\n\n      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 = true, cleanStyles = true) {\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 $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n  swiper,\n  extendParams,\n  on\n}) {\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)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\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\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      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      }\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\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 { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  const document = getDocument();\n\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n        if (!element) {\n          element = document.createElement('div');\n          element.className = checkProps[key];\n          swiper.$el.append(element);\n        }\n\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n\n  return params;\n}", "import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    $nextEl: null,\n    prevEl: null,\n    $prevEl: null\n  };\n\n  function getEl(el) {\n    let $el;\n\n    if (el) {\n      $el = $(el);\n\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n        $el = swiper.$el.find(el);\n      }\n    }\n\n    return $el;\n  }\n\n  function toggleEl($el, disabled) {\n    const params = swiper.params.navigation;\n\n    if ($el && $el.length > 0) {\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      }\n    }\n  }\n\n  function update() {\n    // Update Navigation Buttons\n    if (swiper.params.loop) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n  }\n\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n  }\n\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    const $nextEl = getEl(params.nextEl);\n    const $prevEl = getEl(params.prevEl);\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', onNextClick);\n    }\n\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', onPrevClick);\n    }\n\n    Object.assign(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0]\n    });\n\n    if (!swiper.enabled) {\n      if ($nextEl) $nextEl.addClass(params.lockClass);\n      if ($prevEl) $prevEl.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  }\n\n  on('init', () => {\n    init();\n    update();\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl) {\n      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n\n    if ($prevEl) {\n      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n  });\n  on('click', (_s, e) => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    const targetEl = e.target;\n\n    if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n\n      if ($nextEl) {\n        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n      } else if ($prevEl) {\n        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n\n      if ($nextEl) {\n        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if ($prevEl) {\n        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n    }\n  });\n  Object.assign(swiper.navigation, {\n    update,\n    init,\n    destroy\n  });\n}", "export default function classesToSelector(classes = '') {\n  return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}", "import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    $el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n  }\n\n  function setSideBullets($bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n  }\n\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el; // Current/Total\n\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\n\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    } // Types\n\n\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n\n      if (params.dynamicBullets) {\n        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n\n      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n      if ($el.length > 1) {\n        bullets.each(bullet => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n\n            if (bulletIndex === firstIndex) {\n              setSideBullets($bullet, 'prev');\n            }\n\n            if (bulletIndex === lastIndex) {\n              setSideBullets($bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              setSideBullets($firstDisplayedBullet, 'prev');\n              setSideBullets($lastDisplayedBullet, 'next');\n            }\n          } else {\n            setSideBullets($firstDisplayedBullet, 'prev');\n            setSideBullets($lastDisplayedBullet, 'next');\n          }\n        }\n      }\n\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n\n      $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      emit('paginationRender', $el[0]);\n    } else {\n      emit('paginationUpdate', $el[0]);\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  }\n\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\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 = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\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 = `<span class=\"${params.progressbarFillClass}\"></span>`;\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(params.modifierClass + swiper.params.direction);\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(params.modifierClass + swiper.params.direction);\n    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n\n  on('init', () => {\n    init();\n    render();\n    update();\n  });\n  on('activeIndexChange', () => {\n    if (swiper.params.loop) {\n      update();\n    } else if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    if (!swiper.params.loop) {\n      update();\n    }\n  });\n  on('slidesLengthChange', () => {\n    if (swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('snapGridLengthChange', () => {\n    if (!swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.pagination;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const {\n      $el\n    } = swiper.pagination;\n\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n\n      $el.toggleClass(swiper.params.pagination.hiddenClass);\n    }\n  });\n  Object.assign(swiper.pagination, {\n    render,\n    update,\n    init,\n    destroy\n  });\n}", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag'\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null,\n    $el: null,\n    $dragEl: null\n  };\n\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl,\n      progress\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n\n    if (rtl) {\n      newPos = -newPos;\n\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n\n    if (params.hide) {\n      clearTimeout(timeout);\n      $el[0].style.opacity = 1;\n      timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  }\n\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  }\n\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function getPointerPosition(e) {\n    if (swiper.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n    }\n\n    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n  }\n\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    $el.transition(0);\n\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n\n    emit('scrollbarDragStart', e);\n  }\n\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    emit('scrollbarDragMove', e);\n  }\n\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n\n    emit('scrollbarDragEnd', e);\n\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n\n  function events(method) {\n    const {\n      scrollbar,\n      touchEventsTouch,\n      touchEventsDesktop,\n      params,\n      support\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = support.passiveListener && params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n    if (!support.touch) {\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n    } else {\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n    }\n  }\n\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el) return;\n    events('on');\n  }\n\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el) return;\n    events('off');\n  }\n\n  function init() {\n    const {\n      scrollbar,\n      $el: $swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let $el = $(params.el);\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Object.assign(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0]\n    });\n\n    if (params.draggable) {\n      enableDraggable();\n    }\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function destroy() {\n    disableDraggable();\n  }\n\n  on('init', () => {\n    init();\n    updateSize();\n    setTranslate();\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.scrollbar;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  Object.assign(swiper.scrollbar, {\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}", "import $ from '../../shared/dom.js';\nexport default function Parallax({\n  swiper,\n  extendParams,\n  on\n}) {\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 = (duration = swiper.params.speed) => {\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\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 = true) {\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 = 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 + slidesPerView; 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  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({\n  swiper,\n  extendParams,\n  on\n}) {\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\u2212x1) \u00D7 (y3\u2212y1)) \u00F7 (x3\u2212x1) + 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({\n  swiper,\n  extendParams,\n  on\n}) {\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    }\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 = 16) {\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  function 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 = $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    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n    }\n\n    addElRole($(swiper.slides), params.slideRole);\n    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\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    }); // 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    }\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    }\n  }\n\n  on('beforeInit', () => {\n    liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n    updateNavigation();\n  });\n  on('toEdge', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('fromEdge', () => {\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({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides'\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    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, swiper.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({\n  swiper,\n  extendParams,\n  emit,\n  on\n}) {\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  let timeout;\n  swiper.autoplay = {\n    running: false,\n    paused: false\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n\n  function run() {\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n\n    clearTimeout(timeout);\n    timeout = nextTick(() => {\n      let autoplayResult;\n\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          emit('autoplay');\n        } else {\n          stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.isEnd) {\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n        emit('autoplay');\n      } else {\n        stop();\n      }\n\n      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n        run();\n      }\n    }, delay);\n  }\n\n  function start() {\n    if (typeof timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    emit('autoplayStart');\n    run();\n    return true;\n  }\n\n  function stop() {\n    if (!swiper.autoplay.running) return false;\n    if (typeof timeout === 'undefined') return false;\n\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = undefined;\n    }\n\n    swiper.autoplay.running = false;\n    emit('autoplayStop');\n    return true;\n  }\n\n  function pause(speed) {\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (timeout) clearTimeout(timeout);\n    swiper.autoplay.paused = true;\n\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      run();\n    } else {\n      ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n      });\n    }\n  }\n\n  function onVisibilityChange() {\n    const document = getDocument();\n\n    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n      pause();\n    }\n\n    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n      run();\n      swiper.autoplay.paused = false;\n    }\n  }\n\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n    if (e.target !== swiper.$wrapperEl[0]) return;\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n    swiper.autoplay.paused = false;\n\n    if (!swiper.autoplay.running) {\n      stop();\n    } else {\n      run();\n    }\n  }\n\n  function onMouseEnter() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n    } else {\n      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    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({\n  swiper,\n  extendParams,\n  on\n}) {\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) 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) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        } // Find actual thumbs index to slide to\n\n\n        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n        if (typeof prevThumbsIndex === 'undefined') {\n          newThumbsIndex = nextThumbsIndex;\n        } else if (typeof nextThumbsIndex === 'undefined') {\n          newThumbsIndex = prevThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = nextThumbsIndex;\n        } else {\n          newThumbsIndex = prevThumbsIndex;\n        }\n\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    } // Activate thumbs\n\n\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  }\n\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    init();\n    update(true);\n  });\n  on('slideChange update resize observerUpdate', () => {\n    if (!swiper.thumbs.swiper) return;\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    if (swiperCreated && thumbsSwiper) {\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({\n  swiper,\n  extendParams,\n  emit,\n  once\n}) {\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 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({\n    currentPos\n  }) {\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      onTouchMove,\n      onTouchEnd\n    }\n  });\n}", "export default function Grid({\n  swiper,\n  extendParams\n}) {\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}", "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}", "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({\n  swiper\n}) {\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}", "export default function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective\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}", "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({\n  swiper,\n  duration,\n  transformEl,\n  allSlides\n}) {\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 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({\n  swiper,\n  extendParams,\n  on\n}) {\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({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\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 = $('<div class=\"swiper-cube-shadow\"></div>');\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 = $('<div class=\"swiper-cube-shadow\"></div>');\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        // Set shadows\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 = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\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\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  };\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    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 './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 = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n    $shadowContainer.append($shadowEl);\n  }\n\n  return $shadowEl;\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n      transformEl: null\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        // Set shadows\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 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    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({\n  swiper,\n  extendParams,\n  on\n}) {\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 offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * 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({\n  swiper,\n  extendParams,\n  on\n}) {\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({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      transformEl: null\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 isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (i === activeIndex || i === 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(${rotate}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 * Swiper 7.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: December 24, 2021\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", "var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nimport { Controller } from \"@hotwired/stimulus\";\nimport Swiper from \"swiper/bundle\";\nclass src_default extends Controller {\n  connect() {\n    this.swiper = new Swiper(this.element, __spreadValues(__spreadValues({}, this.defaultOptions), this.optionsValue));\n  }\n  disconnect() {\n    this.swiper.destroy();\n    this.swiper = void 0;\n  }\n  get defaultOptions() {\n    return {};\n  }\n}\nsrc_default.values = {\n  options: Object\n};\nexport { src_default as default };\n", "import Carousel from \"stimulus-carousel\";\n\nexport default class extends Carousel {\n  get defaultOptions() {\n    return {\n      autoHeight: true,\n      loop: true,\n      navigation: {\n        nextEl: \".swiper-button-next\",\n        prevEl: \".swiper-button-prev\",\n      },\n      pagination: {\n        el: \".swiper-pagination\",\n        clickable: true,\n      },\n    };\n  }\n}\n", "// import \"htmx.org\";\nimport \"fslightbox\";\nimport { Application } from \"@hotwired/stimulus\";\nimport Carousel from \"./_carousel_controller\";\n\nconst application = Application.start();\napplication.register(\"carousel\", Carousel);\nwindow.Stimulus = application;\n\ndocument.documentElement.classList.remove(\"no-js\");\ndocument.documentElement.classList.add(\"js\");\n\nwindow.document.addEventListener(\"DOMContentLoaded\", function () {\n  /* open documents in new tab */\n  let doc_links = document.querySelectorAll('a[href^=\"/documents/\"]');\n  Array.from(doc_links, (doc_link) =>\n    doc_link.setAttribute(\"target\", \"_blank\"),\n  );\n\n  /* scroll top */\n  let scroll_top = document.querySelector(\"[data-selector='scroll-top']\");\n\n  function updateTopButton(event) {\n    let scroll_threshold = 20;\n    if (document.documentElement.scrollTop > scroll_threshold) {\n      scroll_top.classList.remove(\"hidden\");\n    } else {\n      scroll_top.classList.add(\"hidden\");\n    }\n  }\n\n  function scrollToTop() {\n    window.scrollTo({\n      top: 0,\n      behavior: \"smooth\",\n    });\n  }\n\n  document.addEventListener(\"scroll\", updateTopButton);\n  scroll_top.addEventListener(\"click\", scrollToTop);\n});\n"],
  "mappings": "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",
  "names": ["require_fslightbox", "__commonJSMin", "exports", "module", "o", "e", "t", "i", "s", "a", "l", "u", "d", "p", "h", "m", "g", "v", "b", "x", "y", "w", "S", "n", "L", "r", "A", "c", "C", "E", "F", "I", "T", "N", "z", "P", "k", "H", "W", "R", "D", "f", "O", "M", "j", "X", "B", "U", "q", "V", "_", "Y", "J", "G", "$", "K", "Q", "Z", "ee", "te", "ne", "oe", "ie", "re", "extendEvent", "event", "stopImmediatePropagation", "parseActionDescriptorString", "descriptorString", "matches", "descriptorPattern", "eventName", "keyFilter", "parseEventTarget", "parseEventOptions", "eventTargetName", "eventOptions", "options", "token", "stringifyEventTarget", "eventTarget", "camelize", "value", "_", "char", "namespaceCamelize", "capitalize", "dasherize", "tokenize", "isSomething", "object", "hasProperty", "property", "getDefaultEventNameForElement", "element", "tagName", "defaultEventNames", "error", "message", "typecast", "add", "map", "key", "fetch", "del", "prune", "values", "parseTokenString", "tokenString", "attributeName", "content", "index", "zip", "left", "right", "length", "tokensAreEqual", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "getOwnStaticArrayValues", "name", "readInheritableStaticObjectPairs", "pairs", "getOwnStaticObjectPairs", "definition", "bless", "shadow", "getBlessedProperties", "properties", "shadowConstructor", "extend", "shadowProperties", "getShadowProperties", "blessedProperties", "blessing", "descriptor", "prototype", "getOwnKeys", "getShadowedDescriptor", "shadowingDescriptor", "blessDefinition", "attributeValueContainsToken", "objectFromEntries", "array", "memo", "k", "v", "domReady", "resolve", "ClassPropertiesBlessing", "classDefinition", "propertiesForClassDefinition", "classes", "attribute", "OutletPropertiesBlessing", "outletDefinition", "propertiesForOutletDefinition", "getOutletController", "controller", "identifier", "getControllerAndEnsureConnectedScope", "outletName", "outletController", "camelizedName", "outletElement", "selector", "outlets", "TargetPropertiesBlessing", "targetDefinition", "propertiesForTargetDefinition", "target", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "propertiesForValueDefinitionPair", "read", "write", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "parseValueTypeDefault", "defaultValue", "parseValueTypeObject", "payload", "typeObject", "hasType", "hasDefault", "fullObject", "onlyType", "onlyDefault", "typeFromObject", "typeFromDefaultValue", "propertyPath", "parseValueTypeDefinition", "typeFromConstant", "type", "defaultValueForDefinition", "defaultValuesByType", "constantFromType", "readers", "writers", "writeJSON", "writeString", "EventListener", "Dispatcher", "defaultActionDescriptorFilters", "allModifiers", "Action", "Binding", "ElementObserver", "AttributeObserver", "Multimap", "SelectorObserver", "StringMapObserver", "TokenListObserver", "ValueListObserver", "BindingObserver", "ValueObserver", "TargetObserver", "OutletObserver", "Context", "Module", "ClassMap", "DataMap", "Guide", "TargetSet", "OutletSet", "Scope", "ScopeObserver", "Router", "defaultSchema", "Application", "Controller", "init_stimulus", "__esmMin", "binding", "extendedEvent", "leftIndex", "rightIndex", "application", "eventListener", "listeners", "clearEventListeners", "detail", "eventListenerMap", "cacheKey", "parts", "schema", "eventFilter", "filters", "standardFilter", "params", "pattern", "match", "meta", "ctrl", "alt", "shift", "modifier", "context", "action", "actionEvent", "method", "actionDescriptorFilters", "passes", "filter", "currentTarget", "delegate", "mutations", "callback", "mutation", "nodes", "node", "tree", "processor", "set", "size", "_key", "_values", "details", "selectors", "_attributeName", "matchedBefore", "oldValue", "unmatchedTokens", "matchedTokens", "tokens", "previousTokens", "currentTokens", "firstDifferingIndex", "previousToken", "currentToken", "parseResult", "valuesByToken", "receiver", "writer", "rawValue", "rawOldValue", "changedMethodName", "changedMethod", "valueDescriptorMap", "descriptors", "hasMethodName", "_a", "observer", "_selector", "outlet", "hasOutlet", "hasOutletController", "_element", "selectorObserver", "attributeObserver", "dependencies", "module", "identifiers", "scope", "functionName", "methodName", "args", "extendWithReflect", "extended", "testReflectExtension", "b", "logger", "warnedKeys", "targetName", "targetNames", "targets", "targetDescriptor", "revisedAttributeName", "controllerElement", "outletNames", "controllerAttribute", "_Scope", "scopesByIdentifier", "referenceCount", "contexts", "afterLoad", "c", "n", "controllerConstructor", "head", "rest", "_identifier", "_application", "prefix", "bubbles", "cancelable", "isObject", "obj", "extend", "target", "src", "key", "getDocument", "doc", "ssrDocument", "getWindow", "win", "ssrWindow", "init_ssr_window_esm", "__esmMin", "callback", "id", "makeReactive", "obj", "proto", "value", "arrayFlat", "arr", "res", "el", "arrayFilter", "callback", "arrayUnique", "uniqueArray", "i", "qsa", "selector", "context", "a", "$", "window", "getWindow", "document", "getDocument", "Dom7", "html", "toCreate", "tempParent", "addClass", "classes", "classNames", "c", "removeClass", "toggleClass", "className", "hasClass", "attr", "attrs", "attrName", "removeAttr", "transform", "transition", "duration", "on", "args", "eventType", "targetSelector", "listener", "capture", "handleLiveEvent", "e", "target", "eventData", "parents", "k", "handleEvent", "events", "j", "event", "off", "handlers", "handler", "trigger", "evt", "data", "dataIndex", "transitionEnd", "dom", "fireCallBack", "outerWidth", "includeMargins", "styles", "outerHeight", "offset", "box", "body", "clientTop", "clientLeft", "scrollTop", "scrollLeft", "css", "props", "prop", "each", "index", "filter", "result", "text", "is", "compareWith", "child", "eq", "length", "returnIndex", "append", "els", "newChild", "tempDiv", "prepend", "next", "nextAll", "nextEls", "prev", "prevAll", "prevEls", "parent", "closest", "find", "foundElements", "found", "children", "childNodes", "remove", "shortcut", "name", "eventHandler", "noTrigger", "click", "blur", "focus", "focusin", "focusout", "keyup", "keydown", "keypress", "submit", "change", "mousedown", "mousemove", "mouseup", "mouseenter", "mouseleave", "mouseout", "mouseover", "touchstart", "touchend", "touchmove", "resize", "scroll", "init_dom7_esm", "__esmMin", "init_ssr_window_esm", "items", "Methods", "dom_default", "init_dom", "__esmMin", "init_dom7_esm", "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", "methodName", "$", "deleteProps", "obj", "object", "key", "nextTick", "callback", "delay", "now", "getComputedStyle", "el", "window", "getWindow", "style", "getTranslate", "axis", "matrix", "curTransform", "transformMatrix", "curStyle", "a", "isObject", "o", "isNode", "node", "extend", "args", "to", "noExtend", "i", "nextSource", "keysArray", "nextIndex", "len", "nextKey", "desc", "setCSSProperty", "varName", "varValue", "animateCSSModeScroll", "swiper", "targetPosition", "side", "startPosition", "startTime", "time", "duration", "dir", "isOutOfBound", "current", "target", "animate", "progress", "easeProgress", "currentPosition", "init_utils", "__esmMin", "init_ssr_window_esm", "calcSupport", "window", "getWindow", "document", "getDocument", "supportsPassive", "opts", "getSupport", "support", "init_get_support", "__esmMin", "init_ssr_window_esm", "calcDevice", "userAgent", "support", "getSupport", "window", "getWindow", "platform", "ua", "device", "screenWidth", "screenHeight", "android", "ipad", "ipod", "iphone", "windows", "macos", "iPadScreens", "getDevice", "overrides", "deviceCached", "init_get_device", "__esmMin", "init_ssr_window_esm", "init_get_support", "calcBrowser", "window", "getWindow", "isSafari", "ua", "getBrowser", "browser", "init_get_browser", "__esmMin", "init_ssr_window_esm", "Resize", "swiper", "on", "emit", "window", "getWindow", "observer", "resizeHandler", "createObserver", "entries", "width", "height", "newWidth", "newHeight", "contentBoxSize", "contentRect", "target", "removeObserver", "orientationChangeHandler", "init_resize", "__esmMin", "init_ssr_window_esm", "Observer", "swiper", "extendParams", "on", "emit", "observers", "window", "getWindow", "attach", "target", "options", "ObserverFunc", "observer", "mutations", "observerUpdate", "init", "containerParents", "i", "destroy", "init_observer", "__esmMin", "init_ssr_window_esm", "events_emitter_default", "init_events_emitter", "__esmMin", "events", "handler", "priority", "self", "method", "event", "onceHandler", "args", "index", "eventHandler", "data", "context", "updateSize", "swiper", "width", "height", "$el", "init_updateSize", "__esmMin", "updateSlides", "swiper", "getDirectionLabel", "property", "getDirectionPropertyValue", "node", "label", "params", "$wrapperEl", "swiperSize", "rtl", "wrongRTL", "isVirtual", "previousSlidesLength", "slides", "slidesLength", "snapGrid", "slidesGrid", "slidesSizesGrid", "offsetBefore", "offsetAfter", "previousSnapGridLength", "previousSlidesGridLength", "spaceBetween", "slidePosition", "prevSlideSize", "index", "setCSSProperty", "gridEnabled", "slideSize", "shouldResetSlideSize", "key", "i", "slide", "slideStyles", "currentTransform", "currentWebKitTransform", "width", "paddingLeft", "paddingRight", "marginLeft", "marginRight", "boxSizing", "clientWidth", "offsetWidth", "newSlidesGrid", "slidesGridItem", "_", "slideIndex", "allSlidesSize", "slideSizeValue", "maxSnap", "snap", "allSlidesOffset", "snapIndex", "addToSnapGrid", "addToSlidesGrid", "v", "init_updateSlides", "__esmMin", "init_utils", "updateAutoHeight", "speed", "swiper", "activeSlides", "isVirtual", "newHeight", "i", "getSlideByIndex", "index", "el", "slide", "height", "init_updateAutoHeight", "__esmMin", "updateSlidesOffset", "swiper", "slides", "i", "init_updateSlidesOffset", "__esmMin", "updateSlidesProgress", "translate", "swiper", "params", "slides", "rtl", "snapGrid", "offsetCenter", "i", "slide", "slideOffset", "slideProgress", "originalSlideProgress", "slideBefore", "slideAfter", "dom_default", "init_updateSlidesProgress", "__esmMin", "init_dom", "updateProgress", "translate", "swiper", "multiplier", "params", "translatesDiff", "progress", "isBeginning", "isEnd", "wasBeginning", "wasEnd", "init_updateProgress", "__esmMin", "updateSlidesClasses", "swiper", "slides", "params", "$wrapperEl", "activeIndex", "realIndex", "isVirtual", "activeSlide", "nextSlide", "prevSlide", "init_updateSlidesClasses", "__esmMin", "updateActiveIndex", "newActiveIndex", "swiper", "translate", "slidesGrid", "snapGrid", "params", "previousIndex", "previousRealIndex", "previousSnapIndex", "activeIndex", "snapIndex", "i", "skip", "realIndex", "init_updateActiveIndex", "__esmMin", "updateClickedSlide", "swiper", "params", "slide", "dom_default", "slideFound", "slideIndex", "i", "init_updateClickedSlide", "__esmMin", "init_dom", "update_default", "init_update", "__esmMin", "init_updateSize", "init_updateSlides", "init_updateAutoHeight", "init_updateSlidesOffset", "init_updateSlidesProgress", "init_updateProgress", "init_updateSlidesClasses", "init_updateActiveIndex", "init_updateClickedSlide", "updateSize", "updateSlides", "updateAutoHeight", "updateSlidesOffset", "updateSlidesProgress", "updateProgress", "updateSlidesClasses", "updateActiveIndex", "updateClickedSlide", "getSwiperTranslate", "axis", "swiper", "params", "rtl", "translate", "$wrapperEl", "currentTranslate", "getTranslate", "init_getTranslate", "__esmMin", "init_utils", "setTranslate", "translate", "byController", "swiper", "rtl", "params", "$wrapperEl", "wrapperEl", "progress", "x", "y", "z", "newProgress", "translatesDiff", "init_setTranslate", "__esmMin", "minTranslate", "init_minTranslate", "__esmMin", "maxTranslate", "init_maxTranslate", "__esmMin", "translateTo", "translate", "speed", "runCallbacks", "translateBounds", "internal", "swiper", "params", "wrapperEl", "minTranslate", "maxTranslate", "newTranslate", "isH", "animateCSSModeScroll", "e", "init_translateTo", "__esmMin", "init_utils", "translate_default", "init_translate", "__esmMin", "init_getTranslate", "init_setTranslate", "init_minTranslate", "init_maxTranslate", "init_translateTo", "getSwiperTranslate", "setTranslate", "minTranslate", "maxTranslate", "translateTo", "setTransition", "duration", "byController", "swiper", "init_setTransition", "__esmMin", "transitionEmit", "swiper", "runCallbacks", "direction", "step", "activeIndex", "previousIndex", "dir", "init_transitionEmit", "__esmMin", "transitionStart", "runCallbacks", "direction", "swiper", "params", "transitionEmit", "init_transitionStart", "__esmMin", "init_transitionEmit", "transitionEnd", "runCallbacks", "direction", "swiper", "params", "transitionEmit", "init_transitionEnd", "__esmMin", "init_transitionEmit", "transition_default", "init_transition", "__esmMin", "init_setTransition", "init_transitionStart", "init_transitionEnd", "setTransition", "transitionStart", "transitionEnd", "slideTo", "index", "speed", "runCallbacks", "internal", "initial", "indexAsNumber", "swiper", "slideIndex", "params", "snapGrid", "slidesGrid", "previousIndex", "activeIndex", "rtl", "wrapperEl", "enabled", "skip", "snapIndex", "translate", "i", "normalizedTranslate", "normalizedGrid", "normalizedGridNext", "direction", "isH", "t", "isVirtual", "animateCSSModeScroll", "e", "init_slideTo", "__esmMin", "init_utils", "slideToLoop", "index", "speed", "runCallbacks", "internal", "swiper", "newIndex", "init_slideToLoop", "__esmMin", "slideNext", "speed", "runCallbacks", "internal", "swiper", "animating", "enabled", "params", "perGroup", "increment", "init_slideNext", "__esmMin", "slidePrev", "speed", "runCallbacks", "internal", "swiper", "params", "animating", "snapGrid", "slidesGrid", "rtlTranslate", "enabled", "translate", "normalize", "val", "normalizedTranslate", "normalizedSnapGrid", "prevSnap", "prevSnapIndex", "snap", "snapIndex", "prevIndex", "init_slidePrev", "__esmMin", "slideReset", "speed", "runCallbacks", "internal", "swiper", "init_slideReset", "__esmMin", "slideToClosest", "speed", "runCallbacks", "internal", "threshold", "swiper", "index", "skip", "snapIndex", "translate", "currentSnap", "nextSnap", "prevSnap", "init_slideToClosest", "__esmMin", "slideToClickedSlide", "swiper", "params", "$wrapperEl", "slidesPerView", "slideToIndex", "realIndex", "dom_default", "nextTick", "init_slideToClickedSlide", "__esmMin", "init_dom", "init_utils", "slide_default", "init_slide", "__esmMin", "init_slideTo", "init_slideToLoop", "init_slideNext", "init_slidePrev", "init_slideReset", "init_slideToClosest", "init_slideToClickedSlide", "slideTo", "slideToLoop", "slideNext", "slidePrev", "slideReset", "slideToClosest", "slideToClickedSlide", "loopCreate", "swiper", "document", "getDocument", "params", "$wrapperEl", "$selector", "dom_default", "slides", "blankSlidesNum", "i", "blankNode", "prependSlides", "appendSlides", "el", "index", "slide", "init_loopCreate", "__esmMin", "init_ssr_window_esm", "init_dom", "loopFix", "swiper", "activeIndex", "slides", "loopedSlides", "allowSlidePrev", "allowSlideNext", "snapGrid", "rtl", "newIndex", "diff", "init_loopFix", "__esmMin", "loopDestroy", "swiper", "$wrapperEl", "params", "slides", "init_loopDestroy", "__esmMin", "loop_default", "init_loop", "__esmMin", "init_loopCreate", "init_loopFix", "init_loopDestroy", "loopCreate", "loopFix", "loopDestroy", "setGrabCursor", "moving", "swiper", "el", "init_setGrabCursor", "__esmMin", "unsetGrabCursor", "swiper", "init_unsetGrabCursor", "__esmMin", "grab_cursor_default", "init_grab_cursor", "__esmMin", "init_setGrabCursor", "init_unsetGrabCursor", "setGrabCursor", "unsetGrabCursor", "closestElement", "selector", "base", "__closestFrom", "el", "getDocument", "getWindow", "onTouchStart", "event", "swiper", "document", "window", "data", "params", "touches", "enabled", "e", "$targetEl", "dom_default", "noSwipingSelector", "isTargetShadow", "startX", "startY", "edgeSwipeDetection", "edgeSwipeThreshold", "now", "preventDefault", "shouldPreventDefault", "init_onTouchStart", "__esmMin", "init_ssr_window_esm", "init_dom", "init_utils", "onTouchMove", "event", "document", "getDocument", "swiper", "data", "params", "touches", "rtl", "enabled", "e", "targetTouch", "pageX", "pageY", "now", "dom_default", "diffX", "diffY", "touchAngle", "diff", "disableParentSwiper", "resistanceRatio", "init_onTouchMove", "__esmMin", "init_ssr_window_esm", "init_dom", "init_utils", "onTouchEnd", "event", "swiper", "data", "params", "touches", "rtl", "slidesGrid", "enabled", "e", "touchEndTime", "now", "timeDiff", "pathTree", "nextTick", "currentPos", "stopIndex", "groupSize", "i", "increment", "ratio", "init_onTouchEnd", "__esmMin", "init_utils", "onResize", "swiper", "params", "el", "allowSlideNext", "allowSlidePrev", "snapGrid", "init_onResize", "__esmMin", "onClick", "swiper", "init_onClick", "__esmMin", "onScroll", "swiper", "wrapperEl", "rtlTranslate", "enabled", "newProgress", "translatesDiff", "init_onScroll", "__esmMin", "dummyEventListener", "attachEvents", "swiper", "document", "getDocument", "params", "support", "onTouchStart", "onTouchMove", "onTouchEnd", "onScroll", "onClick", "dummyEventAttached", "events", "detachEvents", "events_default", "init_events", "__esmMin", "init_ssr_window_esm", "init_onTouchStart", "init_onTouchMove", "init_onTouchEnd", "init_onResize", "init_onClick", "init_onScroll", "method", "touchEvents", "el", "wrapperEl", "device", "capture", "domMethod", "swiperMethod", "passiveListener", "onResize", "setBreakpoint", "swiper", "activeIndex", "initialized", "loopedSlides", "params", "$el", "breakpoints", "breakpoint", "breakpointParams", "wasMultiRow", "isGridEnabled", "isMultiRow", "wasEnabled", "directionChanged", "needsReLoop", "extend", "isEnabled", "init_setBreakpoint", "__esmMin", "init_utils", "getBreakpoint", "breakpoints", "base", "containerEl", "breakpoint", "window", "getWindow", "currentHeight", "points", "point", "minRatio", "a", "b", "i", "value", "init_getBreakpoint", "__esmMin", "init_ssr_window_esm", "breakpoints_default", "init_breakpoints", "__esmMin", "init_setBreakpoint", "init_getBreakpoint", "setBreakpoint", "getBreakpoint", "prepareClasses", "entries", "prefix", "resultClasses", "item", "classNames", "addClasses", "swiper", "params", "rtl", "$el", "device", "support", "suffixes", "init_addClasses", "__esmMin", "removeClasses", "swiper", "$el", "classNames", "init_removeClasses", "__esmMin", "classes_default", "init_classes", "__esmMin", "init_addClasses", "init_removeClasses", "addClasses", "removeClasses", "loadImage", "imageEl", "src", "srcset", "sizes", "checkForComplete", "callback", "window", "getWindow", "image", "onReady", "dom_default", "init_loadImage", "__esmMin", "init_ssr_window_esm", "init_dom", "preloadImages", "swiper", "onReady", "i", "imageEl", "init_preloadImages", "__esmMin", "images_default", "init_images", "__esmMin", "init_loadImage", "init_preloadImages", "loadImage", "preloadImages", "checkOverflow", "swiper", "wasLocked", "params", "slidesOffsetBefore", "lastSlideIndex", "lastSlideRightEdge", "check_overflow_default", "init_check_overflow", "__esmMin", "defaults_default", "init_defaults", "__esmMin", "moduleExtendParams", "params", "allModulesParams", "obj", "moduleParamName", "moduleParams", "extend", "init_moduleExtendParams", "__esmMin", "init_utils", "prototypes", "extendedDefaults", "Swiper", "core_default", "init_core", "__esmMin", "init_ssr_window_esm", "init_dom", "init_utils", "init_get_support", "init_get_device", "init_get_browser", "init_resize", "init_observer", "init_events_emitter", "init_update", "init_translate", "init_transition", "init_slide", "init_loop", "init_grab_cursor", "init_events", "init_breakpoints", "init_classes", "init_images", "init_check_overflow", "init_defaults", "init_moduleExtendParams", "events_emitter_default", "update_default", "translate_default", "transition_default", "slide_default", "loop_default", "grab_cursor_default", "events_default", "breakpoints_default", "check_overflow_default", "classes_default", "images_default", "_Swiper", "args", "el", "params", "extend", "dom_default", "swipers", "containerEl", "newParams", "swiper", "getSupport", "getDevice", "getBrowser", "allModulesParams", "mod", "moduleExtendParams", "swiperParams", "defaults_default", "eventName", "touch", "desktop", "now", "progress", "speed", "min", "current", "cls", "className", "slideEl", "updates", "classNames", "view", "exact", "slides", "slidesGrid", "slidesSizesGrid", "swiperSize", "activeIndex", "spv", "slideSize", "breakLoop", "i", "snapGrid", "setTranslate", "translateValue", "newTranslate", "translated", "newDirection", "needUpdate", "currentDirection", "$el", "getWrapperSelector", "$wrapperEl", "res", "options", "wrapper", "getDocument", "deleteInstance", "cleanStyles", "deleteProps", "newDefaults", "modules", "module", "m", "prototypeGroup", "protoMethod", "Resize", "Observer", "Virtual", "swiper", "extendParams", "on", "cssModeTimeout", "renderSlide", "slide", "index", "params", "$slideEl", "dom_default", "update", "force", "slidesPerView", "slidesPerGroup", "centeredSlides", "addSlidesBefore", "addSlidesAfter", "previousFrom", "previousTo", "slides", "previousSlidesGrid", "previousOffset", "activeIndex", "offsetProp", "slidesAfter", "slidesBefore", "from", "to", "offset", "onRendered", "slidesToRender", "i", "prependIndexes", "appendIndexes", "a", "b", "appendSlide", "prependSlide", "newActiveIndex", "numberOfNewSlides", "cache", "newCache", "cachedIndex", "$cachedEl", "cachedElIndex", "removeSlide", "slidesIndexes", "removeAllSlides", "setCSSProperty", "init_virtual", "__esmMin", "init_dom", "init_utils", "Keyboard", "swiper", "extendParams", "on", "emit", "document", "getDocument", "window", "getWindow", "handle", "event", "rtl", "e", "kc", "pageUpDown", "isPageUp", "isPageDown", "isArrowLeft", "isArrowRight", "isArrowUp", "isArrowDown", "inView", "$el", "swiperWidth", "swiperHeight", "windowWidth", "windowHeight", "swiperOffset", "swiperCoord", "i", "point", "enable", "dom_default", "disable", "init_keyboard", "__esmMin", "init_ssr_window_esm", "init_dom", "Mousewheel", "swiper", "extendParams", "on", "emit", "window", "getWindow", "timeout", "lastScrollTime", "now", "lastEventBeforeSnap", "recentWheelEvents", "normalize", "e", "sX", "sY", "pX", "pY", "handleMouseEnter", "handleMouseLeave", "animateSlider", "newEvent", "releaseScroll", "params", "handle", "event", "disableParentSwiper", "target", "dom_default", "delta", "rtlFactor", "data", "positions", "prevEvent", "ignoreWheelEvents", "position", "wasBeginning", "wasEnd", "firstEvent", "snapToThreshold", "nextTick", "events", "method", "enable", "disable", "init_mousewheel", "__esmMin", "init_ssr_window_esm", "init_dom", "init_utils", "createElementIfNotDefined", "swiper", "originalParams", "params", "checkProps", "document", "getDocument", "key", "element", "init_create_element_if_not_defined", "__esmMin", "init_ssr_window_esm", "Navigation", "swiper", "extendParams", "on", "emit", "getEl", "el", "$el", "dom_default", "toggleEl", "disabled", "params", "update", "$nextEl", "$prevEl", "onPrevClick", "e", "onNextClick", "init", "createElementIfNotDefined", "destroy", "_s", "targetEl", "isHidden", "init_navigation", "__esmMin", "init_create_element_if_not_defined", "init_dom", "classesToSelector", "classes", "init_classes_to_selector", "__esmMin", "Pagination", "swiper", "extendParams", "on", "emit", "pfx", "number", "bulletSize", "dynamicBulletIndex", "isPaginationDisabled", "setSideBullets", "$bulletEl", "position", "bulletActiveClass", "update", "rtl", "params", "slidesLength", "$el", "current", "total", "bullets", "firstIndex", "lastIndex", "midIndex", "suffix", "bullet", "$bullet", "dom_default", "bulletIndex", "$firstDisplayedBullet", "$lastDisplayedBullet", "i", "dynamicBulletsLength", "bulletsOffset", "offsetProp", "classesToSelector", "progressbarDirection", "scale", "scaleX", "scaleY", "render", "paginationHTML", "numberOfBullets", "init", "createElementIfNotDefined", "el", "e", "index", "destroy", "_s", "targetEl", "isHidden", "init_pagination", "__esmMin", "init_dom", "init_classes_to_selector", "init_create_element_if_not_defined", "Scrollbar", "swiper", "extendParams", "on", "emit", "document", "getDocument", "isTouched", "timeout", "dragTimeout", "dragStartPos", "dragSize", "trackSize", "divider", "setTranslate", "scrollbar", "rtl", "progress", "$dragEl", "$el", "params", "newSize", "newPos", "setTransition", "duration", "updateSize", "getPointerPosition", "e", "setDragPosition", "positionRatio", "position", "onDragStart", "$wrapperEl", "onDragMove", "onDragEnd", "nextTick", "events", "method", "touchEventsTouch", "touchEventsDesktop", "support", "target", "activeListener", "passiveListener", "eventMethod", "enableDraggable", "disableDraggable", "init", "$swiperEl", "createElementIfNotDefined", "dom_default", "destroy", "_s", "init_scrollbar", "__esmMin", "init_ssr_window_esm", "init_dom", "init_utils", "init_create_element_if_not_defined", "Parallax", "swiper", "extendParams", "on", "setTransform", "el", "progress", "rtl", "$el", "dom_default", "rtlFactor", "p", "x", "y", "scale", "opacity", "currentOpacity", "currentScale", "setTranslate", "slides", "snapGrid", "slideEl", "slideIndex", "slideProgress", "setTransition", "duration", "parallaxEl", "$parallaxEl", "parallaxDuration", "_swiper", "init_parallax", "__esmMin", "init_dom", "Zoom", "swiper", "extendParams", "on", "emit", "window", "getWindow", "currentScale", "isScaling", "gesturesEnabled", "fakeGestureTouched", "fakeGestureMoved", "gesture", "image", "velocity", "scale", "value", "imageEl", "slideEl", "getDistanceBetweenTouches", "e", "x1", "y1", "x2", "y2", "onGestureStart", "support", "params", "dom_default", "onGestureChange", "zoom", "onGestureEnd", "device", "onTouchStart", "onTouchMove", "getTranslate", "scaledWidth", "scaledHeight", "onTouchEnd", "momentumDurationX", "momentumDurationY", "momentumDistanceX", "newPositionX", "momentumDistanceY", "newPositionY", "momentumDuration", "onTransitionEnd", "zoomIn", "touchX", "touchY", "offsetX", "offsetY", "diffX", "diffY", "translateX", "translateY", "imageWidth", "imageHeight", "translateMinX", "translateMinY", "translateMaxX", "translateMaxY", "slideWidth", "slideHeight", "zoomOut", "zoomToggle", "getListeners", "passiveListener", "activeListenerWithCapture", "getSlideSelector", "toggleGestures", "method", "slideSelector", "enableGestures", "disableGestures", "enable", "disable", "_s", "init_zoom", "__esmMin", "init_ssr_window_esm", "init_dom", "init_utils", "Lazy", "swiper", "extendParams", "on", "emit", "scrollHandlerAttached", "initialImageLoaded", "loadInSlide", "index", "loadInDuplicate", "params", "$slideEl", "$images", "imageEl", "$imageEl", "dom_default", "background", "src", "srcset", "sizes", "$pictureEl", "sourceEl", "$source", "slideOriginalIndex", "originalSlide", "duplicatedSlide", "load", "$wrapperEl", "swiperParams", "slides", "activeIndex", "isVirtual", "slidesPerView", "slideExist", "slideIndex", "slideEl", "i", "amount", "spv", "maxIndex", "minIndex", "nextSlide", "prevSlide", "checkInViewOnLoad", "window", "getWindow", "$scrollElement", "isWindow", "scrollElementWidth", "scrollElementHeight", "swiperOffset", "rtl", "inView", "swiperCoord", "point", "passiveListener", "lazy", "cssMode", "watchSlidesProgress", "touchReleaseOnEdges", "resistanceRatio", "init_lazy", "__esmMin", "init_ssr_window_esm", "init_dom", "Controller", "swiper", "extendParams", "on", "LinearSpline", "x", "y", "binarySearch", "maxIndex", "minIndex", "guess", "array", "val", "i1", "i3", "x2", "getInterpolateFunction", "setTranslate", "_t", "byController", "controlled", "multiplier", "controlledTranslate", "Swiper", "setControlledTranslate", "c", "translate", "i", "setTransition", "duration", "setControlledTransition", "nextTick", "removeSpline", "_s", "init_controller", "__esmMin", "init_utils", "A11y", "swiper", "extendParams", "on", "liveRegion", "notify", "message", "notification", "getRandomNumber", "size", "randomChar", "makeElFocusable", "$el", "makeElNotFocusable", "addElRole", "role", "addElRoleDescription", "description", "addElControls", "controls", "addElLabel", "label", "addElId", "id", "addElLive", "live", "disableEl", "enableEl", "onEnterOrSpaceKey", "e", "params", "$targetEl", "dom_default", "classesToSelector", "updateNavigation", "$nextEl", "$prevEl", "hasPagination", "hasClickablePagination", "updatePagination", "bulletEl", "$bulletEl", "initNavEl", "wrapperId", "init", "$containerEl", "$wrapperEl", "slidesLength", "el", "slideEl", "index", "$slideEl", "slideIndex", "ariaLabelMessage", "destroy", "init_a11y", "__esmMin", "init_classes_to_selector", "init_dom", "History", "swiper", "extendParams", "on", "initialized", "paths", "slugify", "text", "getPathValues", "urlOverride", "window", "getWindow", "location", "pathArray", "part", "total", "key", "value", "setHistory", "index", "slide", "root", "currentState", "scrollToSlide", "speed", "runCallbacks", "i", "length", "setHistoryPopState", "init", "destroy", "init_history", "__esmMin", "init_ssr_window_esm", "HashNavigation", "swiper", "extendParams", "emit", "on", "initialized", "document", "getDocument", "window", "getWindow", "onHashChange", "newHash", "activeSlideHash", "newIndex", "setHash", "slide", "hash", "init", "i", "length", "index", "dom_default", "destroy", "init_hash_navigation", "__esmMin", "init_ssr_window_esm", "init_dom", "Autoplay", "swiper", "extendParams", "on", "emit", "timeout", "run", "$activeSlideEl", "delay", "nextTick", "autoplayResult", "stop", "start", "pause", "speed", "event", "onTransitionEnd", "onVisibilityChange", "document", "getDocument", "e", "onMouseEnter", "onMouseLeave", "attachMouseEvents", "detachMouseEvents", "_s", "internal", "init_autoplay", "__esmMin", "init_ssr_window_esm", "init_utils", "Thumb", "swiper", "extendParams", "on", "initialized", "swiperCreated", "onThumbClick", "thumbsSwiper", "clickedIndex", "clickedSlide", "dom_default", "slideToIndex", "currentIndex", "prevIndex", "nextIndex", "init", "thumbsParams", "SwiperClass", "isObject", "thumbsSwiperParams", "update", "initial", "slidesPerView", "autoScrollOffset", "useOffset", "currentThumbsIndex", "newThumbsIndex", "direction", "prevThumbsIndex", "nextThumbsIndex", "thumbsToActivate", "thumbActiveClass", "i", "thumbs", "_s", "duration", "init_thumbs", "__esmMin", "init_utils", "init_dom", "freeMode", "swiper", "extendParams", "emit", "once", "onTouchMove", "data", "touches", "now", "onTouchEnd", "currentPos", "params", "$wrapperEl", "rtl", "snapGrid", "timeDiff", "lastMoveEvent", "velocityEvent", "distance", "time", "momentumDuration", "momentumDistance", "newPosition", "doBounce", "afterBouncePosition", "bounceAmount", "needsLoopFix", "nextSlide", "j", "moveDistance", "currentSlideSize", "init_free_mode", "__esmMin", "init_utils", "Grid", "swiper", "extendParams", "slidesNumberEvenToRows", "slidesPerRow", "numFullColumns", "initSlides", "slidesLength", "slidesPerView", "rows", "fill", "updateSlide", "i", "slide", "getDirectionLabel", "slidesPerGroup", "spaceBetween", "newSlideOrderIndex", "column", "row", "groupIndex", "slideIndexInGroup", "columnsInGroup", "updateWrapperSize", "slideSize", "snapGrid", "centeredSlides", "roundLengths", "newSlidesGrid", "slidesGridItem", "init_grid", "__esmMin", "appendSlide", "slides", "swiper", "$wrapperEl", "params", "init_appendSlide", "__esmMin", "prependSlide", "slides", "swiper", "params", "$wrapperEl", "activeIndex", "newActiveIndex", "i", "init_prependSlide", "__esmMin", "addSlide", "index", "slides", "swiper", "$wrapperEl", "params", "activeIndex", "activeIndexBuffer", "baseLength", "newActiveIndex", "slidesBuffer", "i", "currentSlide", "init_addSlide", "__esmMin", "removeSlide", "slidesIndexes", "swiper", "params", "$wrapperEl", "activeIndex", "activeIndexBuffer", "newActiveIndex", "indexToRemove", "i", "init_removeSlide", "__esmMin", "removeAllSlides", "swiper", "slidesIndexes", "i", "init_removeAllSlides", "__esmMin", "Manipulation", "swiper", "appendSlide", "prependSlide", "addSlide", "removeSlide", "removeAllSlides", "init_manipulation", "__esmMin", "init_appendSlide", "init_prependSlide", "init_addSlide", "init_removeSlide", "init_removeAllSlides", "effectInit", "params", "effect", "swiper", "on", "setTranslate", "setTransition", "overwriteParams", "perspective", "overwriteParamsResult", "_s", "duration", "init_effect_init", "__esmMin", "effectTarget", "effectParams", "$slideEl", "init_effect_target", "__esmMin", "effectVirtualTransitionEnd", "swiper", "duration", "transformEl", "allSlides", "slides", "activeIndex", "$wrapperEl", "eventTriggered", "$transitionEndTarget", "triggerEvents", "i", "init_effect_virtual_transition_end", "__esmMin", "EffectFade", "swiper", "extendParams", "on", "effectInit", "slides", "params", "i", "$slideEl", "tx", "ty", "slideOpacity", "effectTarget", "duration", "transformEl", "effectVirtualTransitionEnd", "init_effect_fade", "__esmMin", "init_effect_init", "init_effect_target", "init_effect_virtual_transition_end", "EffectCube", "swiper", "extendParams", "on", "effectInit", "$el", "$wrapperEl", "slides", "swiperWidth", "swiperHeight", "rtl", "swiperSize", "browser", "params", "isHorizontal", "isVirtual", "wrapperRotate", "$cubeShadowEl", "dom_default", "i", "$slideEl", "slideIndex", "slideAngle", "round", "progress", "tx", "ty", "tz", "transform", "shadowBefore", "shadowAfter", "shadowAngle", "multiplier", "scale1", "scale2", "offset", "zFactor", "duration", "init_effect_cube", "__esmMin", "init_dom", "init_effect_init", "createShadow", "params", "$slideEl", "side", "shadowClass", "$shadowContainer", "$shadowEl", "dom_default", "init_create_shadow", "__esmMin", "init_dom", "EffectFlip", "swiper", "extendParams", "on", "effectInit", "slides", "rtl", "params", "i", "$slideEl", "progress", "offset", "rotateY", "rotateX", "tx", "ty", "shadowBefore", "shadowAfter", "createShadow", "transform", "effectTarget", "duration", "transformEl", "effectVirtualTransitionEnd", "init_effect_flip", "__esmMin", "init_create_shadow", "init_effect_init", "init_effect_target", "init_effect_virtual_transition_end", "EffectCoverflow", "swiper", "extendParams", "on", "effectInit", "swiperWidth", "swiperHeight", "slides", "slidesSizesGrid", "params", "isHorizontal", "transform", "center", "rotate", "translate", "i", "length", "$slideEl", "slideSize", "slideOffset", "offsetMultiplier", "rotateY", "rotateX", "translateZ", "stretch", "translateY", "translateX", "scale", "slideTransform", "effectTarget", "$shadowBeforeEl", "$shadowAfterEl", "createShadow", "duration", "transformEl", "init_effect_coverflow", "__esmMin", "init_create_shadow", "init_effect_init", "init_effect_target", "EffectCreative", "swiper", "extendParams", "on", "getTranslateValue", "value", "effectInit", "slides", "$wrapperEl", "slidesSizesGrid", "params", "multiplier", "isCenteredSlides", "margin", "i", "$slideEl", "slideProgress", "progress", "originalProgress", "offset", "t", "r", "custom", "data", "index", "translateString", "rotateString", "scaleString", "opacityString", "transform", "$shadowEl", "createShadow", "shadowOpacity", "$targetEl", "effectTarget", "duration", "transformEl", "effectVirtualTransitionEnd", "init_effect_creative", "__esmMin", "init_create_shadow", "init_effect_init", "init_effect_target", "init_effect_virtual_transition_end", "EffectCards", "swiper", "extendParams", "on", "effectInit", "slides", "activeIndex", "params", "startTranslate", "isTouched", "currentTranslate", "i", "$slideEl", "slideProgress", "progress", "offset", "tX", "tY", "tZ", "scale", "rotate", "tXAdd", "isSwipeToNext", "isSwipeToPrev", "subProgress", "prevY", "scaleString", "transform", "$shadowEl", "createShadow", "effectTarget", "duration", "transformEl", "effectVirtualTransitionEnd", "init_effect_cards", "__esmMin", "init_create_shadow", "init_effect_init", "init_effect_target", "init_effect_virtual_transition_end", "modules", "init_swiper_bundle_esm", "__esmMin", "init_core", "init_virtual", "init_keyboard", "init_mousewheel", "init_navigation", "init_pagination", "init_scrollbar", "init_parallax", "init_zoom", "init_lazy", "init_controller", "init_a11y", "init_history", "init_hash_navigation", "init_autoplay", "init_thumbs", "init_free_mode", "init_grid", "init_manipulation", "init_effect_fade", "init_effect_cube", "init_effect_flip", "init_effect_coverflow", "init_effect_creative", "init_effect_cards", "Virtual", "Keyboard", "Mousewheel", "Navigation", "Pagination", "Scrollbar", "Parallax", "Zoom", "Lazy", "Controller", "A11y", "History", "HashNavigation", "Autoplay", "Thumb", "freeMode", "Grid", "Manipulation", "EffectFade", "EffectCube", "EffectFlip", "EffectCoverflow", "EffectCreative", "EffectCards", "core_default", "__defProp", "__getOwnPropSymbols", "__hasOwnProp", "__propIsEnum", "__defNormalProp", "__spreadValues", "src_default", "init_stimulus_carousel_es", "__esmMin", "init_stimulus", "init_swiper_bundle_esm", "obj", "key", "value", "a", "b", "prop", "Controller", "core_default", "carousel_controller_default", "init_carousel_controller", "__esmMin", "init_stimulus_carousel_es", "src_default", "require_main", "__commonJSMin", "import_fslightbox", "init_stimulus", "init_carousel_controller", "application", "Application", "carousel_controller_default", "doc_links", "doc_link", "scroll_top", "updateTopButton", "event", "scroll_threshold", "scrollToTop"]
}
