PageSourceSearch

https://letwork.de/wp-content/themes/letwork/dist/js/main.js?ver=1.0.21

js letwork.de collected 2026-10-10 00:03:13 UTC 676,129 bytes, 17,009 lines download raw bytes

1/******/ (function() { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
vendor: 90,187 bytes, lines 4-22
4/***/ "./node_modules/@fancyapps/ui/dist/fancybox.esm.js":
5/*!*********************************************************!*\
6  !*** ./node_modules/@fancyapps/ui/dist/fancybox.esm.js ***!
7  \*********************************************************/
8/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9
10"use strict";
11__webpack_require__.r(__webpack_exports__);
12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13/* harmony export */   Carousel: function() { return /* binding */ y; },
14/* harmony export */   Fancybox: function() { return /* binding */ R; },
15/* harmony export */   Panzoom: function() { return /* binding */ d; }
16/* harmony export */ });
17// @fancyapps/ui/Fancybox v4.0.31
18const t=t=>"object"==typeof t&&null!==t&&t.constructor===Object&&"[object Object]"===Object.prototype.toString.call(t),e=(...i)=>{let s=!1;"boolean"==typeof i[0]&&(s=i.shift());let o=i[0];if(!o||"object"!=typeof o)throw new Error("extendee must be an object");const n=i.slice(1),a=n.length;for(let i=0;i<a;i++){const a=n[i];for(let i in a)if(a.hasOwnProperty(i)){const n=a[i];if(s&&(Array.isArray(n)||t(n))){const t=Array.isArray(n)?[]:{};o[i]=e(!0,o.hasOwnProperty(i)?o[i]:t,n)}else o[i]=n}}return o},i=(t,e=1e4)=>(t=parseFloat(t)||0,Math.round((t+Number.EPSILON)*e)/e),s=function(t){return!!(t&&"object"==typeof t&&t instanceof Element&&t!==document.body)&&(!t.__Panzoom&&(function(t){const e=getComputedStyle(t)["overflow-y"],i=getComputedStyle(t)["overflow-x"],s=("scroll"===e||"auto"===e)&&Math.abs(t.scrollHeight-t.clientHeight)>1,o=("scroll"===i||"auto"===i)&&Math.abs(t.scrollWidth-t.clientWidth)>1;return s||o}(t)?t:s(t.parentNode)))},o="undefined"!=typeof window&&window.ResizeObserver||class{constructor(t){this.observables=[],this.boundCheck=this.check.bind(this),this.boundCheck(),this.callback=t}observe(t){if(this.observables.some((e=>e.el===t)))return;const e={el:t,size:{height:t.clientHeight,width:t.clientWidth}};this.observables.push(e)}unobserve(t){this.observables=this.observables.filter((e=>e.el!==t))}disconnect(){this.observables=[]}check(){const t=this.observables.filter((t=>{const e=t.el.clientHeight,i=t.el.clientWidth;if(t.size.height!==e||t.size.width!==i)return t.size.height=e,t.size.width=i,!0})).map((t=>t.el));t.length>0&&this.callback(t),window.requestAnimationFrame(this.boundCheck)}};class n{constructor(t){this.id=self.Touch&&t instanceof Touch?t.identifier:-1,this.pageX=t.pageX,this.pageY=t.pageY,this.clientX=t.clientX,this.clientY=t.clientY}}const a=(t,e)=>e?Math.sqrt((e.clientX-t.clientX)**2+(e.clientY-t.clientY)**2):0,r=(t,e)=>e?{clientX:(t.clientX+e.clientX)/2,clientY:(t.clientY+e.clientY)/2}:t;class h{constructor(t,{start:e=(()=>!0),move:i=(()=>{}),end:s=(()=>{})}={}){this._element=t,this.startPointers=[],this.currentPointers=[],this._pointerStart=t=>{if(t.buttons>0&&0!==t.button)return;const e=new n(t);this.currentPointers.some((t=>t.id===e.id))||this._triggerPointerStart(e,t)&&(window.addEventListener("mousemove",this._move),window.addEventListener("mouseup",this._pointerEnd))},this._touchStart=t=>{for(const e of Array.from(t.changedTouches||[]))this._triggerPointerStart(new n(e),t)},this._move=t=>{const e=this.currentPointers.slice(),i=(t=>"changedTouches"in t)(t)?Array.from(t.changedTouches).map((t=>new n(t))):[new n(t)];for(const t of i){const e=this.currentPointers.findIndex((e=>e.id===t.id));e<0||(this.currentPointers[e]=t)}this._moveCallback(e,this.currentPointers.slice(),t)},this._triggerPointerEnd=(t,e)=>{const i=this.currentPointers.findIndex((e=>e.id===t.id));return!(i<0)&&(this.currentPointers.splice(i,1),this.startPointers.splice(i,1),this._endCallback(t,e),!0)},this._pointerEnd=t=>{t.buttons>0&&0!==t.button||this._triggerPointerEnd(new n(t),t)&&(window.removeEventListener("mousemove",this._move,{passive:!1}),window.removeEventListener("mouseup",this._pointerEnd,{passive:!1}))},this._touchEnd=t=>{for(const e of Array.from(t.changedTouches||[]))this._triggerPointerEnd(new n(e),t)},this._startCallback=e,this._moveCallback=i,this._endCallback=s,this._element.addEventListener("mousedown",this._pointerStart,{passive:!1}),this._element.addEventListener("touchstart",this._touchStart,{passive:!1}),this._element.addEventListener("touchmove",this._move,{passive:!1}),this._element.addEventListener("touchend",this._touchEnd),this._element.addEventListener("touchcancel",this._touchEnd)}stop(){this._element.removeEventListener("mousedown",this._pointerStart,{passive:!1}),this._element.removeEventListener("touchstart",this._touchStart,{passive:!1}),this._element.removeEventListener("touchmove",this._move,{passive:!1}),this._element.removeEventListener("touchend",this._touchEnd),this._element.removeEventListener("touchcancel",this._touchEnd),window.removeEventListener("mousemove",this._move),window.removeEventListener("mouseup",this._pointerEnd)}_triggerPointerStart(t,e){return!!this._startCallback(t,e)&&(this.currentPointers.push(t),this.startPointers.push(t),!0)}}class l{constructor(t={}){this.options=e(!0,{},t),this.plugins=[],this.events={};for(const t of["on","once"])for(const e of Object.entries(this.options[t]||{}))this[t](...e)}option(t,e,...i){t=String(t);let s=(o=t,n=this.options,o.split(".").reduce((function(t,e){return t&&t[e]}),n));var o,n;return"function"==typeof s&&(s=s.call(this,this,...i)),void 0===s?e:s}localize(t,e=[]){return t=(t=String(t).replace(/\{\{(\w+).?(\w+)?\}\}/g,((t,i,s)=>{let o="";s?o=this.option(`${i[0]+i.toLowerCase().substring(1)}.l10n.${s}`):i&&(o=this.option(`l10n.${i}`)),o||(o=t);for(let t=0;t<e.length;t++)o=o.split(e[t][0]).join(e[t][1]);return o}))).replace(/\{\{(.*)\}\}/,((t,e)=>e))}on(e,i){if(t(e)){for(const t of Object.entries(e))this.on(...t);return this}return String(e).split(" ").forEach((t=>{const e=this.events[t]=this.events[t]||[];-1==e.indexOf(i)&&e.push(i)})),this}once(e,i){if(t(e)){for(const t of Object.entries(e))this.once(...t);return this}return String(e).split(" ").forEach((t=>{const e=(...s)=>{this.off(t,e),i.call(this,this,...s)};e._=i,this.on(t,e)})),this}off(e,i){if(!t(e))return e.split(" ").forEach((t=>{const e=this.events[t];if(!e||!e.length)return this;let s=-1;for(let t=0,o=e.length;t<o;t++){const o=e[t];if(o&&(o===i||o._===i)){s=t;break}}-1!=s&&e.splice(s,1)})),this;for(const t of Object.entries(e))this.off(...t)}trigger(t,...e){for(const i of[...this.events[t]||[]].slice())if(i&&!1===i.call(this,this,...e))return!1;for(const i of[...this.events["*"]||[]].slice())if(i&&!1===i.call(this,t,this,...e))return!1;return!0}attachPlugins(t){const i={};for(const[s,o]of Object.entries(t||{}))!1===this.options[s]||this.plugins[s]||(this.options[s]=e({},o.defaults||{},this.options[s]),i[s]=new o(this));for(const[t,e]of Object.entries(i))e.attach(this);return this.plugins=Object.assign({},this.plugins,i),this}detachPlugins(){for(const t in this.plugins){let e;(e=this.plugins[t])&&"function"==typeof e.detach&&e.detach(this)}return this.plugins={},this}}const c={touch:!0,zoom:!0,pinchToZoom:!0,panOnlyZoomed:!1,lockAxis:!1,friction:.64,decelFriction:.88,zoomFriction:.74,bounceForce:.2,baseScale:1,minScale:1,maxScale:2,step:.5,textSelection:!1,click:"toggleZoom",wheel:"zoom",wheelFactor:42,wheelLimit:5,draggableClass:"is-draggable",draggingClass:"is-dragging",ratio:1};class d extends l{constructor(t,i={}){super(e(!0,{},c,i)),this.state="init",this.$container=t;for(const t of["onLoad","onWheel","onClick"])this[t]=this[t].bind(this);this.initLayout(),this.resetValues(),this.attachPlugins(d.Plugins),this.trigger("init"),this.updateMetrics(),this.attachEvents(),this.trigger("ready"),!1===this.option("centerOnStart")?this.state="ready":this.panTo({friction:0}),t.__Panzoom=this}initLayout(){const t=this.$container;if(!(t instanceof HTMLElement))throw new Error("Panzoom: Container not found");const e=this.option("content")||t.querySelector(".panzoom__content");if(!e)throw new Error("Panzoom: Content not found");this.$content=e;let i=this.option("viewport")||t.querySelector(".panzoom__viewport");i||!1===this.option("wrapInner")||(i=document.createElement("div"),i.classList.add("panzoom__viewport"),i.append(...t.childNodes),t.appendChild(i)),this.$viewport=i||e.parentNode}resetValues(){this.updateRate=this.option("updateRate",/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)?250:24),this.container={width:0,height:0},this.viewport={width:0,height:0},this.content={origWidth:0,origHeight:0,width:0,height:0,x:this.option("x",0),y:this.option("y",0),scale:this.option("baseScale")},this.transform={x:0,y:0,scale:1},this.resetDragPosition()}onLoad(t){this.updateMetrics(),this.panTo({scale:this.option("baseScale"),friction:0}),this.trigger("load",t)}onClick(t){if(t.defaultPrevented)return;if(document.activeElement&&document.activeElement.closest("[contenteditable]"))return;if(this.option("textSelection")&&window.getSelection().toString().length&&(!t.target||!t.target.hasAttribute("data-fancybox-close")))return void t.stopPropagation();const e=this.$content.getClientRects()[0];if("ready"!==this.state&&(this.dragPosition.midPoint||Math.abs(e.top-this.dragStart.rect.top)>1||Math.abs(e.left-this.dragStart.rect.left)>1))return t.preventDefault(),void t.stopPropagation();!1!==this.trigger("click",t)&&this.option("zoom")&&"toggleZoom"===this.option("click")&&(t.preventDefault(),t.stopPropagation(),this.zoomWithClick(t))}onWheel(t){!1!==this.trigger("wheel",t)&&this.option("zoom")&&this.option("wheel")&&this.zoomWithWheel(t)}zoomWithWheel(t){void 0===this.changedDelta&&(this.changedDelta=0);const e=Math.max(-1,Math.min(1,-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)),i=this.content.scale;let s=i*(100+e*this.option("wheelFactor"))/100;if(e<0&&Math.abs(i-this.option("minScale"))<.01||e>0&&Math.abs(i-this.option("maxScale"))<.01?(this.changedDelta+=Math.abs(e),s=i):(this.changedDelta=0,s=Math.max(Math.min(s,this.option("maxScale")),this.option("minScale"))),this.changedDelta>this.option("wheelLimit"))return;if(t.preventDefault(),s===i)return;const o=this.$content.getBoundingClientRect(),n=t.clientX-o.left,a=t.clientY-o.top;this.zoomTo(s,{x:n,y:a})}zoomWithClick(t){const e=this.$content.getClientRects()[0],i=t.clientX-e.left,s=t.clientY-e.top;this.toggleZoom({x:i,y:s})}attachEvents(){this.$content.addEventListener("load",this.onLoad),this.$container.addEventListener("wheel",this.onWheel,{passive:!1}),this.$container.addEventListener("click",this.onClick,{passive:!1}),this.initObserver();const t=new h(this.$container,{start:(e,i)=>{if(!this.option("touch"))return!1;if(this.velocity.scale<0)return!1;const o=i.composedPath()[0];if(!t.currentPointers.length){if(-1!==["BUTTON","TEXTAREA","OPTION","INPUT","SELECT","VIDEO"].indexOf(o.nodeName))return!1;if(this.option("textSelection")&&((t,e,i)=>{const s=t.childNodes,o=document.createRange();for(let t=0;t<s.length;t++){const n=s[t];if(n.nodeType!==Node.TEXT_NODE)continue;o.selectNodeContents(n);const a=o.getBoundingClientRect();if(e>=a.left&&i>=a.top&&e<=a.right&&i<=a.bottom)return n}return!1})(o,e.clientX,e.clientY))return!1}return!s(o)&&(!1!==this.trigger("touchStart",i)&&("mousedown"===i.type&&i.preventDefault(),this.state="pointerdown",this.resetDragPosition(),this.dragPosition.midPoint=null,this.dragPosition.time=Date.now(),!0))},move:(e,i,s)=>{if("pointerdown"!==this.state)return;if(!1===this.trigger("touchMove",s))return void s.preventDefault();if(i.length<2&&!0===this.option("panOnlyZoomed")&&this.content.width<=this.viewport.width&&this.content.height<=this.viewport.height&&this.transform.scale<=this.option("baseScale"))return;if(i.length>1&&(!this.option("zoom")||!1===this.option("pinchToZoom")))return;const o=r(e[0],e[1]),n=r(i[0],i[1]),h=n.clientX-o.clientX,l=n.clientY-o.clientY,c=a(e[0],e[1]),d=a(i[0],i[1]),u=c&&d?d/c:1;this.dragOffset.x+=h,this.dragOffset.y+=l,this.dragOffset.scale*=u,this.dragOffset.time=Date.now()-this.dragPosition.time;const f=1===this.dragStart.scale&&this.option("lockAxis");if(f&&!this.lockAxis){if(Math.abs(this.dragOffset.x)<6&&Math.abs(this.dragOffset.y)<6)return void s.preventDefault();const t=Math.abs(180*Math.atan2(this.dragOffset.y,this.dragOffset.x)/Math.PI);this.lockAxis=t>45&&t<135?"y":"x"}if("xy"===f||"y"!==this.lockAxis){if(s.preventDefault(),s.stopPropagation(),s.stopImmediatePropagation(),this.lockAxis&&(this.dragOffset["x"===this.lockAxis?"y":"x"]=0),this.$container.classList.add(this.option("draggingClass")),this.transform.scale===this.option("baseScale")&&"y"===this.lockAxis||(this.dragPosition.x=this.dragStart.x+this.dragOffset.x),this.transform.scale===this.option("baseScale")&&"x"===this.lockAxis||(this.dragPosition.y=this.dragStart.y+this.dragOffset.y),this.dragPosition.scale=this.dragStart.scale*this.dragOffset.scale,i.length>1){const e=r(t.startPointers[0],t.startPointers[1]),i=e.clientX-this.dragStart.rect.x,s=e.clientY-this.dragStart.rect.y,{deltaX:o,deltaY:a}=this.getZoomDelta(this.content.scale*this.dragOffset.scale,i,s);this.dragPosition.x-=o,this.dragPosition.y-=a,this.dragPosition.midPoint=n}else this.setDragResistance();this.transform={x:this.dragPosition.x,y:this.dragPosition.y,scale:this.dragPosition.scale},this.startAnimation()}},end:(e,i)=>{if("pointerdown"!==this.state)return;if(this._dragOffset={...this.dragOffset},t.currentPointers.length)return void this.resetDragPosition();if(this.state="decel",this.friction=this.option("decelFriction"),this.recalculateTransform(),this.$container.classList.remove(this.option("draggingClass")),!1===this.trigger("touchEnd",i))return;if("decel"!==this.state)return;const s=this.option("minScale");if(this.transform.scale<s)return void this.zoomTo(s,{friction:.64});const o=this.option("maxScale");if(this.transform.scale-o>.01){const t=this.dragPosition.midPoint||e,i=this.$content.getClientRects()[0];this.zoomTo(o,{friction:.64,x:t.clientX-i.left,y:t.clientY-i.top})}else;}});this.pointerTracker=t}initObserver(){this.resizeObserver||(this.resizeObserver=new o((()=>{this.updateTimer||(this.updateTimer=setTimeout((()=>{const t=this.$container.getBoundingClientRect();t.width&&t.height?((Math.abs(t.width-this.container.width)>1||Math.abs(t.height-this.container.height)>1)&&(this.isAnimating()&&this.endAnimation(!0),this.updateMetrics(),this.panTo({x:this.content.x,y:this.content.y,scale:this.option("baseScale"),friction:0})),this.updateTimer=null):this.updateTimer=null}),this.updateRate))})),this.resizeObserver.observe(this.$container))}resetDragPosition(){this.lockAxis=null,this.friction=this.option("friction"),this.velocity={x:0,y:0,scale:0};const{x:t,y:e,scale:i}=this.content;this.dragStart={rect:this.$content.getBoundingClientRect(),x:t,y:e,scale:i},this.dragPosition={...this.dragPosition,x:t,y:e,scale:i},this.dragOffset={x:0,y:0,scale:1,time:0}}updateMetrics(t){!0!==t&&this.trigger("beforeUpdate");const e=this.$container,s=this.$content,o=this.$viewport,n=s instanceof HTMLImageElement,a=this.option("zoom"),r=this.option("resizeParent",a);let h=this.option("width"),l=this.option("height"),c=h||(d=s,Math.max(parseFloat(d.naturalWidth||0),parseFloat(d.width&&d.width.baseVal&&d.width.baseVal.value||0),parseFloat(d.offsetWidth||0),parseFloat(d.scrollWidth||0)));var d;let u=l||(t=>Math.max(parseFloat(t.naturalHeight||0),parseFloat(t.height&&t.height.baseVal&&t.height.baseVal.value||0),parseFloat(t.offsetHeight||0),parseFloat(t.scrollHeight||0)))(s);Object.assign(s.style,{width:h?`${h}px`:"",height:l?`${l}px`:"",maxWidth:"",maxHeight:""}),r&&Object.assign(o.style,{width:"",height:""});const f=this.option("ratio");c=i(c*f),u=i(u*f),h=c,l=u;const g=s.getBoundingClientRect(),p=o.getBoundingClientRect(),m=o==e?p:e.getBoundingClientRect();let y=Math.max(o.offsetWidth,i(p.width)),v=Math.max(o.offsetHeight,i(p.height)),b=window.getComputedStyle(o);if(y-=parseFloat(b.paddingLeft)+parseFloat(b.paddingRight),v-=parseFloat(b.paddingTop)+parseFloat(b.paddingBottom),this.viewport.width=y,this.viewport.height=v,a){if(Math.abs(c-g.width)>.1||Math.abs(u-g.height)>.1){const t=((t,e,i,s)=>{const o=Math.min(i/t||0,s/e);return{width:t*o||0,height:e*o||0}})(c,u,Math.min(c,g.width),Math.min(u,g.height));h=i(t.width),l=i(t.height)}Object.assign(s.style,{width:`${h}px`,height:`${l}px`,transform:""})}if(r&&(Object.assign(o.style,{width:`${h}px`,height:`${l}px`}),this.viewport={...this.viewport,width:h,height:l}),n&&a&&"function"!=typeof this.options.maxScale){const t=this.option("maxScale");this.options.maxScale=function(){return this.content.origWidth>0&&this.content.fitWidth>0?this.content.origWidth/this.content.fitWidth:t}}this.content={...this.content,origWidth:c,origHeight:u,fitWidth:h,fitHeight:l,width:h,height:l,scale:1,isZoomable:a},this.container={width:m.width,height:m.height},!0!==t&&this.trigger("afterUpdate")}zoomIn(t){this.zoomTo(this.content.scale+(t||this.option("step")))}zoomOut(t){this.zoomTo(this.content.scale-(t||this.option("step")))}toggleZoom(t={}){const e=this.option("maxScale"),i=this.option("baseScale"),s=this.content.scale>i+.5*(e-i)?i:e;this.zoomTo(s,t)}zoomTo(t=this.option("baseScale"),{x:e=null,y:s=null}={}){t=Math.max(Math.min(t,this.option("maxScale")),this.option("minScale"));const o=i(this.content.scale/(this.content.width/this.content.fitWidth),1e7);null===e&&(e=this.content.width*o*.5),null===s&&(s=this.content.height*o*.5);const{deltaX:n,deltaY:a}=this.getZoomDelta(t,e,s);e=this.content.x-n,s=this.content.y-a,this.panTo({x:e,y:s,scale:t,friction:this.option("zoomFriction")})}getZoomDelta(t,e=0,i=0){const s=this.content.fitWidth*this.content.scale,o=this.content.fitHeight*this.content.scale,n=e>0&&s?e/s:0,a=i>0&&o?i/o:0;return{deltaX:(this.content.fitWidth*t-s)*n,deltaY:(this.content.fitHeight*t-o)*a}}panTo({x:t=this.content.x,y:e=this.content.y,scale:i,friction:s=this.option("friction"),ignoreBounds:o=!1}={}){if(i=i||this.content.scale||1,!o){const{boundX:s,boundY:o}=this.getBounds(i);s&&(t=Math.max(Math.min(t,s.to),s.from)),o&&(e=Math.max(Math.min(e,o.to),o.from))}this.friction=s,this.transform={...this.transform,x:t,y:e,scale:i},s?(this.state="panning",this.velocity={x:(1/this.friction-1)*(t-this.content.x),y:(1/this.friction-1)*(e-this.content.y),scale:(1/this.friction-1)*(i-this.content.scale)},this.startAnimation()):this.endAnimation()}startAnimation(){this.rAF?cancelAnimationFrame(this.rAF):this.trigger("startAnimation"),this.rAF=requestAnimationFrame((()=>this.animate()))}animate(){if(this.setEdgeForce(),this.setDragForce(),this.velocity.x*=this.friction,this.velocity.y*=this.friction,this.velocity.scale*=this.friction,this.content.x+=this.velocity.x,this.content.y+=this.velocity.y,this.content.scale+=this.velocity.scale,this.isAnimating())this.setTransform();else if("pointerdown"!==this.state)return void this.endAnimation();this.rAF=requestAnimationFrame((()=>this.animate()))}getBounds(t){let e=this.boundX,s=this.boundY;if(void 0!==e&&void 0!==s)return{boundX:e,boundY:s};e={from:0,to:0},s={from:0,to:0},t=t||this.transform.scale;const o=this.content.fitWidth*t,n=this.content.fitHeight*t,a=this.viewport.width,r=this.viewport.height;if(o<a){const t=i(.5*(a-o));e.from=t,e.to=t}else e.from=i(a-o);if(n<r){const t=.5*(r-n);s.from=t,s.to=t}else s.from=i(r-n);return{boundX:e,boundY:s}}setEdgeForce(){if("decel"!==this.state)return;const t=this.option("bounceForce"),{boundX:e,boundY:i}=this.getBounds(Math.max(this.transform.scale,this.content.scale));let s,o,n,a;if(e&&(s=this.content.x<e.from,o=this.content.x>e.to),i&&(n=this.content.y<i.from,a=this.content.y>i.to),s||o){let i=((s?e.from:e.to)-this.content.x)*t;const o=this.content.x+(this.velocity.x+i)/this.friction;o>=e.from&&o<=e.to&&(i+=this.velocity.x),this.velocity.x=i,this.recalculateTransform()}if(n||a){let e=((n?i.from:i.to)-this.content.y)*t;const s=this.content.y+(e+this.velocity.y)/this.friction;s>=i.from&&s<=i.to&&(e+=this.velocity.y),this.velocity.y=e,this.recalculateTransform()}}setDragResistance(){if("pointerdown"!==this.state)return;const{boundX:t,boundY:e}=this.getBounds(this.dragPosition.scale);let i,s,o,n;if(t&&(i=this.dragPosition.x<t.from,s=this.dragPosition.x>t.to),e&&(o=this.dragPosition.y<e.from,n=this.dragPosition.y>e.to),(i||s)&&(!i||!s)){const e=i?t.from:t.to,s=e-this.dragPosition.x;this.dragPosition.x=e-.3*s}if((o||n)&&(!o||!n)){const t=o?e.from:e.to,i=t-this.dragPosition.y;this.dragPosition.y=t-.3*i}}setDragForce(){"pointerdown"===this.state&&(this.velocity.x=this.dragPosition.x-this.content.x,this.velocity.y=this.dragPosition.y-this.content.y,this.velocity.scale=this.dragPosition.scale-this.content.scale)}recalculateTransform(){this.transform.x=this.content.x+this.velocity.x/(1/this.friction-1),this.transform.y=this.content.y+this.velocity.y/(1/this.friction-1),this.transform.scale=this.content.scale+this.velocity.scale/(1/this.friction-1)}isAnimating(){return!(!this.friction||!(Math.abs(this.velocity.x)>.05||Math.abs(this.velocity.y)>.05||Math.abs(this.velocity.scale)>.05))}setTransform(t){let e,s,o;if(t?(e=i(this.transform.x),s=i(this.transform.y),o=this.transform.scale,this.content={...this.content,x:e,y:s,scale:o}):(e=i(this.content.x),s=i(this.content.y),o=this.content.scale/(this.content.width/this.content.fitWidth),this.content={...this.content,x:e,y:s}),this.trigger("beforeTransform"),e=i(this.content.x),s=i(this.content.y),t&&this.option("zoom")){let t,n;t=i(this.content.fitWidth*o),n=i(this.content.fitHeight*o),this.content.width=t,this.content.height=n,this.transform={...this.transform,width:t,height:n,scale:o},Object.assign(this.$content.style,{width:`${t}px`,height:`${n}px`,maxWidth:"none",maxHeight:"none",transform:`translate3d(${e}px, ${s}px, 0) scale(1)`})}else this.$content.style.transform=`translate3d(${e}px, ${s}px, 0) scale(${o})`;this.trigger("afterTransform")}endAnimation(t){cancelAnimationFrame(this.rAF),this.rAF=null,this.velocity={x:0,y:0,scale:0},this.setTransform(!0),this.state="ready",this.handleCursor(),!0!==t&&this.trigger("endAnimation")}handleCursor(){const t=this.option("draggableClass");t&&this.option("touch")&&(1==this.option("panOnlyZoomed")&&this.content.width<=this.viewport.width&&this.content.height<=this.viewport.height&&this.transform.scale<=this.option("baseScale")?this.$container.classList.remove(t):this.$container.classList.add(t))}detachEvents(){this.$content.removeEventListener("load",this.onLoad),this.$container.removeEventListener("wheel",this.onWheel,{passive:!1}),this.$container.removeEventListener("click",this.onClick,{passive:!1}),this.pointerTracker&&(this.pointerTracker.stop(),this.pointerTracker=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}destroy(){"destroy"!==this.state&&(this.state="destroy",clearTimeout(this.updateTimer),this.updateTimer=null,cancelAnimationFrame(this.rAF),this.rAF=null,this.detachEvents(),this.detachPlugins(),this.resetDragPosition())}}d.version="4.0.31",d.Plugins={};const u=(t,e)=>{let i=0;return function(...s){const o=(new Date).getTime();if(!(o-i<e))return i=o,t(...s)}};class f{constructor(t){this.$container=null,this.$prev=null,this.$next=null,this.carousel=t,this.onRefresh=this.onRefresh.bind(this)}option(t){return this.carousel.option(`Navigation.${t}`)}createButton(t){const e=document.createElement("button");e.setAttribute("title",this.carousel.localize(`{{${t.toUpperCase()}}}`));const i=this.option("classNames.button")+" "+this.option(`classNames.${t}`);return e.classList.add(...i.split(" ")),e.setAttribute("tabindex","0"),e.innerHTML=this.carousel.localize(this.option(`${t}Tpl`)),e.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation(),this.carousel["slide"+("next"===t?"Next":"Prev")]()})),e}build(){this.$container||(this.$container=document.createElement("div"),this.$container.classList.add(...this.option("classNames.main").split(" ")),this.carousel.$container.appendChild(this.$container)),this.$next||(this.$next=this.createButton("next"),this.$container.appendChild(this.$next)),this.$prev||(this.$prev=this.createButton("prev"),this.$container.appendChild(this.$prev))}onRefresh(){const t=this.carousel.pages.length;t<=1||t>1&&this.carousel.elemDimWidth<this.carousel.wrapDimWidth&&!Number.isInteger(this.carousel.option("slidesPerPage"))?this.cleanup():(this.build(),this.$prev.removeAttribute("disabled"),this.$next.removeAttribute("disabled"),this.carousel.option("infiniteX",this.carousel.option("infinite"))||(this.carousel.page<=0&&this.$prev.setAttribute("disabled",""),this.carousel.page>=t-1&&this.$next.setAttribute("disabled","")))}cleanup(){this.$prev&&this.$prev.remove(),this.$prev=null,this.$next&&this.$next.remove(),this.$next=null,this.$container&&this.$container.remove(),this.$container=null}attach(){this.carousel.on("refresh change",this.onRefresh)}detach(){this.carousel.off("refresh change",this.onRefresh),this.cleanup()}}f.defaults={prevTpl:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" tabindex="-1"><path d="M15 3l-9 9 9 9"/></svg>',nextTpl:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" tabindex="-1"><path d="M9 3l9 9-9 9"/></svg>',classNames:{main:"carousel__nav",button:"carousel__button",next:"is-next",prev:"is-prev"}};class g{constructor(t){this.carousel=t,this.selectedIndex=null,this.friction=0,this.onNavReady=this.onNavReady.bind(this),this.onNavClick=this.onNavClick.bind(this),this.onNavCreateSlide=this.onNavCreateSlide.bind(this),this.onTargetChange=this.onTargetChange.bind(this)}addAsTargetFor(t){this.target=this.carousel,this.nav=t,this.attachEvents()}addAsNavFor(t){this.target=t,this.nav=this.carousel,this.attachEvents()}attachEvents(){this.nav.options.initialSlide=this.target.options.initialPage,this.nav.on("ready",this.onNavReady),this.nav.on("createSlide",this.onNavCreateSlide),this.nav.on("Panzoom.click",this.onNavClick),this.target.on("change",this.onTargetChange),this.target.on("Panzoom.afterUpdate",this.onTargetChange)}onNavReady(){this.onTargetChange(!0)}onNavClick(t,e,i){const s=i.target.closest(".carousel__slide");if(!s)return;i.stopPropagation();const o=parseInt(s.dataset.index,10),n=this.target.findPageForSlide(o);this.target.page!==n&&this.target.slideTo(n,{friction:this.friction}),this.markSelectedSlide(o)}onNavCreateSlide(t,e){e.index===this.selectedIndex&&this.markSelectedSlide(e.index)}onTargetChange(){const t=this.target.pages[this.target.page].indexes[0],e=this.nav.findPageForSlide(t);this.nav.slideTo(e),this.markSelectedSlide(t)}markSelectedSlide(t){this.selectedIndex=t,[...this.nav.slides].filter((t=>t.$el&&t.$el.classList.remove("is-nav-selected")));const e=this.nav.slides[t];e&&e.$el&&e.$el.classList.add("is-nav-selected")}attach(t){const e=t.options.Sync;(e.target||e.nav)&&(e.target?this.addAsNavFor(e.target):e.nav&&this.addAsTargetFor(e.nav),this.friction=e.friction)}detach(){this.nav&&(this.nav.off("ready",this.onNavReady),this.nav.off("Panzoom.click",this.onNavClick),this.nav.off("createSlide",this.onNavCreateSlide)),this.target&&(this.target.off("Panzoom.afterUpdate",this.onTargetChange),this.target.off("change",this.onTargetChange))}}g.defaults={friction:.92};const p={Navigation:f,Dots:class{constructor(t){this.carousel=t,this.$list=null,this.events={change:this.onChange.bind(this),refresh:this.onRefresh.bind(this)}}buildList(){if(this.carousel.pages.length<this.carousel.option("Dots.minSlideCount"))return;const t=document.createElement("ol");return t.classList.add("carousel__dots"),t.addEventListener("click",(t=>{if(!("page"in t.target.dataset))return;t.preventDefault(),t.stopPropagation();const e=parseInt(t.target.dataset.page,10),i=this.carousel;e!==i.page&&(i.pages.length<3&&i.option("infinite")?i[0==e?"slidePrev":"slideNext"]():i.slideTo(e))})),this.$list=t,this.carousel.$container.appendChild(t),this.carousel.$container.classList.add("has-dots"),t}removeList(){this.$list&&(this.$list.parentNode.removeChild(this.$list),this.$list=null),this.carousel.$container.classList.remove("has-dots")}rebuildDots(){let t=this.$list;const e=!!t,i=this.carousel.pages.length;if(i<2)return void(e&&this.removeList());e||(t=this.buildList());const s=this.$list.children.length;if(s>i)for(let t=i;t<s;t++)this.$list.removeChild(this.$list.lastChild);else{for(let t=s;t<i;t++){const e=document.createElement("li");e.classList.add("carousel__dot"),e.dataset.page=t,e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("title",this.carousel.localize("{{GOTO}}",[["%d",t+1]])),e.addEventListener("keydown",(t=>{const i=t.code;let s;"Enter"===i||"NumpadEnter"===i?s=e:"ArrowRight"===i?s=e.nextSibling:"ArrowLeft"===i&&(s=e.previousSibling),s&&s.click()})),this.$list.appendChild(e)}this.setActiveDot()}}setActiveDot(){if(!this.$list)return;this.$list.childNodes.forEach((t=>{t.classList.remove("is-selected")}));const t=this.$list.childNodes[this.carousel.page];t&&t.classList.add("is-selected")}onChange(){this.setActiveDot()}onRefresh(){this.rebuildDots()}attach(){this.carousel.on(this.events)}detach(){this.removeList(),this.carousel.off(this.events),this.carousel=null}},Sync:g};const m={slides:[],preload:0,slidesPerPage:"auto",initialPage:null,initialSlide:null,friction:.92,center:!0,infinite:!0,fill:!0,dragFree:!1,prefix:"",classNames:{viewport:"carousel__viewport",track:"carousel__track",slide:"carousel__slide",slideSelected:"is-selected"},l10n:{NEXT:"Next slide",PREV:"Previous slide",GOTO:"Go to slide #%d"}};class y extends l{constructor(t,i={}){if(super(i=e(!0,{},m,i)),this.state="init",this.$container=t,!(this.$container instanceof HTMLElement))throw new Error("No root element provided");this.slideNext=u(this.slideNext.bind(this),250),this.slidePrev=u(this.slidePrev.bind(this),250),this.init(),t.__Carousel=this}init(){this.pages=[],this.page=this.pageIndex=null,this.prevPage=this.prevPageIndex=null,this.attachPlugins(y.Plugins),this.trigger("init"),this.initLayout(),this.initSlides(),this.updateMetrics(),this.$track&&this.pages.length&&(this.$track.style.transform=`translate3d(${-1*this.pages[this.page].left}px, 0px, 0) scale(1)`),this.manageSlideVisiblity(),this.initPanzoom(),this.state="ready",this.trigger("ready")}initLayout(){const t=this.option("prefix"),e=this.option("classNames");this.$viewport=this.option("viewport")||this.$container.querySelector(`.${t}${e.viewport}`),this.$viewport||(this.$viewport=document.createElement("div"),this.$viewport.classList.add(...(t+e.viewport).split(" ")),this.$viewport.append(...this.$container.childNodes),this.$container.appendChild(this.$viewport)),this.$track=this.option("track")||this.$container.querySelector(`.${t}${e.track}`),this.$track||(this.$track=document.createElement("div"),this.$track.classList.add(...(t+e.track).split(" ")),this.$track.append(...this.$viewport.childNodes),this.$viewport.appendChild(this.$track))}initSlides(){this.slides=[];this.$viewport.querySelectorAll(`.${this.option("prefix")}${this.option("classNames.slide")}`).forEach((t=>{const e={$el:t,isDom:!0};this.slides.push(e),this.trigger("createSlide",e,this.slides.length)})),Array.isArray(this.options.slides)&&(this.slides=e(!0,[...this.slides],this.options.slides))}updateMetrics(){let t,e=0,s=[];this.slides.forEach(((i,o)=>{const n=i.$el,a=i.isDom||!t?this.getSlideMetrics(n):t;i.index=o,i.width=a,i.left=e,t=a,e+=a,s.push(o)}));let o=Math.max(this.$track.offsetWidth,i(this.$track.getBoundingClientRect().width)),n=getComputedStyle(this.$track);o-=parseFloat(n.paddingLeft)+parseFloat(n.paddingRight),this.contentWidth=e,this.viewportWidth=o;const a=[],r=this.option("slidesPerPage");if(Number.isInteger(r)&&e>o)for(let t=0;t<this.slides.length;t+=r)a.push({indexes:s.slice(t,t+r),slides:this.slides.slice(t,t+r)});else{let t=0,e=0;for(let i=0;i<this.slides.length;i+=1){let s=this.slides[i];(!a.length||e+s.width>o)&&(a.push({indexes:[],slides:[]}),t=a.length-1,e=0),e+=s.width,a[t].indexes.push(i),a[t].slides.push(s)}}const h=this.option("center"),l=this.option("fill");a.forEach(((t,i)=>{t.index=i,t.width=t.slides.reduce(((t,e)=>t+e.width),0),t.left=t.slides[0].left,h&&(t.left+=.5*(o-t.width)*-1),l&&!this.option("infiniteX",this.option("infinite"))&&e>o&&(t.left=Math.max(t.left,0),t.left=Math.min(t.left,e-o))}));const c=[];let d;a.forEach((t=>{const e={...t};d&&e.left===d.left?(d.width+=e.width,d.slides=[...d.slides,...e.slides],d.indexes=[...d.indexes,...e.indexes]):(e.index=c.length,d=e,c.push(e))})),this.pages=c;let u=this.page;if(null===u){const t=this.option("initialSlide");u=null!==t?this.findPageForSlide(t):parseInt(this.option("initialPage",0),10)||0,c[u]||(u=c.length&&u>c.length?c[c.length-1].index:0),this.page=u,this.pageIndex=u}this.updatePanzoom(),this.trigger("refresh")}getSlideMetrics(t){if(!t){const e=this.slides[0];(t=document.createElement("div")).dataset.isTestEl=1,t.style.visibility="hidden",t.classList.add(...(this.option("prefix")+this.option("classNames.slide")).split(" ")),e.customClass&&t.classList.add(...e.customClass.split(" ")),this.$track.prepend(t)}let e=Math.max(t.offsetWidth,i(t.getBoundingClientRect().width));const s=t.currentStyle||window.getComputedStyle(t);return e=e+(parseFloat(s.marginLeft)||0)+(parseFloat(s.marginRight)||0),t.dataset.isTestEl&&t.remove(),e}findPageForSlide(t){t=parseInt(t,10)||0;const e=this.pages.find((e=>e.indexes.indexOf(t)>-1));return e?e.index:null}slideNext(){this.slideTo(this.pageIndex+1)}slidePrev(){this.slideTo(this.pageIndex-1)}slideTo(t,e={}){const{x:i=-1*this.setPage(t,!0),y:s=0,friction:o=this.option("friction")}=e;this.Panzoom.content.x===i&&!this.Panzoom.velocity.x&&o||(this.Panzoom.panTo({x:i,y:s,friction:o,ignoreBounds:!0}),"ready"===this.state&&"ready"===this.Panzoom.state&&this.trigger("settle"))}initPanzoom(){this.Panzoom&&this.Panzoom.destroy();const t=e(!0,{},{content:this.$track,wrapInner:!1,resizeParent:!1,zoom:!1,click:!1,lockAxis:"x",x:this.pages.length?-1*this.pages[this.page].left:0,centerOnStart:!1,textSelection:()=>this.option("textSelection",!1),panOnlyZoomed:function(){return this.content.width<=this.viewport.width}},this.option("Panzoom"));this.Panzoom=new d(this.$container,t),this.Panzoom.on({"*":(t,...e)=>this.trigger(`Panzoom.${t}`,...e),afterUpdate:()=>{this.updatePage()},beforeTransform:this.onBeforeTransform.bind(this),touchEnd:this.onTouchEnd.bind(this),endAnimation:()=>{this.trigger("settle")}}),this.updateMetrics(),this.manageSlideVisiblity()}updatePanzoom(){this.Panzoom&&(this.Panzoom.content={...this.Panzoom.content,fitWidth:this.contentWidth,origWidth:this.contentWidth,width:this.contentWidth},this.pages.length>1&&this.option("infiniteX",this.option("infinite"))?this.Panzoom.boundX=null:this.pages.length&&(this.Panzoom.boundX={from:-1*this.pages[this.pages.length-1].left,to:-1*this.pages[0].left}),this.option("infiniteY",this.option("infinite"))?this.Panzoom.boundY=null:this.Panzoom.boundY={from:0,to:0},this.Panzoom.handleCursor())}manageSlideVisiblity(){const t=this.contentWidth,e=this.viewportWidth;let i=this.Panzoom?-1*this.Panzoom.content.x:this.pages.length?this.pages[this.page].left:0;const s=this.option("preload"),o=this.option("infiniteX",this.option("infinite")),n=parseFloat(getComputedStyle(this.$viewport,null).getPropertyValue("padding-left")),a=parseFloat(getComputedStyle(this.$viewport,null).getPropertyValue("padding-right"));this.slides.forEach((r=>{let h,l,c=0;h=i-n,l=i+e+a,h-=s*(e+n+a),l+=s*(e+n+a);const d=r.left+r.width>h&&r.left<l;h=i+t-n,l=i+t+e+a,h-=s*(e+n+a);const u=o&&r.left+r.width>h&&r.left<l;h=i-t-n,l=i-t+e+a,h-=s*(e+n+a);const f=o&&r.left+r.width>h&&r.left<l;u||d||f?(this.createSlideEl(r),d&&(c=0),u&&(c=-1),f&&(c=1),r.left+r.width>i&&r.left<=i+e+a&&(c=0)):this.removeSlideEl(r),r.hasDiff=c}));let r=0,h=0;this.slides.forEach(((e,i)=>{let s=0;e.$el?(i!==r||e.hasDiff?s=h+e.hasDiff*t:h=0,e.$el.style.left=Math.abs(s)>.1?`${h+e.hasDiff*t}px`:"",r++):h+=e.width})),this.markSelectedSlides()}createSlideEl(t){if(!t)return;if(t.$el){let e=t.$el.dataset.index;if(!e||parseInt(e,10)!==t.index){let e;t.$el.dataset.index=t.index,t.$el.querySelectorAll("[data-lazy-srcset]").forEach((t=>{t.srcset=t.dataset.lazySrcset})),t.$el.querySelectorAll("[data-lazy-src]").forEach((t=>{let e=t.dataset.lazySrc;t instanceof HTMLImageElement?t.src=e:t.style.backgroundImage=`url('${e}')`})),(e=t.$el.dataset.lazySrc)&&(t.$el.style.backgroundImage=`url('${e}')`),t.state="ready"}return}const e=document.createElement("div");e.dataset.index=t.index,e.classList.add(...(this.option("prefix")+this.option("classNames.slide")).split(" ")),t.customClass&&e.classList.add(...t.customClass.split(" ")),t.html&&(e.innerHTML=t.html);const i=[];this.slides.forEach(((t,e)=>{t.$el&&i.push(e)}));const s=t.index;let o=null;if(i.length){let t=i.reduce(((t,e)=>Math.abs(e-s)<Math.abs(t-s)?e:t));o=this.slides[t]}return this.$track.insertBefore(e,o&&o.$el?o.index<t.index?o.$el.nextSibling:o.$el:null),t.$el=e,this.trigger("createSlide",t,s),t}removeSlideEl(t){t.$el&&!t.isDom&&(this.trigger("removeSlide",t),t.$el.remove(),t.$el=null)}markSelectedSlides(){const t=this.option("classNames.slideSelected"),e="aria-hidden";this.slides.forEach(((i,s)=>{const o=i.$el;if(!o)return;const n=this.pages[this.page];n&&n.indexes&&n.indexes.indexOf(s)>-1?(t&&!o.classList.contains(t)&&(o.classList.add(t),this.trigger("selectSlide",i)),o.removeAttribute(e)):(t&&o.classList.contains(t)&&(o.classList.remove(t),this.trigger("unselectSlide",i)),o.setAttribute(e,!0))}))}updatePage(){this.updateMetrics(),this.slideTo(this.page,{friction:0})}onBeforeTransform(){this.option("infiniteX",this.option("infinite"))&&this.manageInfiniteTrack(),this.manageSlideVisiblity()}manageInfiniteTrack(){const t=this.contentWidth,e=this.viewportWidth;if(!this.option("infiniteX",this.option("infinite"))||this.pages.length<2||t<e)return;const i=this.Panzoom;let s=!1;return i.content.x<-1*(t-e)&&(i.content.x+=t,this.pageIndex=this.pageIndex-this.pages.length,s=!0),i.content.x>e&&(i.content.x-=t,this.pageIndex=this.pageIndex+this.pages.length,s=!0),s&&"pointerdown"===i.state&&i.resetDragPosition(),s}onTouchEnd(t,e){const i=this.option("dragFree");if(!i&&this.pages.length>1&&t.dragOffset.time<350&&Math.abs(t.dragOffset.y)<1&&Math.abs(t.dragOffset.x)>5)this[t.dragOffset.x<0?"slideNext":"slidePrev"]();else if(i){const[,e]=this.getPageFromPosition(-1*t.transform.x);this.setPage(e)}else this.slideToClosest()}slideToClosest(t={}){let[,e]=this.getPageFromPosition(-1*this.Panzoom.content.x);this.slideTo(e,t)}getPageFromPosition(t){const e=this.pages.length;this.option("center")&&(t+=.5*this.viewportWidth);const i=Math.floor(t/this.contentWidth);t-=i*this.contentWidth;let s=this.slides.find((e=>e.left<=t&&e.left+e.width>t));if(s){let t=this.findPageForSlide(s.index);return[t,t+i*e]}return[0,0]}setPage(t,e){let i=0,s=parseInt(t,10)||0;const o=this.page,n=this.pageIndex,a=this.pages.length,r=this.contentWidth,h=this.viewportWidth;if(t=(s%a+a)%a,this.option("infiniteX",this.option("infinite"))&&r>h){const o=Math.floor(s/a)||0,n=r;if(i=this.pages[t].left+o*n,!0===e&&a>2){let t=-1*this.Panzoom.content.x;const e=i-n,o=i+n,r=Math.abs(t-i),h=Math.abs(t-e),l=Math.abs(t-o);l<r&&l<=h?(i=o,s+=a):h<r&&h<l&&(i=e,s-=a)}}else t=s=Math.max(0,Math.min(s,a-1)),i=this.pages.length?this.pages[t].left:0;return this.page=t,this.pageIndex=s,null!==o&&t!==o&&(this.prevPage=o,this.prevPageIndex=n,this.trigger("change",t,o)),i}destroy(){this.state="destroy",this.slides.forEach((t=>{this.removeSlideEl(t)})),this.slides=[],this.Panzoom.destroy(),this.detachPlugins()}}y.version="4.0.31",y.Plugins=p;const v=!("undefined"==typeof window||!window.document||!window.document.createElement);let b=null;const x=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","video","audio","[contenteditable]",'[tabindex]:not([tabindex^="-"]):not([disabled]):not([aria-hidden])'],w=t=>{if(t&&v){null===b&&document.createElement("div").focus({get preventScroll(){return b=!0,!1}});try{if(t.setActive)t.setActive();else if(b)t.focus({preventScroll:!0});else{const e=window.pageXOffset||document.body.scrollTop,i=window.pageYOffset||document.body.scrollLeft;t.focus(),document.body.scrollTo({top:e,left:i,behavior:"auto"})}}catch(t){}}};const $={minSlideCount:2,minScreenHeight:500,autoStart:!0,key:"t",Carousel:{},tpl:'<div class="fancybox__thumb" style="background-image:url(\'{{src}}\')"></div>'};class C{constructor(t){this.fancybox=t,this.$container=null,this.state="init";for(const t of["onPrepare","onClosing","onKeydown"])this[t]=this[t].bind(this);this.events={prepare:this.onPrepare,closing:this.onClosing,keydown:this.onKeydown}}onPrepare(){this.getSlides().length<this.fancybox.option("Thumbs.minSlideCount")?this.state="disabled":!0===this.fancybox.option("Thumbs.autoStart")&&this.fancybox.Carousel.Panzoom.content.height>=this.fancybox.option("Thumbs.minScreenHeight")&&this.build()}onClosing(){this.Carousel&&this.Carousel.Panzoom.detachEvents()}onKeydown(t,e){e===t.option("Thumbs.key")&&this.toggle()}build(){if(this.$container)return;const t=document.createElement("div");t.classList.add("fancybox__thumbs"),this.fancybox.$carousel.parentNode.insertBefore(t,this.fancybox.$carousel.nextSibling),this.Carousel=new y(t,e(!0,{Dots:!1,Navigation:!1,Sync:{friction:0},infinite:!1,center:!0,fill:!0,dragFree:!0,slidesPerPage:1,preload:1},this.fancybox.option("Thumbs.Carousel"),{Sync:{target:this.fancybox.Carousel},slides:this.getSlides()})),this.Carousel.Panzoom.on("wheel",((t,e)=>{e.preventDefault(),this.fancybox[e.deltaY<0?"prev":"next"]()})),this.$container=t,this.state="visible"}getSlides(){const t=[];for(const e of this.fancybox.items){const i=e.thumb;i&&t.push({html:this.fancybox.option("Thumbs.tpl").replace(/\{\{src\}\}/gi,i),customClass:`has-thumb has-${e.type||"image"}`})}return t}toggle(){"visible"===this.state?this.hide():"hidden"===this.state?this.show():this.build()}show(){"hidden"===this.state&&(this.$container.style.display="",this.Carousel.Panzoom.attachEvents(),this.state="visible")}hide(){"visible"===this.state&&(this.Carousel.Panzoom.detachEvents(),this.$container.style.display="none",this.state="hidden")}cleanup(){this.Carousel&&(this.Carousel.destroy(),this.Carousel=null),this.$container&&(this.$container.remove(),this.$container=null),this.state="init"}attach(){this.fancybox.on(this.events)}detach(){this.fancybox.off(this.events),this.cleanup()}}C.defaults=$;const S=(t,e)=>{const i=new URL(t),s=new URLSearchParams(i.search);let o=new URLSearchParams;for(const[t,i]of[...s,...Object.entries(e)])"t"===t?o.set("start",parseInt(i)):o.set(t,i);o=o.toString();let n=t.match(/#t=((.*)?\d+s)/);return n&&(o+=`#t=${n[1]}`),o},E={video:{autoplay:!0,ratio:16/9},youtube:{autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},vimeo:{hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},html5video:{tpl:'<video class="fancybox__html5video" playsinline controls controlsList="nodownload" poster="{{poster}}">\n  <source src="{{src}}" type="{{format}}" />Sorry, your browser doesn\'t support embedded videos.</video>',format:""}};class P{constructor(t){this.fancybox=t;for(const t of["onInit","onReady","onCreateSlide","onRemoveSlide","onSelectSlide","onUnselectSlide","onRefresh","onMessage"])this[t]=this[t].bind(this);this.events={init:this.onInit,ready:this.onReady,"Carousel.createSlide":this.onCreateSlide,"Carousel.removeSlide":this.onRemoveSlide,"Carousel.selectSlide":this.onSelectSlide,"Carousel.unselectSlide":this.onUnselectSlide,"Carousel.refresh":this.onRefresh}}onInit(){for(const t of this.fancybox.items)this.processType(t)}processType(t){if(t.html)return t.src=t.html,t.type="html",void delete t.html;const i=t.src||"";let s=t.type||this.fancybox.options.type,o=null;if(!i||"string"==typeof i){if(o=i.match(/(?:youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(?:watch\?(?:.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(?:.*)|[\w-]{11}|\?listType=(?:.*)&list=(?:.*))(?:.*)/i)){const e=S(i,this.fancybox.option("Html.youtube")),n=encodeURIComponent(o[1]);t.videoId=n,t.src=`https://www.youtube-nocookie.com/embed/${n}?${e}`,t.thumb=t.thumb||`https://i.ytimg.com/vi/${n}/mqdefault.jpg`,t.vendor="youtube",s="video"}else if(o=i.match(/^.+vimeo.com\/(?:\/)?([\d]+)(.*)?/)){const e=S(i,this.fancybox.option("Html.vimeo")),n=encodeURIComponent(o[1]);t.videoId=n,t.src=`https://player.vimeo.com/video/${n}?${e}`,t.vendor="vimeo",s="video"}else(o=i.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:(?:(?:maps\/(?:place\/(?:.*)\/)?\@(.*),(\d+.?\d+?)z))|(?:\?ll=))(.*)?/i))?(t.src=`//maps.google.${o[1]}/?ll=${(o[2]?o[2]+"&z="+Math.floor(o[3])+(o[4]?o[4].replace(/^\//,"&"):""):o[4]+"").replace(/\?/,"&")}&output=${o[4]&&o[4].indexOf("layer=c")>0?"svembed":"embed"}`,s="map"):(o=i.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:maps\/search\/)(.*)/i))&&(t.src=`//maps.google.${o[1]}/maps?q=${o[2].replace("query=","q=").replace("api=1","")}&output=embed`,s="map");s||("#"===i.charAt(0)?s="inline":(o=i.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))?(s="html5video",t.format=t.format||"video/"+("ogv"===o[1]?"ogg":o[1])):i.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?s="image":i.match(/\.(pdf)((\?|#).*)?$/i)&&(s="pdf")),t.type=s||this.fancybox.option("defaultType","image"),"html5video"!==s&&"video"!==s||(t.video=e({},this.fancybox.option("Html.video"),t.video),t._width&&t._height?t.ratio=parseFloat(t._width)/parseFloat(t._height):t.ratio=t.ratio||t.video.ratio||E.video.ratio)}}onReady(){this.fancybox.Carousel.slides.forEach((t=>{t.$el&&(this.setContent(t),t.index===this.fancybox.getSlide().index&&this.playVideo(t))}))}onCreateSlide(t,e,i){"ready"===this.fancybox.state&&this.setContent(i)}loadInlineContent(t){let e;if(t.src instanceof HTMLElement)e=t.src;else if("string"==typeof t.src){const i=t.src.split("#",2),s=2===i.length&&""===i[0]?i[1]:i[0];e=document.getElementById(s)}if(e){if("clone"===t.type||e.$placeHolder){e=e.cloneNode(!0);let i=e.getAttribute("id");i=i?`${i}--clone`:`clone-${this.fancybox.id}-${t.index}`,e.setAttribute("id",i)}else{const t=document.createElement("div");t.classList.add("fancybox-placeholder"),e.parentNode.insertBefore(t,e),e.$placeHolder=t}this.fancybox.setContent(t,e)}else this.fancybox.setError(t,"{{ELEMENT_NOT_FOUND}}")}loadAjaxContent(t){const e=this.fancybox,i=new XMLHttpRequest;e.showLoading(t),i.onreadystatechange=function(){i.readyState===XMLHttpRequest.DONE&&"ready"===e.state&&(e.hideLoading(t),200===i.status?e.setContent(t,i.responseText):e.setError(t,404===i.status?"{{AJAX_NOT_FOUND}}":"{{AJAX_FORBIDDEN}}"))};const s=t.ajax||null;i.open(s?"POST":"GET",t.src),i.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.send(s),t.xhr=i}loadIframeContent(t){const e=this.fancybox,i=document.createElement("iframe");if(i.className="fancybox__iframe",i.setAttribute("id",`fancybox__iframe_${e.id}_${t.index}`),i.setAttribute("allow","autoplay; fullscreen"),i.setAttribute("scrolling","auto"),t.$iframe=i,"iframe"!==t.type||!1===t.preload)return i.setAttribute("src",t.src),this.fancybox.setContent(t,i),void this.resizeIframe(t);e.showLoading(t);const s=document.createElement("div");s.style.visibility="hidden",this.fancybox.setContent(t,s),s.appendChild(i),i.onerror=()=>{e.setError(t,"{{IFRAME_ERROR}}")},i.onload=()=>{e.hideLoading(t);let s=!1;i.isReady||(i.isReady=!0,s=!0),i.src.length&&(i.parentNode.style.visibility="",this.resizeIframe(t),s&&e.revealContent(t))},i.setAttribute("src",t.src)}setAspectRatio(t){const e=t.$content,i=t.ratio;if(!e)return;let s=t._width,o=t._height;if(i||s&&o){Object.assign(e.style,{width:s&&o?"100%":"",height:s&&o?"100%":"",maxWidth:"",maxHeight:""});let t=e.offsetWidth,n=e.offsetHeight;if(s=s||t,o=o||n,s>t||o>n){let e=Math.min(t/s,n/o);s*=e,o*=e}Math.abs(s/o-i)>.01&&(i<s/o?s=o*i:o=s/i),Object.assign(e.style,{width:`${s}px`,height:`${o}px`})}}resizeIframe(t){const e=t.$iframe;if(!e)return;let i=t._width||0,s=t._height||0;i&&s&&(t.autoSize=!1);const o=e.parentNode,n=o&&o.style;if(!1!==t.preload&&!1!==t.autoSize&&n)try{const t=window.getComputedStyle(o),a=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),r=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),h=e.contentWindow.document,l=h.getElementsByTagName("html")[0],c=h.body;n.width="",c.style.overflow="hidden",i=i||l.scrollWidth+a,n.width=`${i}px`,c.style.overflow="",n.flex="0 0 auto",n.height=`${c.scrollHeight}px`,s=l.scrollHeight+r}catch(t){}if(i||s){const t={flex:"0 1 auto"};i&&(t.width=`${i}px`),s&&(t.height=`${s}px`),Object.assign(n,t)}}onRefresh(t,e){e.slides.forEach((t=>{t.$el&&(t.$iframe&&this.resizeIframe(t),t.ratio&&this.setAspectRatio(t))}))}setContent(t){if(t&&!t.isDom){switch(t.type){case"html":this.fancybox.setContent(t,t.src);break;case"html5video":this.fancybox.setContent(t,this.fancybox.option("Html.html5video.tpl").replace(/\{\{src\}\}/gi,t.src).replace("{{format}}",t.format||t.html5video&&t.html5video.format||"").replace("{{poster}}",t.poster||t.thumb||""));break;case"inline":case"clone":this.loadInlineContent(t);break;case"ajax":this.loadAjaxContent(t);break;case"pdf":case"video":case"map":t.preload=!1;case"iframe":this.loadIframeContent(t)}t.ratio&&this.setAspectRatio(t)}}onSelectSlide(t,e,i){"ready"===t.state&&this.playVideo(i)}playVideo(t){if("html5video"===t.type&&t.video.autoplay)try{const e=t.$el.querySelector("video");if(e){const t=e.play();void 0!==t&&t.then((()=>{})).catch((t=>{e.muted=!0,e.play()}))}}catch(t){}if("video"!==t.type||!t.$iframe||!t.$iframe.contentWindow)return;const e=()=>{if("done"===t.state&&t.$iframe&&t.$iframe.contentWindow){let e;if(t.$iframe.isReady)return t.video&&t.video.autoplay&&(e="youtube"==t.vendor?{event:"command",func:"playVideo"}:{method:"play",value:"true"}),void(e&&t.$iframe.contentWindow.postMessage(JSON.stringify(e),"*"));"youtube"===t.vendor&&(e={event:"listening",id:t.$iframe.getAttribute("id")},t.$iframe.contentWindow.postMessage(JSON.stringify(e),"*"))}t.poller=setTimeout(e,250)};e()}onUnselectSlide(t,e,i){if("html5video"===i.type){try{i.$el.querySelector("video").pause()}catch(t){}return}let s=!1;"vimeo"==i.vendor?s={method:"pause",value:"true"}:"youtube"===i.vendor&&(s={event:"command",func:"pauseVideo"}),s&&i.$iframe&&i.$iframe.contentWindow&&i.$iframe.contentWindow.postMessage(JSON.stringify(s),"*"),clearTimeout(i.poller)}onRemoveSlide(t,e,i){i.xhr&&(i.xhr.abort(),i.xhr=null),i.$iframe&&(i.$iframe.onload=i.$iframe.onerror=null,i.$iframe.src="//about:blank",i.$iframe=null);const s=i.$content;"inline"===i.type&&s&&(s.classList.remove("fancybox__content"),"none"!==s.style.display&&(s.style.display="none")),i.$closeButton&&(i.$closeButton.remove(),i.$closeButton=null);const o=s&&s.$placeHolder;o&&(o.parentNode.insertBefore(s,o),o.remove(),s.$placeHolder=null)}onMessage(t){try{let e=JSON.parse(t.data);if("https://player.vimeo.com"===t.origin){if("ready"===e.event)for(let e of document.getElementsByClassName("fancybox__iframe"))e.contentWindow===t.source&&(e.isReady=1)}else"https://www.youtube-nocookie.com"===t.origin&&"onReady"===e.event&&(document.getElementById(e.id).isReady=1)}catch(t){}}attach(){this.fancybox.on(this.events),window.addEventListener("message",this.onMessage,!1)}detach(){this.fancybox.off(this.events),window.removeEventListener("message",this.onMessage,!1)}}P.defaults=E;class T{constructor(t){this.fancybox=t;for(const t of["onReady","onClosing","onDone","onPageChange","onCreateSlide","onRemoveSlide","onImageStatusChange"])this[t]=this[t].bind(this);this.events={ready:this.onReady,closing:this.onClosing,done:this.onDone,"Carousel.change":this.onPageChange,"Carousel.createSlide":this.onCreateSlide,"Carousel.removeSlide":this.onRemoveSlide}}onReady(){this.fancybox.Carousel.slides.forEach((t=>{t.$el&&this.setContent(t)}))}onDone(t,e){this.handleCursor(e)}onClosing(t){clearTimeout(this.clickTimer),this.clickTimer=null,t.Carousel.slides.forEach((t=>{t.$image&&(t.state="destroy"),t.Panzoom&&t.Panzoom.detachEvents()})),"closing"===this.fancybox.state&&this.canZoom(t.getSlide())&&this.zoomOut()}onCreateSlide(t,e,i){"ready"===this.fancybox.state&&this.setContent(i)}onRemoveSlide(t,e,i){i.$image&&(i.$el.classList.remove(t.option("Image.canZoomInClass")),i.$image.remove(),i.$image=null),i.Panzoom&&(i.Panzoom.destroy(),i.Panzoom=null),i.$el&&i.$el.dataset&&delete i.$el.dataset.imageFit}setContent(t){if(t.isDom||t.html||t.type&&"image"!==t.type)return;if(t.$image)return;t.type="image",t.state="loading";const e=document.createElement("div");e.style.visibility="hidden";const i=document.createElement("img");i.addEventListener("load",(e=>{e.stopImmediatePropagation(),this.onImageStatusChange(t)})),i.addEventListener("error",(()=>{this.onImageStatusChange(t)})),i.src=t.src,i.alt="",i.draggable=!1,i.classList.add("fancybox__image"),t.srcset&&i.setAttribute("srcset",t.srcset),t.sizes&&i.setAttribute("sizes",t.sizes),t.$image=i;const s=this.fancybox.option("Image.wrap");if(s){const o=document.createElement("div");o.classList.add("string"==typeof s?s:"fancybox__image-wrap"),o.appendChild(i),e.appendChild(o),t.$wrap=o}else e.appendChild(i);t.$el.dataset.imageFit=this.fancybox.option("Image.fit"),this.fancybox.setContent(t,e),i.complete||i.error?this.onImageStatusChange(t):this.fancybox.showLoading(t)}onImageStatusChange(t){const e=t.$image;e&&"loading"===t.state&&(e.complete&&e.naturalWidth&&e.naturalHeight?(this.fancybox.hideLoading(t),"contain"===this.fancybox.option("Image.fit")&&this.initSlidePanzoom(t),t.$el.addEventListener("wheel",(e=>this.onWheel(t,e)),{passive:!1}),t.$content.addEventListener("click",(e=>this.onClick(t,e)),{passive:!1}),this.revealContent(t)):this.fancybox.setError(t,"{{IMAGE_ERROR}}"))}initSlidePanzoom(t){t.Panzoom||(t.Panzoom=new d(t.$el,e(!0,this.fancybox.option("Image.Panzoom",{}),{viewport:t.$wrap,content:t.$image,width:t._width,height:t._height,wrapInner:!1,textSelection:!0,touch:this.fancybox.option("Image.touch"),panOnlyZoomed:!0,click:!1,wheel:!1})),t.Panzoom.on("startAnimation",(()=>{this.fancybox.trigger("Image.startAnimation",t)})),t.Panzoom.on("endAnimation",(()=>{"zoomIn"===t.state&&this.fancybox.done(t),this.handleCursor(t),this.fancybox.trigger("Image.endAnimation",t)})),t.Panzoom.on("afterUpdate",(()=>{this.handleCursor(t),this.fancybox.trigger("Image.afterUpdate",t)})))}revealContent(t){null===this.fancybox.Carousel.prevPage&&t.index===this.fancybox.options.startIndex&&this.canZoom(t)?this.zoomIn():this.fancybox.revealContent(t)}getZoomInfo(t){const e=t.$thumb.getBoundingClientRect(),i=e.width,s=e.height,o=t.$content.getBoundingClientRect(),n=o.width,a=o.height,r=o.top-e.top,h=o.left-e.left;let l=this.fancybox.option("Image.zoomOpacity");return"auto"===l&&(l=Math.abs(i/s-n/a)>.1),{top:r,left:h,scale:n&&i?i/n:1,opacity:l}}canZoom(t){const e=this.fancybox,i=e.$container;if(window.visualViewport&&1!==window.visualViewport.scale)return!1;if(t.Panzoom&&!t.Panzoom.content.width)return!1;if(!e.option("Image.zoom")||"contain"!==e.option("Image.fit"))return!1;const s=t.$thumb;if(!s||"loading"===t.state)return!1;i.classList.add("fancybox__no-click");const o=s.getBoundingClientRect();let n;if(this.fancybox.option("Image.ignoreCoveredThumbnail")){const t=document.elementFromPoint(o.left+1,o.top+1)===s,e=document.elementFromPoint(o.right-1,o.bottom-1)===s;n=t&&e}else n=document.elementFromPoint(o.left+.5*o.width,o.top+.5*o.height)===s;return i.classList.remove("fancybox__no-click"),n}zoomIn(){const t=this.fancybox,e=t.getSlide(),i=e.Panzoom,{top:s,left:o,scale:n,opacity:a}=this.getZoomInfo(e);t.trigger("reveal",e),i.panTo({x:-1*o,y:-1*s,scale:n,friction:0,ignoreBounds:!0}),e.$content.style.visibility="",e.state="zoomIn",!0===a&&i.on("afterTransform",(t=>{"zoomIn"!==e.state&&"zoomOut"!==e.state||(t.$content.style.opacity=Math.min(1,1-(1-t.content.scale)/(1-n)))})),i.panTo({x:0,y:0,scale:1,friction:this.fancybox.option("Image.zoomFriction")})}zoomOut(){const t=this.fancybox,e=t.getSlide(),i=e.Panzoom;if(!i)return;e.state="zoomOut",t.state="customClosing",e.$caption&&(e.$caption.style.visibility="hidden");let s=this.fancybox.option("Image.zoomFriction");const o=t=>{const{top:o,left:n,scale:a,opacity:r}=this.getZoomInfo(e);t||r||(s*=.82),i.panTo({x:-1*n,y:-1*o,scale:a,friction:s,ignoreBounds:!0}),s*=.98};window.addEventListener("scroll",o),i.once("endAnimation",(()=>{window.removeEventListener("scroll",o),t.destroy()})),o()}handleCursor(t){if("image"!==t.type||!t.$el)return;const e=t.Panzoom,i=this.fancybox.option("Image.click",!1,t),s=this.fancybox.option("Image.touch"),o=t.$el.classList,n=this.fancybox.option("Image.canZoomInClass"),a=this.fancybox.option("Image.canZoomOutClass");if(o.remove(a),o.remove(n),e&&"toggleZoom"===i){e&&1===e.content.scale&&e.option("maxScale")-e.content.scale>.01?o.add(n):e.content.scale>1&&!s&&o.add(a)}else"close"===i&&o.add(a)}onWheel(t,e){if("ready"===this.fancybox.state&&!1!==this.fancybox.trigger("Image.wheel",e))switch(this.fancybox.option("Image.wheel")){case"zoom":"done"===t.state&&t.Panzoom&&t.Panzoom.zoomWithWheel(e);break;case"close":this.fancybox.close();break;case"slide":this.fancybox[e.deltaY<0?"prev":"next"]()}}onClick(t,e){if("ready"!==this.fancybox.state)return;const i=t.Panzoom;if(i&&(i.dragPosition.midPoint||0!==i.dragOffset.x||0!==i.dragOffset.y||1!==i.dragOffset.scale))return;if(this.fancybox.Carousel.Panzoom.lockAxis)return!1;const s=i=>{switch(i){case"toggleZoom":e.stopPropagation(),t.Panzoom&&t.Panzoom.zoomWithClick(e);break;case"close":this.fancybox.close();break;case"next":e.stopPropagation(),this.fancybox.next()}},o=this.fancybox.option("Image.click"),n=this.fancybox.option("Image.doubleClick");n?this.clickTimer?(clearTimeout(this.clickTimer),this.clickTimer=null,s(n)):this.clickTimer=setTimeout((()=>{this.clickTimer=null,s(o)}),300):s(o)}onPageChange(t,e){const i=t.getSlide();e.slides.forEach((t=>{t.Panzoom&&"done"===t.state&&t.index!==i.index&&t.Panzoom.panTo({x:0,y:0,scale:1,friction:.8})}))}attach(){this.fancybox.on(this.events)}detach(){this.fancybox.off(this.events)}}T.defaults={canZoomInClass:"can-zoom_in",canZoomOutClass:"can-zoom_out",zoom:!0,zoomOpacity:"auto",zoomFriction:.82,ignoreCoveredThumbnail:!1,touch:!0,click:"toggleZoom",doubleClick:null,wheel:"zoom",fit:"contain",wrap:!1,Panzoom:{ratio:1}};class L{constructor(t){this.fancybox=t;for(const t of["onChange","onClosing"])this[t]=this[t].bind(this);this.events={initCarousel:this.onChange,"Carousel.change":this.onChange,closing:this.onClosing},this.hasCreatedHistory=!1,this.origHash="",this.timer=null}onChange(t){const e=t.Carousel;this.timer&&clearTimeout(this.timer);const i=null===e.prevPage,s=t.getSlide(),o=new URL(document.URL).hash;let n=!1;if(s.slug)n="#"+s.slug;else{const i=s.$trigger&&s.$trigger.dataset,o=t.option("slug")||i&&i.fancybox;o&&o.length&&"true"!==o&&(n="#"+o+(e.slides.length>1?"-"+(s.index+1):""))}i&&(this.origHash=o!==n?o:""),n&&o!==n&&(this.timer=setTimeout((()=>{try{window.history[i?"pushState":"replaceState"]({},document.title,window.location.pathname+window.location.search+n),i&&(this.hasCreatedHistory=!0)}catch(t){}}),300))}onClosing(){if(this.timer&&clearTimeout(this.timer),!0!==this.hasSilentClose)try{return void window.history.replaceState({},document.title,window.location.pathname+window.location.search+(this.origHash||""))}catch(t){}}attach(t){t.on(this.events)}detach(t){t.off(this.events)}static startFromUrl(){const t=L.Fancybox;if(!t||t.getInstance()||!1===t.defaults.Hash)return;const{hash:e,slug:i,index:s}=L.getParsedURL();if(!i)return;let o=document.querySelector(`[data-slug="${e}"]`);if(o&&o.dispatchEvent(new CustomEvent("click",{bubbles:!0,cancelable:!0})),t.getInstance())return;const n=document.querySelectorAll(`[data-fancybox="${i}"]`);n.length&&(null===s&&1===n.length?o=n[0]:s&&(o=n[s-1]),o&&o.dispatchEvent(new CustomEvent("click",{bubbles:!0,cancelable:!0})))}static onHashChange(){const{slug:t,index:e}=L.getParsedURL(),i=L.Fancybox,s=i&&i.getInstance();if(s&&s.plugins.Hash){if(t){const i=s.Carousel;if(t===s.option("slug"))return i.slideTo(e-1);for(let e of i.slides)if(e.slug&&e.slug===t)return i.slideTo(e.index);const o=s.getSlide(),n=o.$trigger&&o.$trigger.dataset;if(n&&n.fancybox===t)return i.slideTo(e-1)}s.plugins.Hash.hasSilentClose=!0,s.close()}L.startFromUrl()}static create(t){function e(){window.addEventListener("hashchange",L.onHashChange,!1),L.startFromUrl()}L.Fancybox=t,v&&window.requestAnimationFrame((()=>{/complete|interactive|loaded/.test(document.readyState)?e():document.addEventListener("DOMContentLoaded",e)}))}static destroy(){window.removeEventListener("hashchange",L.onHashChange,!1)}static getParsedURL(){const t=window.location.hash.substr(1),e=t.split("-"),i=e.length>1&&/^\+?\d+$/.test(e[e.length-1])&&parseInt(e.pop(-1),10)||null;return{hash:t,slug:e.join("-"),index:i}}}const _={pageXOffset:0,pageYOffset:0,element:()=>document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement,activate(t){_.pageXOffset=window.pageXOffset,_.pageYOffset=window.pageYOffset,t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.msRequestFullscreen&&t.msRequestFullscreen()},deactivate(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}};class A{constructor(t){this.fancybox=t,this.active=!1,this.handleVisibilityChange=this.handleVisibilityChange.bind(this)}isActive(){return this.active}setTimer(){if(!this.active||this.timer)return;const t=this.fancybox.option("slideshow.delay",3e3);this.timer=setTimeout((()=>{this.timer=null,this.fancybox.option("infinite")||this.fancybox.getSlide().index!==this.fancybox.Carousel.slides.length-1?this.fancybox.next():this.fancybox.jumpTo(0,{friction:0})}),t);let e=this.$progress;e||(e=document.createElement("div"),e.classList.add("fancybox__progress"),this.fancybox.$carousel.parentNode.insertBefore(e,this.fancybox.$carousel),this.$progress=e,e.offsetHeight),e.style.transitionDuration=`${t}ms`,e.style.transform="scaleX(1)"}clearTimer(){clearTimeout(this.timer),this.timer=null,this.$progress&&(this.$progress.style.transitionDuration="",this.$progress.style.transform="",this.$progress.offsetHeight)}activate(){this.active||(this.active=!0,this.fancybox.$container.classList.add("has-slideshow"),"done"===this.fancybox.getSlide().state&&this.setTimer(),document.addEventListener("visibilitychange",this.handleVisibilityChange,!1))}handleVisibilityChange(){this.deactivate()}deactivate(){this.active=!1,this.clearTimer(),this.fancybox.$container.classList.remove("has-slideshow"),document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1)}toggle(){this.active?this.deactivate():this.fancybox.Carousel.slides.length>1&&this.activate()}}const z={display:["counter","zoom","slideshow","fullscreen","thumbs","close"],autoEnable:!0,items:{counter:{position:"left",type:"div",class:"fancybox__counter",html:'<span data-fancybox-index=""></span>&nbsp;/&nbsp;<span data-fancybox-count=""></span>',attr:{tabindex:-1}},prev:{type:"button",class:"fancybox__button--prev",label:"PREV",html:'<svg viewBox="0 0 24 24"><path d="M15 4l-8 8 8 8"/></svg>',attr:{"data-fancybox-prev":""}},next:{type:"button",class:"fancybox__button--next",label:"NEXT",html:'<svg viewBox="0 0 24 24"><path d="M8 4l8 8-8 8"/></svg>',attr:{"data-fancybox-next":""}},fullscreen:{type:"button",class:"fancybox__button--fullscreen",label:"TOGGLE_FULLSCREEN",html:'<svg viewBox="0 0 24 24">\n                <g><path d="M3 8 V3h5"></path><path d="M21 8V3h-5"></path><path d="M8 21H3v-5"></path><path d="M16 21h5v-5"></path></g>\n                <g><path d="M7 2v5H2M17 2v5h5M2 17h5v5M22 17h-5v5"/></g>\n            </svg>',click:function(t){t.preventDefault(),_.element()?_.deactivate():_.activate(this.fancybox.$container)}},slideshow:{type:"button",class:"fancybox__button--slideshow",label:"TOGGLE_SLIDESHOW",html:'<svg viewBox="0 0 24 24">\n                <g><path d="M6 4v16"/><path d="M20 12L6 20"/><path d="M20 12L6 4"/></g>\n                <g><path d="M7 4v15M17 4v15"/></g>\n            </svg>',click:function(t){t.preventDefault(),this.Slideshow.toggle()}},zoom:{type:"button",class:"fancybox__button--zoom",label:"TOGGLE_ZOOM",html:'<svg viewBox="0 0 24 24"><circle cx="10" cy="10" r="7"></circle><path d="M16 16 L21 21"></svg>',click:function(t){t.preventDefault();const e=this.fancybox.getSlide().Panzoom;e&&e.toggleZoom()}},download:{type:"link",label:"DOWNLOAD",class:"fancybox__button--download",html:'<svg viewBox="0 0 24 24"><path d="M12 15V3m0 12l-4-4m4 4l4-4M2 17l.62 2.48A2 2 0 004.56 21h14.88a2 2 0 001.94-1.51L22 17"/></svg>',click:function(t){t.stopPropagation()}},thumbs:{type:"button",label:"TOGGLE_THUMBS",class:"fancybox__button--thumbs",html:'<svg viewBox="0 0 24 24"><circle cx="4" cy="4" r="1" /><circle cx="12" cy="4" r="1" transform="rotate(90 12 4)"/><circle cx="20" cy="4" r="1" transform="rotate(90 20 4)"/><circle cx="4" cy="12" r="1" transform="rotate(90 4 12)"/><circle cx="12" cy="12" r="1" transform="rotate(90 12 12)"/><circle cx="20" cy="12" r="1" transform="rotate(90 20 12)"/><circle cx="4" cy="20" r="1" transform="rotate(90 4 20)"/><circle cx="12" cy="20" r="1" transform="rotate(90 12 20)"/><circle cx="20" cy="20" r="1" transform="rotate(90 20 20)"/></svg>',click:function(t){t.stopPropagation();const e=this.fancybox.plugins.Thumbs;e&&e.toggle()}},close:{type:"button",label:"CLOSE",class:"fancybox__button--close",html:'<svg viewBox="0 0 24 24"><path d="M20 20L4 4m16 0L4 20"></path></svg>',attr:{"data-fancybox-close":"",tabindex:0}}}};class k{constructor(t){this.fancybox=t,this.$container=null,this.state="init";for(const t of["onInit","onPrepare","onDone","onKeydown","onClosing","onChange","onSettle","onRefresh"])this[t]=this[t].bind(this);this.events={init:this.onInit,prepare:this.onPrepare,done:this.onDone,keydown:this.onKeydown,closing:this.onClosing,"Carousel.change":this.onChange,"Carousel.settle":this.onSettle,"Carousel.Panzoom.touchStart":()=>this.onRefresh(),"Image.startAnimation":(t,e)=>this.onRefresh(e),"Image.afterUpdate":(t,e)=>this.onRefresh(e)}}onInit(){if(this.fancybox.option("Toolbar.autoEnable")){let t=!1;for(const e of this.fancybox.items)if("image"===e.type){t=!0;break}if(!t)return void(this.state="disabled")}for(const e of this.fancybox.option("Toolbar.display")){if("close"===(t(e)?e.id:e)){this.fancybox.options.closeButton=!1;break}}}onPrepare(){const t=this.fancybox;if("init"===this.state&&(this.build(),this.update(),this.Slideshow=new A(t),!t.Carousel.prevPage&&(t.option("slideshow.autoStart")&&this.Slideshow.activate(),t.option("fullscreen.autoStart")&&!_.element())))try{_.activate(t.$container)}catch(t){}}onFsChange(){window.scrollTo(_.pageXOffset,_.pageYOffset)}onSettle(){const t=this.fancybox,e=this.Slideshow;e&&e.isActive()&&(t.getSlide().index!==t.Carousel.slides.length-1||t.option("infinite")?"done"===t.getSlide().state&&e.setTimer():e.deactivate())}onChange(){this.update(),this.Slideshow&&this.Slideshow.isActive()&&this.Slideshow.clearTimer()}onDone(t,e){const i=this.Slideshow;e.index===t.getSlide().index&&(this.update(),i&&i.isActive()&&(t.option("infinite")||e.index!==t.Carousel.slides.length-1?i.setTimer():i.deactivate()))}onRefresh(t){t&&t.index!==this.fancybox.getSlide().index||(this.update(),!this.Slideshow||!this.Slideshow.isActive()||t&&"done"!==t.state||this.Slideshow.deactivate())}onKeydown(t,e,i){" "===e&&this.Slideshow&&(this.Slideshow.toggle(),i.preventDefault())}onClosing(){this.Slideshow&&this.Slideshow.deactivate(),document.removeEventListener("fullscreenchange",this.onFsChange)}createElement(t){let e;"div"===t.type?e=document.createElement("div"):(e=document.createElement("link"===t.type?"a":"button"),e.classList.add("carousel__button")),e.innerHTML=t.html,e.setAttribute("tabindex",t.tabindex||0),t.class&&e.classList.add(...t.class.split(" "));for(const i in t.attr)e.setAttribute(i,t.attr[i]);t.label&&e.setAttribute("title",this.fancybox.localize(`{{${t.label}}}`)),t.click&&e.addEventListener("click",t.click.bind(this)),"prev"===t.id&&e.setAttribute("data-fancybox-prev",""),"next"===t.id&&e.setAttribute("data-fancybox-next","");const i=e.querySelector("svg");return i&&(i.setAttribute("role","img"),i.setAttribute("tabindex","-1"),i.setAttribute("xmlns","http://www.w3.org/2000/svg")),e}build(){this.cleanup();const i=this.fancybox.option("Toolbar.items"),s=[{position:"left",items:[]},{position:"center",items:[]},{position:"right",items:[]}],o=this.fancybox.plugins.Thumbs;for(const n of this.fancybox.option("Toolbar.display")){let a,r;if(t(n)?(a=n.id,r=e({},i[a],n)):(a=n,r=i[a]),["counter","next","prev","slideshow"].includes(a)&&this.fancybox.items.length<2)continue;if("fullscreen"===a){if(!document.fullscreenEnabled||window.fullScreen)continue;document.addEventListener("fullscreenchange",this.onFsChange)}if("thumbs"===a&&(!o||"disabled"===o.state))continue;if(!r)continue;let h=r.position||"right",l=s.find((t=>t.position===h));l&&l.items.push(r)}const n=document.createElement("div");n.classList.add("fancybox__toolbar");for(const t of s)if(t.items.length){const e=document.createElement("div");e.classList.add("fancybox__toolbar__items"),e.classList.add(`fancybox__toolbar__items--${t.position}`);for(const i of t.items)e.appendChild(this.createElement(i));n.appendChild(e)}this.fancybox.$carousel.parentNode.insertBefore(n,this.fancybox.$carousel),this.$container=n}update(){const t=this.fancybox.getSlide(),e=t.index,i=this.fancybox.items.length,s=t.downloadSrc||("image"!==t.type||t.error?null:t.src);for(const t of this.fancybox.$container.querySelectorAll("a.fancybox__button--download"))s?(t.removeAttribute("disabled"),t.removeAttribute("tabindex"),t.setAttribute("href",s),t.setAttribute("download",s),t.setAttribute("target","_blank")):(t.setAttribute("disabled",""),t.setAttribute("tabindex",-1),t.removeAttribute("href"),t.removeAttribute("download"));const o=t.Panzoom,n=o&&o.option("maxScale")>o.option("baseScale");for(const t of this.fancybox.$container.querySelectorAll(".fancybox__button--zoom"))n?t.removeAttribute("disabled"):t.setAttribute("disabled","");for(const e of this.fancybox.$container.querySelectorAll("[data-fancybox-index]"))e.innerHTML=t.index+1;for(const t of this.fancybox.$container.querySelectorAll("[data-fancybox-count]"))t.innerHTML=i;if(!this.fancybox.option("infinite")){for(const t of this.fancybox.$container.querySelectorAll("[data-fancybox-prev]"))0===e?t.setAttribute("disabled",""):t.removeAttribute("disabled");for(const t of this.fancybox.$container.querySelectorAll("[data-fancybox-next]"))e===i-1?t.setAttribute("disabled",""):t.removeAttribute("disabled")}}cleanup(){this.Slideshow&&this.Slideshow.isActive()&&this.Slideshow.clearTimer(),this.$container&&this.$container.remove(),this.$container=null}attach(){this.fancybox.on(this.events)}detach(){this.fancybox.off(this.events),this.cleanup()}}k.defaults=z;const O={ScrollLock:class{constructor(t){this.fancybox=t,this.viewport=null,this.pendingUpdate=null;for(const t of["onReady","onResize","onTouchstart","onTouchmove"])this[t]=this[t].bind(this)}onReady(){const t=window.visualViewport;t&&(this.viewport=t,this.startY=0,t.addEventListener("resize",this.onResize),this.updateViewport()),window.addEventListener("touchstart",this.onTouchstart,{passive:!1}),window.addEventListener("touchmove",this.onTouchmove,{passive:!1}),window.addEventListener("wheel",this.onWheel,{passive:!1})}onResize(){this.updateViewport()}updateViewport(){const t=this.fancybox,e=this.viewport,i=e.scale||1,s=t.$container;if(!s)return;let o="",n="",a="";i-1>.1&&(o=e.width*i+"px",n=e.height*i+"px",a=`translate3d(${e.offsetLeft}px, ${e.offsetTop}px, 0) scale(${1/i})`),s.style.width=o,s.style.height=n,s.style.transform=a}onTouchstart(t){this.startY=t.touches?t.touches[0].screenY:t.screenY}onTouchmove(t){const e=this.startY,i=window.innerWidth/window.document.documentElement.clientWidth;if(!t.cancelable)return;if(t.touches.length>1||1!==i)return;const o=s(t.composedPath()[0]);if(!o)return void t.preventDefault();const n=window.getComputedStyle(o),a=parseInt(n.getPropertyValue("height"),10),r=t.touches?t.touches[0].screenY:t.screenY,h=e<=r&&0===o.scrollTop,l=e>=r&&o.scrollHeight-o.scrollTop===a;(h||l)&&t.preventDefault()}onWheel(t){s(t.composedPath()[0])||t.preventDefault()}cleanup(){this.pendingUpdate&&(cancelAnimationFrame(this.pendingUpdate),this.pendingUpdate=null);const t=this.viewport;t&&(t.removeEventListener("resize",this.onResize),this.viewport=null),window.removeEventListener("touchstart",this.onTouchstart,!1),window.removeEventListener("touchmove",this.onTouchmove,!1),window.removeEventListener("wheel",this.onWheel,{passive:!1})}attach(){this.fancybox.on("initLayout",this.onReady)}detach(){this.fancybox.off("initLayout",this.onReady),this.cleanup()}},Thumbs:C,Html:P,Toolbar:k,Image:T,Hash:L};const M={startIndex:0,preload:1,infinite:!0,showClass:"fancybox-zoomInUp",hideClass:"fancybox-fadeOut",animated:!0,hideScrollbar:!0,parentEl:null,mainClass:null,autoFocus:!0,trapFocus:!0,placeFocusBack:!0,click:"close",closeButton:"inside",dragToClose:!0,keyboard:{Escape:"close",Delete:"close",Backspace:"close",PageUp:"next",PageDown:"prev",ArrowUp:"next",ArrowDown:"prev",ArrowRight:"next",ArrowLeft:"prev"},template:{closeButton:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" tabindex="-1"><path d="M20 20L4 4m16 0L4 20"/></svg>',spinner:'<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="25 25 50 50" tabindex="-1"><circle cx="50" cy="50" r="20"/></svg>',main:null},l10n:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",MODAL:"You can close this modal content with the ESC key",ERROR:"Something Went Wrong, Please Try Again Later",IMAGE_ERROR:"Image Not Found",ELEMENT_NOT_FOUND:"HTML Element Not Found",AJAX_NOT_FOUND:"Error Loading AJAX : Not Found",AJAX_FORBIDDEN:"Error Loading AJAX : Forbidden",IFRAME_ERROR:"Error Loading Page",TOGGLE_ZOOM:"Toggle zoom level",TOGGLE_THUMBS:"Toggle thumbnails",TOGGLE_SLIDESHOW:"Toggle slideshow",TOGGLE_FULLSCREEN:"Toggle full-screen mode",DOWNLOAD:"Download"}},I=new Map;let F=0;class R extends l{constructor(t,i={}){t=t.map((t=>(t.width&&(t._width=t.width),t.height&&(t._height=t.height),t))),super(e(!0,{},M,i)),this.bindHandlers(),this.state="init",this.setItems(t),this.attachPlugins(R.Plugins),this.trigger("init"),!0===this.option("hideScrollbar")&&this.hideScrollbar(),this.initLayout(),this.initCarousel(),this.attachEvents(),I.set(this.id,this),this.trigger("prepare"),this.state="ready",this.trigger("ready"),this.$container.setAttribute("aria-hidden","false"),this.option("trapFocus")&&this.focus()}option(t,...e){const i=this.getSlide();let s=i?i[t]:void 0;return void 0!==s?("function"==typeof s&&(s=s.call(this,this,...e)),s):super.option(t,...e)}bindHandlers(){for(const t of["onMousedown","onKeydown","onClick","onFocus","onCreateSlide","onSettle","onTouchMove","onTouchEnd","onTransform"])this[t]=this[t].bind(this)}attachEvents(){document.addEventListener("mousedown",this.onMousedown),document.addEventListener("keydown",this.onKeydown,!0),this.option("trapFocus")&&document.addEventListener("focus",this.onFocus,!0),this.$container.addEventListener("click",this.onClick)}detachEvents(){document.removeEventListener("mousedown",this.onMousedown),document.removeEventListener("keydown",this.onKeydown,!0),document.removeEventListener("focus",this.onFocus,!0),this.$container.removeEventListener("click",this.onClick)}initLayout(){this.$root=this.option("parentEl")||document.body;let t=this.option("template.main");t&&(this.$root.insertAdjacentHTML("beforeend",this.localize(t)),this.$container=this.$root.querySelector(".fancybox__container")),this.$container||(this.$container=document.createElement("div"),this.$root.appendChild(this.$container)),this.$container.onscroll=()=>(this.$container.scrollLeft=0,!1),Object.entries({class:"fancybox__container",role:"dialog",tabIndex:"-1","aria-modal":"true","aria-hidden":"true","aria-label":this.localize("{{MODAL}}")}).forEach((t=>this.$container.setAttribute(...t))),this.option("animated")&&this.$container.classList.add("is-animated"),this.$backdrop=this.$container.querySelector(".fancybox__backdrop"),this.$backdrop||(this.$backdrop=document.createElement("div"),this.$backdrop.classList.add("fancybox__backdrop"),this.$container.appendChild(this.$backdrop)),this.$carousel=this.$container.querySelector(".fancybox__carousel"),this.$carousel||(this.$carousel=document.createElement("div"),this.$carousel.classList.add("fancybox__carousel"),this.$container.appendChild(this.$carousel)),this.$container.Fancybox=this,this.id=this.$container.getAttribute("id"),this.id||(this.id=this.options.id||++F,this.$container.setAttribute("id","fancybox-"+this.id));const e=this.option("mainClass");return e&&this.$container.classList.add(...e.split(" ")),document.documentElement.classList.add("with-fancybox"),this.trigger("initLayout"),this}setItems(t){const e=[];for(const i of t){const t=i.$trigger;if(t){const e=t.dataset||{};i.src=e.src||t.getAttribute("href")||i.src,i.type=e.type||i.type,!i.src&&t instanceof HTMLImageElement&&(i.src=t.currentSrc||i.$trigger.src)}let s=i.$thumb;if(!s){let t=i.$trigger&&i.$trigger.origTarget;t&&(s=t instanceof HTMLImageElement?t:t.querySelector("img:not([aria-hidden])")),!s&&i.$trigger&&(s=i.$trigger instanceof HTMLImageElement?i.$trigger:i.$trigger.querySelector("img:not([aria-hidden])"))}i.$thumb=s||null;let o=i.thumb;!o&&s&&(o=s.currentSrc||s.src,!o&&s.dataset&&(o=s.dataset.lazySrc||s.dataset.src)),o||"image"!==i.type||(o=i.src),i.thumb=o||null,i.caption=i.caption||"",e.push(i)}this.items=e}initCarousel(){return this.Carousel=new y(this.$carousel,e(!0,{},{prefix:"",classNames:{viewport:"fancybox__viewport",track:"fancybox__track",slide:"fancybox__slide"},textSelection:!0,preload:this.option("preload"),friction:.88,slides:this.items,initialPage:this.options.startIndex,slidesPerPage:1,infiniteX:this.option("infinite"),infiniteY:!0,l10n:this.option("l10n"),Dots:!1,Navigation:{classNames:{main:"fancybox__nav",button:"carousel__button",next:"is-next",prev:"is-prev"}},Panzoom:{textSelection:!0,panOnlyZoomed:()=>this.Carousel&&this.Carousel.pages&&this.Carousel.pages.length<2&&!this.option("dragToClose"),lockAxis:()=>{if(this.Carousel){let t="x";return this.option("dragToClose")&&(t+="y"),t}}},on:{"*":(t,...e)=>this.trigger(`Carousel.${t}`,...e),init:t=>this.Carousel=t,createSlide:this.onCreateSlide,settle:this.onSettle}},this.option("Carousel"))),this.option("dragToClose")&&this.Carousel.Panzoom.on({touchMove:this.onTouchMove,afterTransform:this.onTransform,touchEnd:this.onTouchEnd}),this.trigger("initCarousel"),this}onCreateSlide(t,e){let i=e.caption||"";if("function"==typeof this.options.caption&&(i=this.options.caption.call(this,this,this.Carousel,e)),"string"==typeof i&&i.length){const t=document.createElement("div"),s=`fancybox__caption_${this.id}_${e.index}`;t.className="fancybox__caption",t.innerHTML=i,t.setAttribute("id",s),e.$caption=e.$el.appendChild(t),e.$el.classList.add("has-caption"),e.$el.setAttribute("aria-labelledby",s)}}onSettle(){this.option("autoFocus")&&this.focus()}onFocus(t){this.isTopmost()&&this.focus(t)}onClick(t){if(t.defaultPrevented)return;let e=t.composedPath()[0];if(e.matches("[data-fancybox-close]"))return t.preventDefault(),void R.close(!1,t);if(e.matches("[data-fancybox-next]"))return t.preventDefault(),void R.next();if(e.matches("[data-fancybox-prev]"))return t.preventDefault(),void R.prev();const i=document.activeElement;if(i){if(i.closest("[contenteditable]"))return;e.matches(x)||i.blur()}if(e.closest(".fancybox__content"))return;if(getSelection().toString().length)return;if(!1===this.trigger("click",t))return;switch(this.option("click")){case"close":this.close();break;case"next":this.next()}}onTouchMove(){const t=this.getSlide().Panzoom;return!t||1===t.content.scale}onTouchEnd(t){const e=t.dragOffset.y;Math.abs(e)>=150||Math.abs(e)>=35&&t.dragOffset.time<350?(this.option("hideClass")&&(this.getSlide().hideClass="fancybox-throwOut"+(t.content.y<0?"Up":"Down")),this.close()):"y"===t.lockAxis&&t.panTo({y:0})}onTransform(t){if(this.$backdrop){const e=Math.abs(t.content.y),i=e<1?"":Math.max(.33,Math.min(1,1-e/t.content.fitHeight*1.5));this.$container.style.setProperty("--fancybox-ts",i?"0s":""),this.$container.style.setProperty("--fancybox-opacity",i)}}onMousedown(){"ready"===this.state&&document.body.classList.add("is-using-mouse")}onKeydown(t){if(!this.isTopmost())return;document.body.classList.remove("is-using-mouse");const e=t.key,i=this.option("keyboard");if(!i||t.ctrlKey||t.altKey||t.shiftKey)return;const s=t.composedPath()[0],o=document.activeElement&&document.activeElement.classList,n=o&&o.contains("carousel__button");if("Escape"!==e&&!n){if(t.target.isContentEditable||-1!==["BUTTON","TEXTAREA","OPTION","INPUT","SELECT","VIDEO"].indexOf(s.nodeName))return}if(!1===this.trigger("keydown",e,t))return;const a=i[e];"function"==typeof this[a]&&this[a]()}getSlide(){const t=this.Carousel;if(!t)return null;const e=null===t.page?t.option("initialPage"):t.page,i=t.pages||[];return i.length&&i[e]?i[e].slides[0]:null}focus(t){if(R.ignoreFocusChange)return;if(["init","closing","customClosing","destroy"].indexOf(this.state)>-1)return;const e=this.$container,i=this.getSlide(),s="done"===i.state?i.$el:null;if(s&&s.contains(document.activeElement))return;t&&t.preventDefault(),R.ignoreFocusChange=!0;const o=Array.from(e.querySelectorAll(x));let n,a=[];for(let t of o){const e=t.offsetParent,i=s&&s.contains(t),o=!this.Carousel.$viewport.contains(t);e&&(i||o)?(a.push(t),void 0!==t.dataset.origTabindex&&(t.tabIndex=t.dataset.origTabindex,t.removeAttribute("data-orig-tabindex")),(t.hasAttribute("autoFocus")||!n&&i&&!t.classList.contains("carousel__button"))&&(n=t)):(t.dataset.origTabindex=void 0===t.dataset.origTabindex?t.getAttribute("tabindex"):t.dataset.origTabindex,t.tabIndex=-1)}t?a.indexOf(t.target)>-1?this.lastFocus=t.target:this.lastFocus===e?w(a[a.length-1]):w(e):this.option("autoFocus")&&n?w(n):a.indexOf(document.activeElement)<0&&w(e),this.lastFocus=document.activeElement,R.ignoreFocusChange=!1}hideScrollbar(){if(!v)return;const t=window.innerWidth-document.documentElement.getBoundingClientRect().width,e="fancybox-style-noscroll";let i=document.getElementById(e);i||t>0&&(i=document.createElement("style"),i.id=e,i.type="text/css",i.innerHTML=`.compensate-for-scrollbar {padding-right: ${t}px;}`,document.getElementsByTagName("head")[0].appendChild(i),document.body.classList.add("compensate-for-scrollbar"))}revealScrollbar(){document.body.classList.remove("compensate-for-scrollbar");const t=document.getElementById("fancybox-style-noscroll");t&&t.remove()}clearContent(t){this.Carousel.trigger("removeSlide",t),t.$content&&(t.$content.remove(),t.$content=null),t.$closeButton&&(t.$closeButton.remove(),t.$closeButton=null),t._className&&t.$el.classList.remove(t._className)}setContent(t,e,i={}){let s;const o=t.$el;if(e instanceof HTMLElement)["img","iframe","video","audio"].indexOf(e.nodeName.toLowerCase())>-1?(s=document.createElement("div"),s.appendChild(e)):s=e;else{const t=document.createRange().createContextualFragment(e);s=document.createElement("div"),s.appendChild(t)}if(t.filter&&!t.error&&(s=s.querySelector(t.filter)),s instanceof Element)return t._className=`has-${i.suffix||t.type||"unknown"}`,o.classList.add(t._className),s.classList.add("fancybox__content"),"none"!==s.style.display&&"none"!==getComputedStyle(s).getPropertyValue("display")||(s.style.display=t.display||this.option("defaultDisplay")||"flex"),t.id&&s.setAttribute("id",t.id),t.$content=s,o.prepend(s),this.manageCloseButton(t),"loading"!==t.state&&this.revealContent(t),s;this.setError(t,"{{ELEMENT_NOT_FOUND}}")}manageCloseButton(t){const e=void 0===t.closeButton?this.option("closeButton"):t.closeButton;if(!e||"top"===e&&this.$closeButton)return;const i=document.createElement("button");i.classList.add("carousel__button","is-close"),i.setAttribute("title",this.options.l10n.CLOSE),i.innerHTML=this.option("template.closeButton"),i.addEventListener("click",(t=>this.close(t))),"inside"===e?(t.$closeButton&&t.$closeButton.remove(),t.$closeButton=t.$content.appendChild(i)):this.$closeButton=this.$container.insertBefore(i,this.$container.firstChild)}revealContent(t){this.trigger("reveal",t),t.$content.style.visibility="";let e=!1;t.error||"loading"===t.state||null!==this.Carousel.prevPage||t.index!==this.options.startIndex||(e=void 0===t.showClass?this.option("showClass"):t.showClass),e?(t.state="animating",this.animateCSS(t.$content,e,(()=>{this.done(t)}))):this.done(t)}animateCSS(t,e,i){if(t&&t.dispatchEvent(new CustomEvent("animationend",{bubbles:!0,cancelable:!0})),!t||!e)return void("function"==typeof i&&i());const s=function(o){o.currentTarget===this&&(t.removeEventListener("animationend",s),i&&i(),t.classList.remove(e))};t.addEventListener("animationend",s),t.classList.add(e)}done(t){t.state="done",this.trigger("done",t);const e=this.getSlide();e&&t.index===e.index&&this.option("autoFocus")&&this.focus()}setError(t,e){t.error=e,this.hideLoading(t),this.clearContent(t);const i=document.createElement("div");i.classList.add("fancybox-error"),i.innerHTML=this.localize(e||"<p>{{ERROR}}</p>"),this.setContent(t,i,{suffix:"error"})}showLoading(t){t.state="loading",t.$el.classList.add("is-loading");let e=t.$el.querySelector(".fancybox__spinner");e||(e=document.createElement("div"),e.classList.add("fancybox__spinner"),e.innerHTML=this.option("template.spinner"),e.addEventListener("click",(()=>{this.Carousel.Panzoom.velocity||this.close()})),t.$el.prepend(e))}hideLoading(t){const e=t.$el&&t.$el.querySelector(".fancybox__spinner");e&&(e.remove(),t.$el.classList.remove("is-loading")),"loading"===t.state&&(this.trigger("load",t),t.state="ready")}next(){const t=this.Carousel;t&&t.pages.length>1&&t.slideNext()}prev(){const t=this.Carousel;t&&t.pages.length>1&&t.slidePrev()}jumpTo(...t){this.Carousel&&this.Carousel.slideTo(...t)}isClosing(){return["closing","customClosing","destroy"].includes(this.state)}isTopmost(){return R.getInstance().id==this.id}close(t){if(t&&t.preventDefault(),this.isClosing())return;if(!1===this.trigger("shouldClose",t))return;if(this.state="closing",this.Carousel.Panzoom.destroy(),this.detachEvents(),this.trigger("closing",t),"destroy"===this.state)return;this.$container.setAttribute("aria-hidden","true"),this.$container.classList.add("is-closing");const e=this.getSlide();if(this.Carousel.slides.forEach((t=>{t.$content&&t.index!==e.index&&this.Carousel.trigger("removeSlide",t)})),"closing"===this.state){const t=void 0===e.hideClass?this.option("hideClass"):e.hideClass;this.animateCSS(e.$content,t,(()=>{this.destroy()}),!0)}}destroy(){if("destroy"===this.state)return;this.state="destroy",this.trigger("destroy");const t=this.option("placeFocusBack")?this.option("triggerTarget",this.getSlide().$trigger):null;this.Carousel.destroy(),this.detachPlugins(),this.Carousel=null,this.options={},this.events={},this.$container.remove(),this.$container=this.$backdrop=this.$carousel=null,t&&w(t),I.delete(this.id);const e=R.getInstance();e?e.focus():(document.documentElement.classList.remove("with-fancybox"),document.body.classList.remove("is-using-mouse"),this.revealScrollbar())}static show(t,e={}){return new R(t,e)}static fromEvent(t,e={}){if(t.defaultPrevented)return;if(t.button&&0!==t.button)return;if(t.ctrlKey||t.metaKey||t.shiftKey)return;const i=t.composedPath()[0];let s,o,n,a=i;if((a.matches("[data-fancybox-trigger]")||(a=a.closest("[data-fancybox-trigger]")))&&(e.triggerTarget=a,s=a&&a.dataset&&a.dataset.fancyboxTrigger),s){const t=document.querySelectorAll(`[data-fancybox="${s}"]`),e=parseInt(a.dataset.fancyboxIndex,10)||0;a=t.length?t[e]:a}Array.from(R.openers.keys()).reverse().some((e=>{n=a||i;let s=!1;try{n instanceof Element&&("string"==typeof e||e instanceof String)&&(s=n.matches(e)||(n=n.closest(e)))}catch(t){}return!!s&&(t.preventDefault(),o=e,!0)}));let r=!1;if(o){e.event=t,e.target=n,n.origTarget=i,r=R.fromOpener(o,e);const s=R.getInstance();s&&"ready"===s.state&&t.detail&&document.body.classList.add("is-using-mouse")}return r}static fromOpener(t,i={}){let s=[],o=i.startIndex||0,n=i.target||null;const a=void 0!==(i=e({},i,R.openers.get(t))).groupAll&&i.groupAll,r=void 0===i.groupAttr?"data-fancybox":i.groupAttr,h=r&&n?n.getAttribute(`${r}`):"";if(!n||h||a){const e=i.root||(n?n.getRootNode():document.body);s=[].slice.call(e.querySelectorAll(t))}if(n&&!a&&(s=h?s.filter((t=>t.getAttribute(`${r}`)===h)):[n]),!s.length)return!1;const l=R.getInstance();return!(l&&s.indexOf(l.options.$trigger)>-1)&&(o=n?s.indexOf(n):o,s=s.map((function(t){const e=["false","0","no","null","undefined"],i=["true","1","yes"],s=Object.assign({},t.dataset),o={};for(let[t,n]of Object.entries(s))if("fancybox"!==t)if("width"===t||"height"===t)o[`_${t}`]=n;else if("string"==typeof n||n instanceof String)if(e.indexOf(n)>-1)o[t]=!1;else if(i.indexOf(o[t])>-1)o[t]=!0;else try{o[t]=JSON.parse(n)}catch(e){o[t]=n}else o[t]=n;return t instanceof Element&&(o.$trigger=t),o})),new R(s,e({},i,{startIndex:o,$trigger:n})))}static bind(t,e={}){function i(){document.body.addEventListener("click",R.fromEvent,!1)}v&&(R.openers.size||(/complete|interactive|loaded/.test(document.readyState)?i():document.addEventListener("DOMContentLoaded",i)),R.openers.set(t,e))}static unbind(t){R.openers.delete(t),R.openers.size||R.destroy()}static destroy(){let t;for(;t=R.getInstance();)t.destroy();R.openers=new Map,document.body.removeEventListener("click",R.fromEvent,!1)}static getInstance(t){if(t)return I.get(t);return Array.from(I.values()).reverse().find((t=>!t.isClosing()&&t))||null}static close(t=!0,e){if(t)for(const t of I.values())t.close(e);else{const t=R.getInstance();t&&t.close(e)}}static next(){const t=R.getInstance();t&&t.next()}static prev(){const t=R.getInstance();t&&t.prev()}}R.version="4.0.31",R.defaults=M,R.openers=new Map,R.Plugins=O,R.bind("[data-fancybox]");for(const[t,e]of Object.entries(R.Plugins||{}))"function"==typeof e.create&&e.create(R);
19
20
21/***/ }),
22
23/***/ "./assets/js/_components.js":
24/*!**********************************!*\
25  !*** ./assets/js/_components.js ***!
26  \**********************************/
27/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
28
29"use strict";
30__webpack_require__.r(__webpack_exports__);
31/* harmony import */ var _components_adminbar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/adminbar */ "./assets/js/components/adminbar.js");
32/* harmony import */ var _components_adminbar__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_components_adminbar__WEBPACK_IMPORTED_MODULE_0__);
33/* harmony import */ var _components_add_to_cart__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/add-to-cart */ "./assets/js/components/add-to-cart.js");
34/* harmony import */ var _components_checkout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/checkout */ "./assets/js/components/checkout.js");
35/* harmony import */ var _components_checkout__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_components_checkout__WEBPACK_IMPORTED_MODULE_2__);
36/* harmony import */ var _components_configurator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/configurator */ "./assets/js/components/configurator.js");
37/* harmony import */ var _components_configurator_solution_scroll__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/configurator-solution-scroll */ "./assets/js/components/configurator-solution-scroll.js");
38/* harmony import */ var _components_configurator_solution_scroll__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_components_configurator_solution_scroll__WEBPACK_IMPORTED_MODULE_4__);
39/* harmony import */ var _components_quick_configurator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/quick-configurator */ "./assets/js/components/quick-configurator.js");
40/* harmony import */ var _components_quick_configurator__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_components_quick_configurator__WEBPACK_IMPORTED_MODULE_5__);
41/* harmony import */ var _components_offer_to_cart__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/offer-to-cart */ "./assets/js/components/offer-to-cart.js");
42/* harmony import */ var _components_offer_to_cart__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_components_offer_to_cart__WEBPACK_IMPORTED_MODULE_6__);
43/* harmony import */ var _components_filter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/filter */ "./assets/js/components/filter.js");
44/* harmony import */ var _components_header_scrolled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/header-scrolled */ "./assets/js/components/header-scrolled.js");
45/* harmony import */ var _components_header_scrolled__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_components_header_scrolled__WEBPACK_IMPORTED_MODULE_8__);
46/* harmony import */ var _components_navigation_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/navigation.js */ "./assets/js/components/navigation.js");
47/* harmony import */ var _components_skip_link_focus_fix__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/skip-link-focus-fix */ "./assets/js/components/skip-link-focus-fix.js");
48/* harmony import */ var _components_skip_link_focus_fix__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_components_skip_link_focus_fix__WEBPACK_IMPORTED_MODULE_10__);
49/* harmony import */ var _components_smooth_scroll_anchor__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/smooth-scroll-anchor */ "./assets/js/components/smooth-scroll-anchor.js");
50/* harmony import */ var _components_smooth_scroll_anchor__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_components_smooth_scroll_anchor__WEBPACK_IMPORTED_MODULE_11__);
51/* harmony import */ var _components_to_top__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/to-top */ "./assets/js/components/to-top.js");
52/* harmony import */ var _components_to_top__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_components_to_top__WEBPACK_IMPORTED_MODULE_12__);
53/* harmony import */ var _components_trustbadge_offset__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/trustbadge-offset */ "./assets/js/components/trustbadge-offset.js");
54/* harmony import */ var _components_trustbadge_offset__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_components_trustbadge_offset__WEBPACK_IMPORTED_MODULE_13__);
55/* harmony import */ var _components_ajax__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/
55ajax */ "./assets/js/components/ajax.js");
56/* harmony import */ var _components_ajax__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_components_ajax__WEBPACK_IMPORTED_MODULE_14__);
57/* harmony import */ var _components_cf7_events__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/cf7-events */ "./assets/js/components/cf7-events.js");
58/* harmony import */ var _components_cf7_events__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_components_cf7_events__WEBPACK_IMPORTED_MODULE_15__);
59/* harmony import */ var _components_order_steps__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/order-steps */ "./assets/js/components/order-steps.js");
60/* harmony import */ var _components_order_steps__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_components_order_steps__WEBPACK_IMPORTED_MODULE_16__);
61/* harmony import */ var _components_woocommerce__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/woocommerce */ "./assets/js/components/woocommerce.js");
62/* harmony import */ var _components_letwork_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/letwork.js */ "./assets/js/components/letwork.js");
63/* harmony import */ var _components_letwork_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_components_letwork_js__WEBPACK_IMPORTED_MODULE_18__);
64/* harmony import */ var _components_accordion__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./components/accordion */ "./assets/js/components/accordion.js");
65/* harmony import */ var _components_accordion__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_components_accordion__WEBPACK_IMPORTED_MODULE_19__);
66/* harmony import */ var _components_modal__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./components/modal */ "./assets/js/components/modal.js");
67/* harmony import */ var _components_modal__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_components_modal__WEBPACK_IMPORTED_MODULE_20__);
68/* harmony import */ var _components_tabs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./components/tabs */ "./assets/js/components/tabs.js");
69/* harmony import */ var _components_tabs__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_components_tabs__WEBPACK_IMPORTED_MODULE_21__);
70/* harmony import */ var _components_toggle__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./components/toggle */ "./assets/js/components/toggle.js");
71/* harmony import */ var _components_toggle__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_components_toggle__WEBPACK_IMPORTED_MODULE_22__);
72/* harmony import */ var _components_sale_products_nav__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./components/sale-products-nav */ "./assets/js/components/sale-products-nav.js");
73/* harmony import */ var _components_sale_products_nav__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_components_sale_products_nav__WEBPACK_IMPORTED_MODULE_23__);
74/* harmony import */ var _components_content_tabs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./components/content-tabs */ "./assets/js/components/content-tabs.js");
75/* harmony import */ var _components_content_tabs__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_components_content_tabs__WEBPACK_IMPORTED_MODULE_24__);
76/* harmony import */ var _components_europe_map__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./components/europe-map */ "./assets/js/components/europe-map.js");
77/* harmony import */ var _components_europe_map__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_components_europe_map__WEBPACK_IMPORTED_MODULE_25__);
78// Custom components:
79 // Toggle Adminbar display
80 // Add to cart button
81 // Checkout barrier-free logic
82 // Configurator script
83 // Scroll to wizard when a roller shutter is added
84 // Quick Configurator script
85 // Offer to cart script
86 // Shop filters
87 // Handle scrolled header behavior
88 // Toggle mobile menu and sub-menus
89 // Mobile helper
90 // Smooth scroll to anchor
91 // To top button
92 // Keep Trusted Shops badge above contact toggle
93 // Custom AJAX scripts
94 // Custom Contact Form 7 scripts
95 // Order steps form
96 // Custom WooCommerce scripts
97 // Custom Allgemeines
98
99
100
101
102
103
104
105
106
107/***/ }),
108
109/***/ "./assets/js/_custom.js":
110/*!******************************!*\
111  !*** ./assets/js/_custom.js ***!
112  \******************************/
113/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
114
115"use strict";
116__webpack_require__.r(__webpack_exports__);
117/* harmony import */ var _vars__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_vars */ "./assets/js/_vars.js");
118/* harmony import */ var _functions_throttle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./functions/throttle */ "./assets/js/functions/throttle.js");
119/* harmony import */ var swiper_bundle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! swiper/bundle */ "./node_modules/swiper/swiper-bundle.esm.js");
120/* harmony import */ var _vendors_jquery_nice_select_min_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./vendors/jquery.nice-select.min.js */ "./assets/js/vendors/jquery.nice-select.min.js");
121/* harmony import */ var _vendors_jquery_nice_select_min_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_vendors_jquery_nice_select_min_js__WEBPACK_IMPORTED_MODULE_3__);
122/* harmony import */ var _fancyapps_ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fancyapps/ui */ "./node_modules/@fancyapps/ui/dist/fancybox.esm.js");
123
124
125// Helper functions:
126
127
128// Plugins (NPM modules and uploaded files):
129 // import Swiper bundle with all modules installed
130 // jQuery Nice Select
131 // Fancybox
132
133jQuery(document).ready(function ($) {
134  "use strict";
135
136  /**
137   * Tweak for mobiles (full height)
138   */
139  const fixFullheight = () => {
140    const vh = window.innerHeight * 0.01;
141    _vars__WEBPACK_IMPORTED_MODULE_0__["default"].htmlEl.style.setProperty('--vh', `${vh}px`);
142  };
143  fixFullheight();
144  const fixHeight = (0,_functions_throttle__WEBPACK_IMPORTED_MODULE_1__.throttle)(fixFullheight);
145  window.addEventListener('resize', fixHeight);
146
147  /**
148   * Nice select
149   */
150  if (!$('body').hasClass('woocommerce-account')) {
151    $('select').niceSelect();
152  }
153  const getBuilderVideoScope = (slide, fallback = document) => {
154    return slide?.el || slide?.$el?.[0] || slide?.$el || fallback;
155  };
156  const decodeBuilderVideoEmbed = (encodedEmbed = '') => {
157    if (!encodedEmbed) {
158      return '';
159    }
160    try {
161      return window.atob(encodedEmbed);
162    } catch (error) {
163      return '';
164    }
165  };
166  const buildBuilderVideoContent = trigger => {
167    const type = trigger.dataset.videoType;
168    const poster = trigger.dataset.videoPoster || '';
169    if (type === 'embed') {
170      const embed = decodeBuilderVideoEmbed(trigger.dataset.videoEmbed || '');
171      if (!embed) {
172        return '';
173      }
174      return `
175				<div class="builder-video-modal-content builder-video-modal-runtime">
176					<div class="builder-video-modal-content__inner">
177						${embed}
178					</div>
179				</div>
180			`;
181    }
182    if (type === 'file') {
183      const file = trigger.dataset.videoFile || '';
184      if (!file) {
185        return '';
186      }
187      const posterAttr = poster ? ` poster="${poster}"` : '';
188      return `
189				<div class="builder-video-modal-content builder-video-modal-runtime">
190					<div class="builder-video-modal-content__inner">
191						<video
192							class="builder-video-modal-content__video"
193							src="${file}"
194							controls
195							autoplay
196							playsinline
197							preload="metadata"${posterAttr}></video>
198					</div>
199				</div>
200			`;
201    }
202    return '';
203  };
204  const startBuilderVideoMedia = scope => {
205    if (!scope || !scope.querySelectorAll) {
206      return;
207    }
208    scope.querySelectorAll('.builder-video-modal-runtime video').forEach(video => {
209      video.currentTime = 0;
210      const playPromise = video.play();
211      if (playPromise && typeof playPromise.catch === 'function') {
212        playPromise.catch(() => {});
213      }
214    });
215  };
216  const stopBuilderVideoMedia = scope => {
217    if (!scope || !scope.querySelectorAll) {
218      return;
219    }
220    scope.querySelectorAll('.builder-video-modal-runtime video').forEach(video => {
221      video.pause();
222      video.currentTime = 0;
223      video.removeAttribute('src');
224      video.load();
225    });
226    scope.querySelectorAll('.builder-video-modal-runtime iframe').forEach(iframe => {
227      if (iframe.getAttribute('src')) {
228        iframe.setAttribute('src', 'about:blank');
229      }
230    });
231  };
232  $(document).on('click', '[data-builder-video-modal]', function (event) {
233    event.preventDefault();
234    const content = buildBuilderVideoContent(event.currentTarget);
235    if (!content) {
236      return;
237    }
238    _fancyapps_ui__WEBPACK_IMPORTED_MODULE_4__.Fancybox.show([{
239      src: content,
240      type: 'html'
241    }], {
242      mainClass: 'builder-video-fancybox',
243      placeFocusBack: true,
244      dragToClose: false,
245      on: {
246        reveal: (fancybox, slide) => {
247          startBuilderVideoMedia(getBuilderVideoScope(slide, fancybox.container));
248        },
249        closing: (fancybox, slide) => {
250          stopBuilderVideoMedia(getBuilderVideoScope(slide, fancybox.container));
251        },
252        destroy: fancybox => {
253          stopBuilderVideoMedia(fancybox?.container || document);
254        }
255      }
256    });
257  });
258
259  /**
260   * Trigger NiceSelect update after Woocommerce Update variations
261   */
262  $(".variations_form").on("woocommerce_variation_has_changed", function () {
263    $('.variations_form select').niceSelect('update');
264  });
265
266  /**
267   * Slider Images
268   */
269  document.querySelectorAll('.swiper-images').forEach(slider => {
270    const swiper = new swiper_bundle__WEBPACK_IMPORTED_MODULE_2__["default"](slider, {
271      loop: true,
272      autoplay: {
273        delay: 2500,
274        disableOnInteraction: false
275      },
276      pagination: {
277        el: slider.querySelector('.swiper-pagination'),
278        clickable: true
279      },
280      navigation: {
281        nextEl: slider.querySelector('.swiper-button-next'),
282        prevEl: slider.querySelector('.swiper-button-prev')
283      }
284    });
285  });
286
287  /**
288   * Brands Slider
289   */
290  document.querySelectorAll('.brands-slider__slider').forEach(slider => {
291    const swiper = new swiper_bundle__WEBPACK_IMPORTED_MODULE_2__["default"](slider, {
292      loop: false,
293      autoplay: {
294        delay: 5000,
295        disableOnInteraction: false
296      },
297      slidesPerView: 8,
298      spaceBetween: 0,
299      autoHeight: false,
300      pagination: {
301        el: slider.closest('.brands-slider__wrap').querySelector('.swiper-pagination'),
302        clickable: true
303      },
304      navigation: {
305        nextEl: slider.closest('.brands-slider__wrap').querySelector('.swiper-button-next'),
306        prevEl: slider.closest('.brands-slider__wrap').querySelector('.swiper-button-prev')
307      },
308      breakpoints: {
309        400: {
310          slidesPerView: 8,
311          spaceBetween: 0
312        },
313        800: {
314          slidesPerView: 8,
315          spaceBetween: 0
316        },
317        1024: {
318          slidesPerView: 8,
319          spaceBetween: 0
320        }
321      }
322    });
323  });
324
325  /**
326   * Testimonials Slider
327   */
328  document.querySelectorAll('.testimonails__slider').forEach(sli
328der => {
329    const swiper = new swiper_bundle__WEBPACK_IMPORTED_MODULE_2__["default"](slider, {
330      loop: false,
331      slidesPerView: 1,
332      spaceBetween: 10,
333      autoHeight: false,
334      pagination: {
335        el: slider.closest('.testimonials__wrap').querySelector('.swiper-pagination'),
336        clickable: true
337      },
338      navigation: {
339        nextEl: slider.closest('.testimonials__wrap').querySelector('.swiper-button-next'),
340        prevEl: slider.closest('.testimonials__wrap').querySelector('.swiper-button-prev')
341      },
342      breakpoints: {
343        768: {
344          slidesPerView: 2
345        },
346        1280: {
347          slidesPerView: 3,
348          spaceBetween: 30
349        }
350      }
351    });
352    swiper.slideTo(1, 0, false);
353    setTimeout(() => {
354      swiper.slideTo(0, 0, false);
355    }, 100);
356  });
357
358  /**
359   * Child terms slider
360   */
361  document.querySelectorAll('.child-terms__slider').forEach(slider => {
362    const swiper = new swiper_bundle__WEBPACK_IMPORTED_MODULE_2__["default"](slider, {
363      slidesPerView: 2,
364      spaceBetween: 10,
365      slidesPerGroup: 2,
366      loop: false,
367      pagination: {
368        el: slider.closest('.child-terms__content').querySelector('.swiper-pagination'),
369        clickable: true
370      },
371      navigation: {
372        nextEl: slider.closest('.child-terms__content').querySelector('.swiper-button-next'),
373        prevEl: slider.closest('.child-terms__content').querySelector('.swiper-button-prev')
374      },
375      breakpoints: {
376        1024: {
377          slidesPerView: 5,
378          spaceBetween: 30,
379          slidesPerGroup: 5
380        }
381      },
382      on: {
383        init: function (swiper) {
384          const totalSlides = swiper.slides.length;
385          if (totalSlides <= 4) {
386            slider.closest('.child-terms__content').querySelector('.swiper-button-next').style.display = 'none';
387            slider.closest('.child-terms__content').querySelector('.swiper-button-prev').style.display = 'none';
388          }
389        }
390      }
391    });
392  });
393  $('.single-product form.cart div.quantity input').on('input', function (event) {
394    const value = event.target.value;
395    if (event.target.value === '0') {
396      event.target.value = 1;
397    } else {
398      event.target.value = value.replace(/[^0-9.]/g, '');
399    }
400  });
401  $('.single-product form.cart div.quantity input').on('blur', function (event) {
402    if (event.target.value == 0) {
403      event.target.value = 1;
404    }
405  });
406
407  // $('.single-product form.cart div.quantity input').on('keyup', function (e) {
408  // 	if (e.currentTarget.value == 0) {
409  // 		e.currentTarget.value = 1;
410  // 	}
411  // });
412
413  // JS Lazyload fix for images on the first screen.
414  // This code should run after all the code is initiated.
415  $(window).trigger('scroll');
416
417  /***************************************************************************** image manipulation Cart ************************************************************/
418  function displaySvgInListItem() {
419    $('.wc-block-components-product-details__custom-svg').each(function () {
420      // Extrahiere den Base64-String aus dem value
421      var svgBase64 = $(this).find('.wc-block-components-product-details__value').text().trim();
422
423      // Erstelle das SVG-Bild
424      if (svgBase64) {
425        var svgImage = '<img src="data:image/svg+xml;base64,' + svgBase64 + '" alt="Custom Image" style="max-width: 100px; height: auto;" />';
426
427        // Füge das Bild hinzu und blende den Text aus
428        $(this).find('.wc-block-components-product-details__value').html('').hide();
429        $(this).append(svgImage);
430      }
431    });
432  }
433  function replaceCartImages() {
434    // Für den Warenkorb
435    $('.wc-block-components-product-details__custom-svg .wc-block-components-product-details__value').each(function () {
436      // Extrahiere den Base64-String aus dem value
437      var svgBase64 = $(this).text().trim();
438
439      // Finde das entsprechende Bild im Warenkorb-Element
440      var cartItem = $(this).closest('.wc-block-cart-items__row');
441      var imgElement = cartItem.find('.wc-block-cart-item__image img');
442
443      // Ersetze das Standardbild durch das SVG-Bild
444      if (svgBase64) {
445        var svgImage = 'data:image/svg+xml;base64,' + svgBase64;
446        imgElement.attr('src', svgImage);
447      }
448    });
449
450    // Für die Kasse
451    $('.wc-block-components-product-details__custom-svg .wc-block-components-product-details__value').each(function () {
452      // Extrahiere den Base64-String aus dem value
453      var svgBase64 = $(this).text().trim();
454
455      // Finde das entsprechende Bild in der Zusammenfassung der Kasse
456      var checkoutItem = $(this).closest('.wc-block-components-order-summary-item');
457      var imgElement = checkoutItem.find('.wc-block-components-order-summary-item__image img');
458
459      // Ersetze das Standardbild durch das SVG-Bild
460      if (svgBase64) {
461        var svgImage = 'data:image/svg+xml;base64,' + svgBase64;
462        imgElement.attr('src', svgImage);
463      }
464    });
465  }
466
467  // Initial ausführen
468  replaceCartImages();
469
470  // Überwachung von DOM-Änderungen mit MutationObserver
471  var targetNode = document.querySelector('.wp-block-woocommerce-cart, .wp-block-woocommerce-checkout');
472  if (targetNode) {
473    var observer = new MutationObserver(function (mutationsList, observer) {
474      replaceCartImages();
475    });
476    observer.observe(targetNode, {
477      childList: true,
478      subtree: true
479    });
480  }
481});
482
483/***/ }),
484
485/***/ "./assets/js/_vars.js":
486/*!****************************!*\
487  !*** ./assets/js/_vars.js ***!
488  \****************************/
489/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
490
491"use strict";
492__webpack_require__.r(__webpack_exports__);
493/* harmony default export */ __webpack_exports__["default"] = ({
494  htmlEl: document.documentElement,
495  bodyEl: document.body,
496  bp: {
497    md: 640,
498    lg: 1281,
499    xl: 1440
500  }
501});
502
503/***/ }),
504
505/***/ "./assets/js/components/accordion.js":
506/*!*******************************************!*\
507  !*** ./assets/js/components/accordion.js ***!
508  \*******************************************/
509/***/ (function() {
510
511jQuery(document).ready(function ($) {
512  "use strict";
513
514  /**
515   * Accordion
516   */
517  $(document).on('click', '.js-accordion-title', function () {
518    const accordion = $(this).closest('.js-accordion'),
519      accordionItem = $(this).closest('.js-accordion-item');
520
521    // Next two lines of code, will close all opened accordion items.
522    // Remove it if you want accordion items open/close independantly
523    if (!accordionItem.hasClass('is-open')) {
524      accordion.find('.js-accordion-item').removeClass('is-open');
525      accordion.find('.js-accordion-content').stop().slideUp();
526    }
527
528    // Handling all the toggles
529    accordionItem.toggleClass('is-open');
530    accordionItem.find('.js-accordion-content').stop().slideToggle();
531  });
532});
533
534/***/ }),
535
536/***/ "./assets/js/components/add-to-cart.js":
537/*!*********************************************!*\
538  !*** ./assets/js/components/add-to-cart.js ***!
539  \*********************************************/
540/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
541
542"use strict";
543__webpack_require__.r(__webpack_exports__);
544/* harmony import */ var _cart_notification__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cart-notification */ "./assets/js/components/cart-notification.js");
545
546jQuery(document).ready(function ($) {
547  "use strict";
548
549  // Resolve the configurator page URL for a given type. The URLs are
550  // provided by PHP (wp_localize_script -> wpApiSettings.configuratorUrls)
551  // already translated to the current WPML language, so we no longer build
552  // German slugs in JS. Falls back to the windows configurator, then to the
553  // German default slug, so the button never produces an empty URL.
554  function resolveConfiguratorUrl(configuratorType) {
555    const map = window.wpApiSettings && wpApiSettings.configuratorUrls || {};
556    return map[configuratorType] || map.windows || '/fenster-konfigurator/';
557  }
558  function pushSimpleAddToCartDataLayer(response) {
559    const items = response && Array.isArray(response.datalayer_items) ? response.datalayer_items : [];
560    if (!items.length) {
561      return;
562    }
563    if (typeof window.letworkPushAddToCart === 'function') {
564      window.letworkPushAddToCart(items);
565      return;
566    }
567    window.dataLayer = window.dataLayer || [];
568    dataLayer.push({
569      ecommerce: null
570    });
571    dataLayer.push({
572      event: 'add_to_cart',
573      ecommerce: {
574        items: items
575      }
576    });
577  }
578
579  // Classic cart table row or WooCommerce block-cart row.
580  function findCartRow(el) {
581    return el.closest('tr.cart_item, tr.woocommerce-cart-form__cart-item, .wc-block-cart-items__row, .wc-block-cart-item');
582  }
583  function getCartItemKeyFromContext(contextEl) {
584    const row = findCartRow(contextEl);
585    if (!row) {
586      return '';
587    }
588    const itemIdEl = row.querySelector('dd.variation-ItemID p, .wc-block-components-product-details__item-id .wc-block-components-product-details__value');
589    if (itemIdEl) {
590      const key = itemIdEl.textContent.trim();
591      if (key) {
592        return key;
593      }
594    }
595    const removeLink = row.querySelector('a[href*="remove_item="], a.remove');
596    if (removeLink && removeLink.href) {
597      try {
598        const key = new URL(removeLink.href).searchParams.get('remove_item');
599        if (key) {
600          return key;
601        }
602      } catch (err) {
603        // Ignore malformed URLs.
604      }
605    }
606    return '';
607  }
608  function removeCartItemByKey(cartItemKey, row) {
609    if (!cartItemKey) {
610      return;
611    }
612    if (row) {
613      row.style.opacity = '0.5';
614      row.style.pointerEvents = 'none';
615    }
616    $.ajax({
617      type: 'POST',
618      url: wpApiSettings.ajaxUrl,
619      data: {
620        action: 'remove_item_from_cart',
621        cart_item_id: cartItemKey
622      },
623      success: function () {
624        location.reload();
625      },
626      error: function () {
627        if (row) {
628          row.style.opacity = '1';
629          row.style.pointerEvents = '';
630        }
631      }
632    });
633  }
634
635  // WooCommerce outputs remove URLs with `&amp;` in href attributes (via
636  // esc_url). Some handlers read getAttribute('href') instead of .href,
637  // which produces `&amp%3B_wpnonce=` and the item is not removed. Always
638  // navigate via the resolved .href property instead.
639  document.addEventListener('click', function (e) {
640    const link = e.target.closest('a[href*="remove_item="]');
641    if (!link) {
642      return;
643    }
644    const rawHref = link.getAttribute('href') || '';
645    if (rawHref.indexOf('&amp;') === -1 && rawHref.indexOf('&amp%3B') === -1) {
646      return;
647    }
648    e.preventDefault();
649    e.stopImmediatePropagation();
650    window.location.assign(link.href);
651  }, true);
652  const tooltipClose = document.querySelector('.tooltip__close');
653  if (tooltipClose) {
654    tooltipClose.onclick = null;
655  }
656  $(document).on('click', '.add-to-cart', function (e) {
657    e.preventDefault();
658    const clickedButton = e.currentTarget;
659    if (clickedButton.hasAttribute('data-configurator')) {
660      const uuid = clickedButton.dataset.uuid;
661      const productId = clickedButton.dataset.productId;
662      const configuratorType = clickedButton.dataset.configuratorType;
663      const configuratorId = clickedButton.dataset.configuratorId;
664      const externalProductId = clickedButton.dataset.externalProductId;
665      const itemNumber = clickedButton.dataset.itemNumber;
666      const material = clickedButton.dataset.material;
667      const productType = clickedButton.dataset.productType;
668      const divisionId = clickedButton.dataset.divisionId;
669      const seriesId = clickedButton.dataset.seriesId;
670      const reloadProductOpeningTab = clickedButton.dataset.reloadProductOpeningTab;
671      const fillingId = clickedButton.dataset.fillingId;
672      const quickDivision = clickedButton.dataset.quick_division;
673      const quickOpening = clickedButton.dataset.quick_opening;
674      const quickWidth = clickedButton.dataset.quick_width;
675      const quickHeight = clickedButton.dataset.quick_height;
676      const quickAddons = clickedButton.dataset.quick_addons;
677      const params = new URLSearchParams();
678      if (uuid) {
679        params.append('uuid', uuid);
680      }
681      if (productId) {
682        params.append('productId', productId);
683      }
684      if (configuratorType) {
685        params.append('configuratorType', configuratorType);
686      }
687      if (configuratorId) {
688        params.append('configuratorId', configuratorId);
689      }
690      if (externalProductId) {
691        params.append('externalProductId', externalProductId);
692      }
693      if (itemNumber) {
694        params.append('itemNumber', itemNumber);
695      }
696      if (material) {
697        params.append('material', material);
698      }
699      if (productType) {
700        params.append('productType', productType);
701      }
702      if (divisionId) {
703        params.append('divisionId', divisionId);
704      }
705      if (seriesId) {
706        params.append('seriesId', seriesId);
707      }
708      if (reloadProductOpeningTab) {
709        params.append('reloadProductOpeningTab', reloadProductOpeningTab);
710      }
711      if (fillingId) {
712        params.append('fillingId', fillingId);
713      }
714      if (quickDivision) {
715        params.append('quick_division', quickDivision);
716      }
717      if (quickOpening) {
718        params.append('quick_opening', quickOpening);
719      }
720      if (quickWidth) {
721        params.append('quick_width', quickWidth);
722      }
723      if (quickHeight) {
724        params.append('quick_height', quickHeight);
725      }
726      if (quickAddons) {
727        params.append('quick_addons', quickAddons);
728      }
729      const url = resolveConfiguratorUrl(configuratorType) + '?' + params.toString();
730      window.location.href = url;
731    } else if (clickedButton.hasAttribute('data-request')) {
732      const requestPage = clickedButton.dataset.requestPage;
733      window.location.href = requestPage;
734    } else {
735      const product_id = parseInt(clickedButton.dataset.product);
736      const quantity = parseInt(clickedButton.dataset.quantity);
737      if (!quantity) {
738        (0,_cart_notification__WEBPACK_IMPORTED_MODULE_0__.showTooltipMessage)('Sie muessen mindestens 1 Artikel auswaehlen');
739        return;
740      }
741      if (!product_id || !quantity) {
742        (0,_cart_notification__WEBPACK_IMPORTED_MODULE_0__.showTooltipMessage)('Etwas ist schief gelaufen. Bitte laden Sie die Seite neu');
743        return;
744      }
745      clickedButton.classList.add('active');
746      clickedButton.innerHTML = svgHtml;
747      $.ajax({
748        type: 'POST',
749        url: wpApiSettings.ajaxUrl,
750        data: {
751          action: 'add_to_cart_simple_product',
752          product_id: product_id,
753          quantity: quantity
754        },
755        success: function (total) {
756          const response = JSON.parse(total);
757          $('.mini-cart__total').text(response[0]);
758          (0,_cart_notification__WEBPACK_IMPORTED_MODULE_0__.showCartSuccess)(response[1]);
759          pushSimpleAddToCartDataLayer(response);
760          setTimeout(() => {
761            clickedButton.classList.remove('active');
762            clickedButton.innerHTML = '';
763            void clickedButton.offsetHeight;
764          }, 3000);
765          clickedButton.classList.add('done');
766          setTimeout(() => {
767            clickedButton.classList.remove('done');
768          }, 5000);
769        },
770        error: function () {
771          alert('Etwas ist schief gelaufen. Bitte laden Sie die Seite neu');
772        }
773      });
774    }
775  });
776  $(document).on('click', '.single-configurator-button', function (e) {
777    e.preventDefault();
778    const product = e.target.closest('.product');
779    if (product.hasAttribute('data-configurator')) {
780      const uuid = product.dataset.uuid;
781      const productId = product.dataset.productId;
782      const configuratorType = product.dataset.configuratorType;
783      const configuratorId = product.dataset.configuratorId;
784      const externalProductId = product.dataset.externalProductId;
785      const itemNumber = product.dataset.itemNumber;
786      const material = product.dataset.material;
787      const productType = product.dataset.productType;
788      const divisionId = product.dataset.divisionId;
789      const seriesId = product.dataset.seriesId;
790      const reloadProductOpeningTab = product.dataset.reloadProductOpeningTab;
791      const fillingId = product.dataset.fillingId;
792      const quickDivision = product.dataset.quick_division;
793      const quickOpening = product.dataset.quick_opening;
794      const quickWidth = product.dataset.quick_width;
795      const quickHeight = product.dataset.quick_height;
796      const quickAddons = product.dataset.quick_addons;
797      const params = new URLSearchParams();
798      if (uuid) {
799        params.append('uuid', uuid);
800      }
801      if (productId) {
802        params.append('productId', productId);
803      }
804      if (configuratorType) {
805        params.append('configuratorType', configuratorType);
806      }
807      if (configuratorId) {
808        params.append('configuratorId', configuratorId);
809      }
810      if (externalProductId) {
811        params.append('externalProductId', externalProductId);
812      }
813      if (itemNumber) {
814        params.append('itemNumber', itemNumber);
815      }
816      if (material) {
817        params.append('material', material);
818      }
819      if (productType) {
820        params.append('productType', productType);
821      }
822      if (divisionId) {
823        params.append('divisionId', divisionId);
824      }
825      if (seriesId) {
826        params.append('seriesId', seriesId);
827      }
828      if (reloadProductOpeningTab) {
829        params.append('reloadProductOpeningTab', reloadProductOpeningTab);
830      }
831      if (fillingId) {
832        params.append('fillingId', fillingId);
833      }
834      if (quickDivision) {
835        params.append('quick_division', quickDivision);
836      }
837      if (quickOpening) {
838        params.append('quick_opening', quickOpening);
839      }
840      if (quickWidth) {
841        params.append('quick_width', quickWidth);
842      }
843      if (quickHeight) {
844        params.append('quick_height', quickHeight);
845      }
846      if (quickAddons) {
847        params.append('quick_addons', quickAddons);
848      }
849      const url = resolveConfiguratorUrl(configuratorType) + '?' + params.toString();
850      window.location.href = url;
851    } else if (product.hasAttribute('data-request')) {
852      const requestPage = product.dataset.requestPage;
853      window.location.href = requestPage;
854    } else {
855      let product_id;
856      if (e.currentTarget.closest('.woocommerce-variation-add-to-cart')) {
857        product_id = parseInt(e.currentTarget.closest('.woocommerce-variation-add-to-cart').querySelector('.variation_id').value);
858      } else {
859        product_id = parseInt(e.target.value);
860      }
861      const quantity = document.querySelector('.quantity input').value;
862      if (product_id && quantity) {
863        e.currentTarget.classList.add('active');
864        $.ajax({
865          type: 'POST',
866          url: wpApiSettings.ajaxUrl,
867          data: {
868            action: 'add_to_cart_simple_product',
869            product_id: product_id,
870            quantity: quantity
871          },
872          success: function (total) {
873            const response = JSON.parse(total);
874            $('.mini-cart__total').text(response[0]);
875            (0,_cart_notification__WEBPACK_IMPORTED_MODULE_0__.showCartSuccess)(response[1]);
876            pushSimpleAddToCartDataLayer(response);
877            e.currentTarget.classList.remove('active');
878            e.currentTarget.classList.add('done');
879            setTimeout(() => {
880              e.currentTarget.classList.remove('done');
881            }, 5000);
882          },
883          error: function () {
884            alert('Etwas ist schief gelaufen. Bitte laden Sie die Seite neu');
885          }
886        });
887      }
888    }
889  });
890  $(document).on('click', '.quantity', function () {
891    let timeout;
892    if (timeout !== undefined) {
893      clearTimeout(timeout);
894    }
895    timeout = setTimeout(function () {
896      $("[name='update_cart']").trigger("click");
897    }, 1000);
898  });
899  $('dd.variation-Reconfigurate').attr('tabindex', 0);
900  $('dd.variation-Copy').attr('tabindex', 0);
901  $('dd.variation-Windowsill').attr('tabindex', 0);
902  $('dd.variation-Roller-Shutter').attr('tabindex', 0);
903  $('dd.variation-Remove').attr('tabindex', 0);
904  $(document).on('click', 'dd.variation-Reconfigurate', function (e) {
905    plus_configurator_template(e, "reconfigurate");
906  });
907  $(document).on('keydown', 'dd.variation-Reconfigurate', function (e) {
908    if (e.key === 'Enter' || e.keyCode === 13) {
909      plus_configurator_template(e, "reconfigurate");
910    }
911  });
912  $(document).on('click', 'dd.variation-Copy', function (e) {
913    copy_configurator_template(e);
914  });
915  $(document).on('keydown', 'dd.variation-Copy', function (e) {
916    if (e.key === 'Enter' || e.keyCode === 13) {
917      copy_configurator_template(e);
918    }
919  });
920  $(document).on('click', 'dd.variation-Windowsill', function (e) {
921    plus_configurator_template(e, "windowsill");
922  });
923  $(document).on('keydown', 'dd.variation-Windowsill', function (e) {
924    if (e.key === 'Enter' || e.keyCode === 13) {
925      plus_configurator_template(e, "windowsill");
926    }
927  });
928  $(document).on('click', 'dd.variation-Roller-Shutter', function (e) {
929    plus_configurator_template(e, "roller-shutter");
930  });
931  $(document).on('keydown', 'dd.variation-Roller-Shutter', function (e) {
932    if (e.key === 'Enter' || e.keyCode === 13) {
933      plus_configurator_template(e, "roller-shutter");
934    }
935  });
936  $(document).on('click', 'dd.variation-Remove', function (e) {
937    remove_cart_item_template(e);
938  });
939  $(document).on('keydown', 'dd.variation-Remove', function (e) {
940    if (e.key === 'Enter' || e.keyCode === 13) {
941      remove_cart_item_template(e);
942    }
943  });
944  $(document).on('click', '.wc-block-components-product-details__remove', function (e) {
945    remove_cart_item_template(e);
946  });
947  $(document).on('keydown', '.wc-block-components-product-details__remove', function (e) {
948    if (e.key === 'Enter' || e.keyCode === 13) {
949      remove_cart_item_template(e);
950    }
951  });
952  function remove_cart_item_template(e) {
953    if (e && typeof e.preventDefault === 'function') {
954      e.preventDefault();
955    }
956    const row = findCartRow(e.target);
957    if (!row) {
958      return;
959    }
960    removeCartItemByKey(getCartItemKeyFromContext(e.target), row);
961  }
962  function copy_configurator_template(e) {
963    const el = e.target.closest('dd.variation-Copy') || e.target;
964    el.classList.add('active');
965    el.style.pointerEvents = 'none';
966    el.style.opacity = '0.5';
967    const variationEl = el.closest('.variation');
968    if (!variationEl) return;
969    const itemIdEl = variationEl.querySelector('dd.variation-ItemID p');
970    if (!itemIdEl) return;
971    const cartItemId = itemIdEl.innerText;
972    if (!cartItemId) return;
973    const form = document.querySelector('input[name="cart_item_id_copy"][value="' + cartItemId + '"]');
974    if (!form) return;
975    const copyForm = form.closest('.copy-cart-form');
976    if (!copyForm) return;
977
978    // Die Kopie in conf_save legt der Konfigurator beim Oeffnen serverseitig
979    // an. Beim Kopieren darf die Vorlage nie geloescht werden.
980    const deleteUuidInput = copyForm.querySelector('input[name="delete_uuid"]');
981    if (deleteUuidInput) deleteUuidInput.remove();
982    copyForm.querySelector('.button-copy').click();
983  }
984  function plus_configurator_template(e, type) {
985    e.target.classList.add('active');
986    const variationEl = e.target.closest('.variation');
987    if (!variationEl) return;
988    const itemIdEl = variationEl.querySelector('dd.variation-ItemID p');
989    if (!itemIdEl) return;
990    const cartItemId = itemIdEl.innerText;
991    if (cartItemId) {
992      const cartItemIdInput = document.querySelector('input[name="cart_item_id_' + type + '"][value="' + cartItemId + '"]');
993      if (cartItemIdInput) {
994        cartItemIdInput.closest('.' + type + '-cart-form').querySelector('.button-' + type + '').click();
995      }
996    }
997  }
998  let cartTimeOut;
999  function updateCartTotals() {
1000    cartTimeOut = setTimeout(() => {
1001      $.ajax({
1002        type: 'POST',
1003        url: wpApiSettings.ajaxUrl,
1004        data: {
1005          action: 'get_cart_total_count'
1006        },
1007        success: function (total) {
1008          const response = JSON.parse(total);
1009          $('.mini-cart__total').text(response[0]);
1010          if (response[0] == 0) {
1011            window.location.replace(wpApiSettings.shopUrl);
1012          }
1013        }
1014      });
1015    }, 2000);
1016  }
1017  document.addEventListener('click', function (e) {
1018    const removeLink = e.target.closest('a.remove');
1019    const minusBtn = e.target.closest('.btn-qty__minus');
1020    const plusBtn = e.target.closest('.btn-qty__plus');
1021    if (removeLink || minusBtn || plusBtn) {
1022      updateCartTotals();
1023    }
1024  });
1025  $(document).on('click', '.wc-block-cart-item__quantity', function () {
1026    clearTimeout(cartTimeOut);
1027    updateCartTotals();
1028  });
1029  $(document).on('click', '.wc-block-components-product-details__reconfigurate', function (e) {
1030    plus_configurator(e, "reconfigurate");
1031  });
1032  $(document).on('click', '.wc-block-components-product-details__copy', function (e) {
1033    copy_configurator_block(e);
1034  });
1035  $(document).on('click', '.wc-block-components-product-details__windowsill', function (e) {
1036    plus_configurator(e, "windowsill");
1037  });
1038  $(document).on('click', '.wc-block-components-product-details__roller-shutter', function (e) {
1039    plus_configurator(e, "roller-shutter");
1040  });
1041  function copy_configurator_block(e) {
1042    const el = e.target.closest('.wc-block-components-product-details__copy') || e.target;
1043    el.classList.add('active');
1044    el.style.pointerEvents = 'none';
1045    el.style.opacity = '0.5';
1046    const detailsEl = el.closest('.wc-block-components-product-details');
1047    if (!detailsEl) return;
1048    const itemIdEl = detailsEl.querySelector('.wc-block-components-product-details__item-id .wc-block-components-product-details__value');
1049    if (!itemIdEl) return;
1050    const cartItemId = itemIdEl.innerText;
1051    if (!cartItemId) return;
1052    const form = document.querySelector('input[name="cart_item_id_copy"][value="' + cartItemId + '"]');
1053    if (!form) return;
1054    const copyForm = form.closest('.copy-cart-form');
1055    if (!copyForm) return;
1056
1057    // Die Kopie in conf_save legt der Konfigurator beim Oeffnen serverseitig
1058    // an. Beim Kopieren darf die Vorlage nie geloescht werden.
1059    const deleteUuidInput = copyForm.querySelector('input[name="delete_uuid"]');
1060    if (deleteUuidInput) deleteUuidInput.remove();
1061    copyForm.querySelector('.button-copy').click();
1062  }
1063  function plus_configurator(e, type) {
1064    e.target.classList.add('active');
1065    const detailsEl = e.target.closest('.wc-block-components-product-details');
1066    if (!detailsEl) return;
1067    const itemIdEl = detailsEl.querySelector('.wc-block-components-product-details__item-id .wc-block-components-product-details__value');
1068    if (!itemIdEl) return;
1069    const cartItemId = itemIdEl.innerText;
1070    if (cartItemId) {
1071      const cartItemIdInput = document.querySelector('input[name="cart_item_id_' + type + '"][value="' + cartItemId + '"]');
1072      if (cartItemIdInput) {
1073        cartItemIdInput.closest('.' + type + '-cart-form').querySelector('.button-' + type + '').click();
1074      }
1075    }
1076  }
1077  const svgPath = '/wp-content/themes/letwork/assets/img/icons/cart-n-check.svg';
1078  var svgHtml;
1079  fetch(svgPath).then(response => response.text()).then(svgData => {
1080    svgHtml = svgData;
1081  }).catch(error => {
1082    console.error('Error fetching SVG:', error);
1083  });
1084});
1085
1086/***/ }),
1087
1088/***/ "./assets/js/components/adminbar.js":
1089/*!******************************************!*\
1090  !*** ./assets/js/components/adminbar.js ***!
1091  \******************************************/
1092/***/ (function() {
1093
1094jQuery(document).ready(function ($) {
1095  "use strict";
1096
1097  /**
1098   * Toggle Adminbar display
1099   */
1100  if ($('body').hasClass('admin-bar')) {
1101    // Remove extra top margin when adminbar is active on front-end
1102    $('html').css({
1103      'cssText': 'margin-top: 0 !important'
1104    });
1105
1106    // Toggle adminbar
1107    $('#wp-admin-bar-site-name').on('click', function (e) {
1108      e.stopPropagation();
1109      $('#wpadminbar').toggleClass('is-expanded');
1110    });
1111  }
1112});
1113
1114/***/ }),
1115
1116/***/ "./assets/js/components/ajax.js":
1117/*!**************************************!*\
1118  !*** ./assets/js/components/ajax.js ***!
1119  \**************************************/
1120/***/ (function() {
1121
1122jQuery(document).ready(function ($) {
1123  "use strict";
1124
1125  // $.ajax({
1126  // 	url: wpApiSettings.ajaxUrl,
1127  // 	type: 'post',
1128  // 	data: {
1129  // 		action: 'it_custom_action',
1130  // 	},
1131  // 	success: function (data) {
1132  // 		console.log(data)
1133  // 	}
1134  // });
1135});
1136
1137/***/ }),
1138
1139/***/ "./assets/js/components/cart-notification.js":
1140/*!***************************************************!*\
1141  !*** ./assets/js/components/cart-notification.js ***!
1142  \***************************************************/
1143/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1144
1145"use strict";
1146__webpack_require__.r(__webpack_exports__);
1147/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1148/* harmony export */   hideTooltip: function() { return /* binding */ hideTooltip; },
1149/* harmony export */   prefetchCartPage: function() { return /* binding */ prefetchCartPage; },
1150/* harmony export */   showCartSuccess: function() { return /* binding */ showCartSuccess; },
1151/* harmony export */   showTooltipMessage: function() { return /* binding */ showTooltipMessage; }
1152/* harmony export */ });
1153let hideTooltipTimeout = null;
1154let cartPrefetchRequest = null;
1155let redirectToCartTimeout = null;
1156function getTooltipElements() {
1157  const tooltip = document.querySelector('.tooltip');
1158  if (!tooltip) {
1159    return {};
1160  }
1161  if (tooltip.dataset.initialized !== 'true') {
1162    const closeButton = tooltip.querySelector('.tooltip__close');
1163    if (closeButton) {
1164      closeButton.addEventListener('click', hideTooltip);
1165    }
1166    tooltip.dataset.initialized = 'true';
1167  }
1168  return {
1169    tooltip,
1170    message: tooltip.querySelector('.tooltip__message'),
1171    progress: tooltip.querySelector('.tooltip__progress')
1172  };
1173}
1174function resetProgress(progress) {
1175  if (!progress) {
1176    return;
1177  }
1178  progress.classList.remove('is-animating');
1179  void progress.offsetWidth;
1180}
1181function getLanguageCode() {
1182  return document.documentElement.lang.split('-')[0];
1183}
1184function getCartSuccessMessage(productName) {
1185  const safeProductName = productName || '';
1186  switch (getLanguageCode()) {
1187    case 'fr':
1188      return `Le produit ${safeProductName} a été ajouté au panier.`;
1189    case 'en':
1190      return `Product ${safeProductName} has been added to the cart.`;
1191    case 'nl':
1192      return `Product ${safeProductName} is aan de winkelwagen toegevoegd.`;
1193    case 'pl':
1194      return `Produkt ${safeProductName} został dodany do koszyka.`;
1195    case 'de':
1196    default:
1197      return `Produkt ${safeProductName} wurde dem Warenkorb hinzugefügt.`;
1198  }
1199}
1200function hideTooltip() {
1201  const {
1202    tooltip,
1203    progress
1204  } = getTooltipElements();
1205  if (!tooltip) {
1206    return;
1207  }
1208  clearTimeout(hideTooltipTimeout);
1209  resetProgress(progress);
1210  tooltip.classList.remove('active', 'tooltip--cart-success');
1211}
1212function showTooltipMessage(messageText, options = {}) {
1213  const {
1214    duration = 10000,
1215    success = false
1216  } = options;
1217  const {
1218    tooltip,
1219    message,
1220    progress
1221  } = getTooltipElements();
1222  if (!tooltip || !message) {
1223    return;
1224  }
1225  clearTimeout(hideTooltipTimeout);
1226  clearTimeout(redirectToCartTimeout);
1227  resetProgress(progress);
1228  message.textContent = messageText;
1229  tooltip.style.setProperty('--tooltip-duration', `${duration}ms`);
1230  tooltip.style.zIndex = '100001';
1231  tooltip.classList.remove('active', 'tooltip--cart-success');
1232  void tooltip.offsetWidth;
1233  tooltip.classList.toggle('tooltip--cart-success', success);
1234  tooltip.classList.add('active');
1235  if (!success && progress) {
1236    progress.classList.add('is-animating');
1237  }
1238  hideTooltipTimeout = window.setTimeout(() => {
1239    hideTooltip();
1240  }, duration);
1241}
1242function prefetchCartPage() {
1243  if (cartPrefetchRequest || !window.wpApiSettings || !wpApiSettings.cartUrl) {
1244    return cartPrefetchRequest;
1245  }
1246  cartPrefetchRequest = fetch(wpApiSettings.cartUrl, {
1247    method: 'GET',
1248    credentials: 'same-origin',
1249    headers: {
1250      'X-Requested-With': 'XMLHttpRequest'
1251    }
1252  }).catch(() => null);
1253  return cartPrefetchRequest;
1254}
1255function showCartSuccess(productName, options = {}) {
1256  const {
1257    duration = 800,
1258    redirectToCart = true
1259  } = options;
1260  prefetchCartPage();
1261  showTooltipMessage(getCartSuccessMessage(productName), {
1262    duration,
1263    success: true
1264  });
1265  if (redirectToCart && window.wpApiSettings && wpApiSettings.cartUrl) {
1266    redirectToCartTimeout = window.setTimeout(() => {
1267      window.location.replace(wpApiSettings.cartUrl);
1268    }, duration);
1269  }
1270}
1271
1272/***/ }),
1273
1274/***/ "./assets/js/components/cf7-events.js":
1275/*!********************************************!*\
1276  !*** ./assets/js/components/cf7-events.js ***!
1277  \********************************************/
1278/***/ (function() {
1279
1280/**
1281 * @link https://contactform7.com/dom-events/
1282 * List of Contact Form 7 Custom DOM Events
1283 wpcf7invalid — Fires when an Ajax form submission has completed successfully, but mail hasn’t been sent because there are fields with invalid input.
1284 wpcf7spam — Fires when an Ajax form submission has completed successfully, but mail hasn’t been sent because a possible spam activity has been detected.
1285 wpcf7mailsent — Fires when an Ajax form submission has completed successfully, and mail has been sent.
1286 wpcf7mailfailed — Fires when an Ajax form submission has completed successfully, but it has failed in sending mail.
1287 wpcf7submit — Fires when an Ajax form submission has completed successfully, regardless of other incidents.
1288
1289 * PROPERTY	DESCRIPTION
1290 detail.contactFormId	The ID of the contact form.
1291 detail.pluginVersion	The version of Contact Form 7 plugin.
1292 detail.contactFormLocale	The locale code of the contact form.
1293 detail.unitTag	The unit-tag of the contact form.
1294 detail.containerPostId	The ID of the post that the contact form is placed in.
1295 */
1296
1297jQuery(document).ready(function ($) {
1298  "use strict";
1299
1300  document.addEventListener('wpcf7submit', function (event) {
1301    "use strict";
1302
1303    console.log('submit');
1304    if ('123' === event.detail.contactFormId) {
1305      console.log("The contact form ID is 123.");
1306      // do something productive
1307    }
1308  }, false);
1309});
1310
1311/***/ }),
1312
1313/***/ "./assets/js/components/checkout.js":
1314/*!******************************************!*\
1315  !*** ./assets/js/components/checkout.js ***!
1316  \******************************************/
1317/***/ (function() {
1318
1319function setupWCPaymentMethods() {
1320  const paymentMethods = document.querySelectorAll('.wc_payment_method');
1321  if (paymentMethods.length === 0) return;
1322  paymentMethods.forEach(method => {
1323    method.setAttribute('tabindex', '0');
1324    method.removeEventListener('click', method._customClick);
1325    method.removeEventListener('keydown', method._customKeydown);
1326    method._customClick = () => {
1327      const radio = method.querySelector('input[type="radio"]');
1328      if (radio) radio.click();
1329    };
1330    method._customKeydown = e => {
1331      if (e.key === 'Enter' || e.key === ' ') {
1332        e.preventDefault();
1333        const radio = method.querySelector('input[type="radio"]');
1334        if (radio) radio.click();
1335      }
1336    };
1337    method.addEventListener('click', method._customClick);
1338    method.addEventListener('keydown', method._customKeydown);
1339  });
1340}
1341document.addEventListener('DOMContentLoaded', function () {
1342  if (document.body.classList.contains('woocommerce-checkout')) {
1343    setupWCPaymentMethods();
1344  }
1345});
1346jQuery(document.body).on('updated_checkout', function () {
1347  setupWCPaymentMethods();
1348});
1349
1350/***/ }),
1351
1352/***/ "./assets/js/components/configurator-solution-scroll.js":
1353/*!**************************************************************!*\
1354  !*** ./assets/js/components/configurator-solution-scroll.js ***!
1355  \**************************************************************/
1356/***/ (function() {
1357
1358/**
1359 * Shop-only: when a roller shutter is added to a window solution, scroll the
1360 * page so the configurator sits below the sticky header.
1361 *
1362 * The Vue wizard uses memory history, so the shop URL does not change.
1363 * We watch the linked-product tab bar instead of touching wizard code.
1364 */
1365(() => {
1366  const app = document.getElementById('app');
1367  if (!app || !document.getElementById('form_add_cart')) {
1368    return;
1369  }
1370  const headerOffset = () => {
1371    const header = document.querySelector('header.site-header, .header, #masthead');
1372    return header ? Math.round(header.getBoundingClientRect().height) : 80;
1373  };
1374  const scrollToConfigurator = () => {
1375    const top = window.scrollY + app.getBoundingClientRect().top - headerOffset() - 8;
1376    const targetY = Math.max(0, Math.round(top));
1377    if (Math.abs(window.scrollY - targetY) < 48) {
1378      return;
1379    }
1380    window.scrollTo({
1381      top: targetY,
1382      behavior: 'smooth'
1383    });
1384  };
1385  const ROLLER_LABEL = /rollladen|volet|rolluik|roller\s*shutter/i;
1386  const BLINDS_PATH = 'M20 19V3H4V19H2V21H22V19H20';
1387  const isRollerShutterTab = tab => {
1388    const path = tab.querySelector('path');
1389    const d = path ? path.getAttribute('d') || '' : '';
1390    if (d.indexOf(BLINDS_PATH) === 0) {
1391      return true;
1392    }
1393    return ROLLER_LABEL.test(tab.textContent || '');
1394  };
1395  const isRollerShutterTabActive = () => {
1396    const tabs = app.querySelectorAll('.linked-product-switch .switch-tab');
1397    for (const tab of tabs) {
1398      if (tab.classList.contains('active') && isRollerShutterTab(tab)) {
1399        return true;
1400      }
1401    }
1402    return false;
1403  };
1404  let wasActive = false;
1405  let scheduled = false;
1406  const check = () => {
1407    scheduled = false;
1408    const isActive = isRollerShutterTabActive();
1409    if (isActive && !wasActive) {
1410      scrollToConfigurator();
1411    }
1412    wasActive = isActive;
1413  };
1414  const schedule = () => {
1415    if (scheduled) {
1416      return;
1417    }
1418    scheduled = true;
1419    window.requestAnimationFrame(check);
1420  };
1421  const observer = new MutationObserver(schedule);
1422  observer.observe(app, {
1423    subtree: true,
1424    childList: true,
1425    attributes: true,
1426    attributeFilter: ['class']
1427  });
1428  schedule();
1429})();
1430
1431/***/ }),
1432
1433/***/ "./assets/js/components/configurator.js":
1434/*!**********************************************!*\
1435  !*** ./assets/js/components/configurator.js ***!
1436  \**********************************************/
1437/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1438
1439"use strict";
1440__webpack_require__.r(__webpack_exports__);
1441/* harmony import */ var _cart_notification__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cart-notification */ "./assets/js/components/cart-notification.js");
1442
1443jQuery(document).ready(function ($) {
1444  'use strict';
1445
1446  const configuratorForm = document.getElementById('form_add_cart');
1447  const configuratorAddToCart = document.querySelector('.configurator__add-to-cart');
1448  const language = document.documentElement.lang.split('-')[0];
1449  let alertText = 'Etwas ist schief gelaufen. Bitte laden Sie die Seite neu';
1450  switch (language) {
1451    case 'de':
1452    case 'default':
1453      break;
1454    case 'fr':
1455      alertText = "Quelque chose s'est mal passé. Veuillez recharger la page";
1456      break;
1457    case 'en':
1458      alertText = 'Something went wrong. Please reload the page';
1459      break;
1460    case 'nl':
1461      alertText = 'Er is iets misgegaan. Laad de pagina opnieuw';
1462      break;
1463    case 'pl':
1464      alertText = 'Coś poszło nie tak. Przeładuj stronę';
1465      break;
1466  }
1467
1468  // The configurator (Vue app) calls form.submit() on its internal
1469  // add-to-cart button. We override the prototype so it routes into
1470  // our AJAX handler instead of doing a real form submission.
1471  HTMLFormElement.prototype.submit = function () {
1472    processFormData();
1473  };
1474  if (configuratorAddToCart) {
1475    configuratorAddToCart.addEventListener('click', e => {
1476      if (!configuratorAddToCart.classList.contains('active')) {
1477        e.preventDefault();
1478        const addToCartBtn = document.getElementById('add_to_cart_button_configurator');
1479        if (addToCartBtn) {
1480          addToCartBtn.click();
1481        }
1482      }
1483    });
1484  }
1485  function parseSolutionField(formData) {
1486    const raw = formData.get('js-solution');
1487    if (!raw) {
1488      return null;
1489    }
1490    try {
1491      const parsed = JSON.parse(raw);
1492      if (parsed && Array.isArray(parsed.positions) && parsed.positions.length >= 2) {
1493        return parsed;
1494      }
1495    } catch (e) {
1496      return null;
1497    }
1498    return null;
1499  }
1500  function buildAjaxPayload(payload) {
1501    const formData = new FormData(configuratorForm);
1502    return {
1503      action: 'add_to_cart_configurator_product',
1504      nonce: wpApiSettings.nonce,
1505      product_id: payload.productId,
1506      item_number: payload.jsItemNumber,
1507      product_main: btoa(payload.mainPrice.toString()),
1508      product_image_svg: formData.get('js-image-svg'),
1509      product_uuid: formData.get('uuid'),
1510      product_additional_products: formData.get('additional-products'),
1511      product_description_text: formData.get('js-description-text'),
1512      product_description_json: formData.get('js-description-json'),
1513      cart_item_attributes: JSON.stringify(payload.uniqueCartItemDataArr),
1514      match_with_item_number: payload.jsMatchWithItemNumber,
1515      quantity: '1'
1516    };
1517  }
1518  function buildSolutionAjaxPayload(solution, replaceCartItemId) {
1519    const data = {
1520      action: 'add_solution_to_cart',
1521      nonce: wpApiSettings.nonce,
1522      solution: JSON.stringify(solution),
1523      quantity: '1'
1524    };
1525    if (replaceCartItemId) {
1526      data.replace_cart_item_id = replaceCartItemId;
1527    }
1528    return data;
1529  }
1530  function toDataLayerItem(item) {
1531    return {
1532      item_id: item.item_id,
1533      item_name: item.item_name,
1534      price: item.price,
1535      quantity: item.quantity || 1,
1536      item_category: '',
1537      google_business_vertical: 'retail',
1538      neox_article_no: item.neox_article_no
1539    };
1540  }
1541  function fireDataLayerItems(items, totalValue) {
1542    const list = Array.isArray(items) ? items : [];
1543    const value = Number(totalValue) || list.reduce((sum, item) => sum + (Number(item.price) || 0), 0);
1544    if (typeof window.letworkPushAddToCart === 'function') {
1545      window.letworkPushAddToCart(list, {
1546        priceIsGross: true
1547      });
1548    } else {
1549      window.dataLayer = window.dataLayer || [];
1550      dataLayer.push({
1551        ecommerce: null
1552      });
1553      dataLayer.push({
1554        event: 'add_to_cart',
1555        ecommerce: {
1556          value,
1557          currency: window.letworkPdl && window.letworkPdl.currency || 'EUR',
1558          items: list.map(toDataLayerItem),
1559          value_net_excl_shipping: value,
1560          aw_feed_country: window.letworkPdl && window.letworkPdl.awFeedCountry || '',
1561          aw_feed_language: window.letworkPdl && window.letworkPdl.awFeedLanguage || ''
1562        }
1563      });
1564    }
1565    window.dataLayer = window.dataLayer || [];
1566    dataLayer.push({
1567      event: 'add_to_cart_configurator',
1568      ecommerce: {
1569        items: list.map(item => ({
1570          item_id: item.item_id,
1571          item_name: item.item_name,
1572          neox_article_no: item.neox_article_no,
1573          price: item.price,
1574          quantity: item.quantity || 1
1575        }))
1576      }
1577    });
1578  }
1579  function fireDataLayer(jsItemNumber, productLabel, mainPrice, productId) {
1580    fireDataLayerItems([{
1581      product_id: productId,
1582      item_id: productId ? 'gla_' + productId : jsItemNumber,
1583      item_name: productLabel,
1584      neox_article_no: jsItemNumber,
1585      price: Number(mainPrice) || 0,
1586      quantity: 1
1587    }], mainPrice);
1588  }
1589  function fireSolutionDataLayer(solution) {
1590    const items = (solution.positions || []).map(position => ({
1591      product_id: 0,
1592      item_id: position.item_number,
1593      item_name: position.type || position.item_number,
1594      neox_article_no: position.item_number,
1595      price: Number(position.price) || 0,
1596      quantity: 1
1597    }));
1598    fireDataLayerItems(items);
1599  }
1600  function handleAddToCartError(xhr) {
1601    if (configuratorAddToCart) {
1602      configuratorAddToCart.classList.remove('active', 'loading');
1603    }
1604    window.dispatchEvent(new CustomEvent('letwork-add-to-cart-error'));
1605    const message = xhr && xhr.responseJSON && xhr.responseJSON.data && xhr.responseJSON.data.message;
1606    alert(message || alertText);
1607  }
1608
1609  // The cart URL comes from PHP (wpApiSettings.cartUrl) already resolved to
1610  // a clean, WPML-translated permalink (see letwork_get_cart_url_clean()).
1611  // No hard-coded per-language slug map is needed anymore; if WC ever still
1612  // hands us a `?page_id=` URL it is a valid (if ugly) fallback.
1613  function resolveCartUrl() {
1614    const fromSettings = window.wpApiSettings && wpApiSettings.cartUrl;
1615    return fromSettings || '/';
1616  }
1617  function handleAddToCartSuccess(total, payload) {
1618    let response;
1619    try {
1620      response = JSON.parse(total);
1621    } catch (e) {
1622      alert(alertText);
1623      return;
1624    }
1625    const productLabel = payload.jsConfigurationDataJSON && payload.jsConfigurationDataJSON.customerConfig && payload.jsConfigurationDataJSON.customerConfig.profiles && payload.jsConfigurationDataJSON.customerConfig.profiles.label || response[1];
1626    $('.mini-cart__total').text(response[0]);
1627
1628    // Show the success tooltip but disable its built-in redirect —
1629    // we drive the redirect ourselves so it cannot be cleared by any
1630    // other showTooltipMessage call on the page.
1631    (0,_cart_notification__WEBPACK_IMPORTED_MODULE_0__.showCartSuccess)(productLabel, {
1632      redirectToCart: false
1633    });
1634    if (payload.solution) {
1635      fireSolutionDataLayer(payload.solution);
1636    } else {
1637      fireDataLayer(payload.jsItemNumber, productLabel, payload.mainPrice, payload.productId);
1638    }
1639    const targetUrl = resolveCartUrl();
1640    window.setTimeout(() => {
1641      window.location.replace(targetUrl);
1642    }, 800);
1643  }
1644  function postAddToCart(ajaxData, payload) {
1645    $.ajax({
1646      type: 'POST',
1647      url: wpApiSettings.ajaxUrl,
1648      data: ajaxData,
1649      success: function (total) {
1650        handleAddToCartSuccess(total, payload);
1651      },
1652      error: handleAddToCartError
1653    });
1654  }
1655  function processFormData() {
1656    if (!configuratorForm) {
1657      return;
1658    }
1659    const formData = new FormData(configuratorForm);
1660    const solution = parseSolutionField(formData);
1661    const cartItemEl = configuratorForm.querySelector('#cart-item-id');
1662    const replaceCartItemId = cartItemEl ? cartItemEl.dataset.cart_item_id : '';
1663    if (configuratorAddToCart) {
1664      configuratorAddToCart.classList.add('active');
1665    }
1666    window.dispatchEvent(new CustomEvent('letwork-add-to-cart-started'));
1667    if (solution) {
1668      postAddToCart(buildSolutionAjaxPayload(solution, replaceCartItemId), {
1669        solution,
1670        jsConfigurationDataJSON: {}
1671      });
1672      return;
1673    }
1674    const jsMatchWithItemNumber = formData.get('js-match-with-item-number') || '';
1675    const params = new URLSearchParams(window.location.search);
1676    const jsConfigurationDataRaw = formData.get('js-configuration-data');
1677    const jsConfigurationDataJSON = jsConfigurationDataRaw ? JSON.parse(jsConfigurationDataRaw) : {};
1678    const configuredItemNumber = jsConfigurationDataJSON && jsConfigurationDataJSON.customerConfig && jsConfigurationDataJSON.customerConfig.ItemNumber;
1679    const jsItemNumber = configuredItemNumber || formData.get('js-item-number');
1680    const productId = jsConfigurationDataJSON && jsConfigurationDataJSON.customerConfig && jsConfigurationDataJSON.customerConfig.profiles && jsConfigurationDataJSON.customerConfig.profiles.shopProductId || params.get('productId');
1681    const mainPrice = jsConfigurationDataJSON && jsConfigurationDataJSON.customerConfig && jsConfigurationDataJSON.customerConfig.mainPrice && jsConfigurationDataJSON.customerConfig.mainPrice.value || formData.get('js-main-price') || 0;
1682    const cartItemDataArr = [];
1683    const dataHolder = document.querySelector('.v-card.v-sheet');
1684    if (dataHolder) {
1685      dataHolder.querySelectorAll('div:not(.v-card__actions)').forEach(item => {
1686        if (item.innerText && item !== dataHolder.firstElementChild) {
1687          if (item.closest('.hover-effect')) {
1688            cartItemDataArr.push(item.innerText.replace(/\n/g, '<br>'));
1689          }
1690        }
1691      });
1692    }
1693    const uniqueCartItemDataArr = [...new Set(cartItemDataArr)];
1694    const payload = {
1695      productId,
1696      jsItemNumber,
1697      mainPrice,
1698      uniqueCartItemDataArr,
1699      jsMatchWithItemNumber,
1700      jsConfigurationDataJSON
1701    };
1702    const ajaxData = buildAjaxPayload(payload);
1703    if (replaceCartItemId) {
1704      $.ajax({
1705        type: 'POST',
1706        url: wpApiSettings.ajaxUrl,
1707        data: {
1708          action: 'remove_item_from_cart',
1709          cart_item_id: replaceCartItemId
1710        },
1711        success: function () {
1712          postAddToCart(ajaxData, payload);
1713        },
1714        error: handleAddToCartError
1715      });
1716      return;
1717    }
1718    postAddToCart(ajaxData, payload);
1719  }
1720  if (configuratorForm) {
1721    configuratorForm.addEventListener('click', e => {
1722      if (e.target.closest('.v-card')) {
1723        configuratorAddToCart.classList.add('loading');
1724      }
1725    });
1726  }
1727  document.addEventListener('click', function (event) {
1728    if (event.target.closest('.card-letwork-modal')) {
1729      configuratorAddToCart.classList.remove('active', 'loading');
1730    }
1731  });
1732});
1733
1734/***/ }),
1735
1736/***/ "./assets/js/components/content-tabs.js":
1737/*!**********************************************!*\
1738  !*** ./assets/js/components/content-tabs.js ***!
1739  \**********************************************/
1740/***/ (function() {
1741
1742/**
1743 * Content tabs: scroll-spy TOC + horizontal overflow fades (desktop).
1744 */
1745(() => {
1746  const root = document.querySelector('.content_tabs');
1747  if (!root) {
1748    return;
1749  }
1750  const nav = root.querySelector('.content_tabs__nav');
1751  const track = root.querySelector('.content_tabs__nav-track');
1752  const links = root.querySelectorAll('a.content_tabs__nav-link');
1753  if (!nav || !track || !links.length) {
1754    return;
1755  }
1756  const sections = [];
1757  links.forEach(link => {
1758    const href = link.getAttribute('href');
1759    if (!href || href.charAt(0) !== '#') {
1760      return;
1761    }
1762    const target = document.getElementById(href.slice(1));
1763    if (target) {
1764      sections.push({
1765        el: target,
1766        link
1767      });
1768    }
1769  });
1770  let scrollingProgrammatically = false;
1771  let scrollRaf = 0;
1772
1773  /**
1774   * Space occupied by sticky header + sticky TOC bar.
1775   * Must keep section headings below the sticky nav.
1776   */
1777  const scrollOffset = () => {
1778    const header = document.querySelector('.header, #masthead, header.site-header');
1779    const headerH = header ? header.getBoundingClientRect().height : 72;
1780    const navH = nav.getBoundingClientRect().height || 0;
1781    return Math.round(headerH + navH + 16);
1782  };
1783  const easeInOutCubic = t => t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
1784
1785  /**
1786   * Reliable smooth page scroll (native behavior:smooth is often cancelled
1787   * or feels instant when competing handlers / sticky layout shift).
1788   */
1789  const smoothScrollTo = (targetY, duration = 700) => {
1790    const startY = window.pageYOffset;
1791    const delta = targetY - startY;
1792    if (Math.abs(delta) < 2) {
1793      window.scrollTo(0, targetY);
1794      return;
1795    }
1796    if (scrollRaf) {
1797      cancelAnimationFrame(scrollRaf);
1798    }
1799    const start = performance.now();
1800    scrollingProgrammatically = true;
1801    const step = now => {
1802      const t = Math.min(1, (now - start) / duration);
1803      window.scrollTo(0, startY + delta * easeInOutCubic(t));
1804      if (t < 1) {
1805        scrollRaf = requestAnimationFrame(step);
1806      } else {
1807        scrollRaf = 0;
1808        // Allow scroll-spy again after layout settles.
1809        window.setTimeout(() => {
1810          scrollingProgrammatically = false;
1811        }, 80);
1812      }
1813    };
1814    scrollRaf = requestAnimationFrame(step);
1815  };
1816  const scrollLinkIntoTrack = link => {
1817    const linkLeft = link.offsetLeft;
1818    const linkRight = linkLeft + link.offsetWidth;
1819    const viewLeft = track.scrollLeft;
1820    const viewRight = viewLeft + track.clientWidth;
1821    const pad = 16;
1822    if (linkLeft < viewLeft + pad) {
1823      track.scrollTo({
1824        left: Math.max(0, linkLeft - pad),
1825        behavior: 'smooth'
1826      });
1827    } else if (linkRight > viewRight - pad) {
1828      track.scrollTo({
1829        left: linkRight - track.clientWidth + pad,
1830        behavior: 'smooth'
1831      });
1832    }
1833  };
1834  const setActive = activeLink => {
1835    links.forEach(l => l.classList.remove('is-active'));
1836    if (!activeLink) {
1837      return;
1838    }
1839    activeLink.classList.add('is-active');
1840    scrollLinkIntoTrack(activeLink);
1841  };
1842  const updateOverflowFades = () => {
1843    const maxScroll = track.scrollWidth - track.clientWidth;
1844    if (maxScroll <= 2) {
1845      nav.classList.remove('has-overflow-start', 'has-overflow-end');
1846      return;
1847    }
1848    const left = track.scrollLeft;
1849    nav.classList.toggle('has-overflow-start', left > 2);
1850    nav.classList.toggle('has-overflow-end', left < maxScroll - 2);
1851  };
1852  track.addEventListener('scroll', updateOverflowFades, {
1853    passive: true
1854  });
1855  window.addEventListener('resize', updateOverflowFades, {
1856    passive: true
1857  });
1858  updateOverflowFades();
1859  if (sections.length && 'IntersectionObserver' in window) {
1860    const observer = new IntersectionObserver(entries => {
1861      if (scrollingProgrammatically) {
1862        return;
1863      }
1864      const visible = entries.filter(e => e.isIntersecting);
1865      if (!visible.length) {
1866        return;
1867      }
1868      const topMost = visible.reduce((a, b) => a.boundingClientRect.top < b.boundingClientRect.top ? a : b);
1869      const match = sections.find(s => s.el === topMost.target);
1870      if (match) {
1871        setActive(match.link);
1872      }
1873    }, {
1874      rootMargin: '-140px 0px -55% 0px',
1875      threshold: 0
1876    });
1877    sections.forEach(s => observer.observe(s.el));
1878  }
1879  links.forEach(link => {
1880    link.addEventListener('click', e => {
1881      const href = link.getAttribute('href');
1882      if (!href || href.charAt(0) !== '#') {
1883        return;
1884      }
1885      const target = document.getElementById(href.slice(1));
1886      if (!target) {
1887        return;
1888      }
1889      // Prevent global smooth-scroll-anchor (no sticky offset) from fighting us.
1890      e.preventDefault();
1891      e.stopPropagation();
1892      if (typeof e.stopImmediatePropagation === 'function') {
1893        e.stopImmediatePropagation();
1894      }
1895      const top = Math.max(0, target.getBoundingClientRect().top + window.pageYOffset - scrollOffset());
1896      setActive(link);
1897      smoothScrollTo(top, 700);
1898      if (history.replaceState) {
1899        history.replaceState(null, '', href);
1900      }
1901    });
1902  });
1903})();
1904
1905/***/ }),
1906
1907/***/ "./assets/js/components/europe-map.js":
1908/*!********************************************!*\
1909  !*** ./assets/js/components/europe-map.js ***!
1910  \********************************************/
1911/***/ (function() {
1912
1913jQuery(document).ready(function ($) {
1914  'use strict';
1915
1916  $('.europe-map').each(function () {
1917    const $section = $(this);
1918    const $canvas = $section.find('.europe-map__canvas');
1919    const $items = $section.find('.europe-map__item[data-code]');
1920    const $markers = $section.find('.europe-map__marker[data-code]');
1921    if (!$canvas.length || !$items.length && !$markers.length) {
1922      return;
1923    }
1924    const clearHot = () => {
1925      $canvas.removeClass('is-hovering');
1926      $canvas.find('.is-hot').removeClass('is-hot');
1927      $items.removeClass('is-hot');
1928      $markers.removeClass('is-hot');
1929    };
1930    const setHot = code => {
1931      if (!code) {
1932        clearHot();
1933        return;
1934      }
1935      $canvas.addClass('is-hovering');
1936      $canvas.find('.is-hot').removeClass('is-hot');
1937      $items.removeClass('is-hot');
1938      $markers.removeClass('is-hot');
1939      $canvas.find('[data-code="' + code + '"]').addClass('is-hot');
1940      $items.filter('[data-code="' + code + '"]').addClass('is-hot');
1941      $markers.filter('[data-code="' + code + '"]').addClass('is-hot');
1942    };
1943    $items.add($markers).on('mouseenter focusin', function () {
1944      setHot($(this).attr('data-code'));
1945    });
1946    $items.add($markers).on('mouseleave focusout', function () {
1947      clearHot();
1948    });
1949    $canvas.on('mouseenter', '[data-code].europe-map__country, [data-code].europe-map__pin', function () {
1950      setHot($(this).attr('data-code'));
1951    });
1952    $canvas.on('mouseleave', '[data-code].europe-map__country, [data-code].europe-map__pin', function () {
1953      clearHot();
1954    });
1955  });
1956});
1957
1958/***/ }),
1959
1960/***/ "./assets/js/components/filter.js":
1961/*!****************************************!*\
1962  !*** ./assets/js/components/filter.js ***!
1963  \****************************************/
1964/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1965
1966"use strict";
1967__webpack_require__.r(__webpack_exports__);
1968/* harmony import */ var _vars__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_vars */ "./assets/js/_vars.js");
1969
1970jQuery(document).ready(function ($) {
1971  "use strict";
1972
1973  $('#filter-form').on('submit', function (e) {
1974    e.preventDefault();
1975    let category = $("#filter-form").data("category-id");
1976    let tax = $("#filter-form").data("tax");
1977    let isSelected = $('#filter-form').serializeArray().some(item => item.value);
1978    if (isSelected) {
1979      setCookie(`savedFormData_${tax}_${category}`, $('#filter-form').serialize(), 1);
1980    } else {
1981      if (getCookie(`savedFormData_${tax}_${category}`)) {
1982        deleteCookie(`savedFormData_${tax}_${category}`);
1983      }
1984    }
1985    load_filtered_products(1, category, tax);
1986  });
1987  $('#woo-sort').on('change', function () {
1988    const category = $("#filter-form").data("category-id");
1989    const tax = $("#filter-form").data("tax");
1990    const isSelected = $('#filter-form').serializeArray().some(item => item.value);
1991    if (isSelected) {
1992      setCookie(`savedFormData_${tax}_${category}`, $('#filter-form').serialize(), 1);
1993    } else {
1994      if (getCookie(`savedFormData_${tax}_${category}`)) {
1995        deleteCookie(`savedFormData_${tax}_${category}`);
1996      }
1997    }
1998    load_filtered_products(1, category, tax);
1999  });
2000  function load_filtered_products(paged = 1, category = 0, tax = '') {
2001    const metaKey = $('#woo-sort option:selected').attr('data-metakey');
2002    const order = $('#woo-sort option:selected').attr('data-order');
2003    var formData = $('#filter-form').serialize();
2004    $.ajax({
2005      type: 'POST',
2006      url: wpApiSettings.ajaxUrl,
2007      data: {
2008        action: 'filter_products',
2009        form_data: formData,
2010        paged: paged,
2011        category: category,
2012        tax: tax,
2013        metakey: metaKey,
2014        order: order
2015      },
2016      beforeSend: function () {
2017        $('.archive-wrapper').addClass('is-loading');
2018      },
2019      success: function (response) {
2020        $('.archive-wrapper .row').html(response.html);
2021        $('.pagination-ajax').html(response.pagination);
2022        updateUrl(paged, 'page-update');
2023        const headerH = $(window).width() > _vars__WEBPACK_IMPORTED_MODULE_0__["default"].bp.xl ? 125 : 85;
2024        // $('html, body').animate({
2025        // 	scrollTop: $('.archive-wrapper').offset().top - headerH
2026        // }, 500);
2027        $(document).trigger('yith_wcwl_init');
2028        $('.archive-wrapper').removeClass('is-loading');
2029      }
2030    });
2031  }
2032  $('.filter__expand').on('click', function () {
2033    $(this).toggleClass('active');
2034    $('.filter__content').toggleClass('active');
2035  });
2036  $(document).on('click', '.pagination-ajax a', function (e) {
2037    e.preventDefault();
2038    let url = new URL($(this).attr('href'));
2039    let paged = url.pathname.match(/\/page\/(\d+)/)[1];
2040    let category = $("#filter-form").data("category-id");
2041    let tax = $("#filter-form").data("tax");
2042    const headerH = $(window).width() > _vars__WEBPACK_IMPORTED_MODULE_0__["default"].bp.xl ? 125 : 85;
2043    $('html, body').animate({
2044      scrollTop: $('.archive-wrapper').offset().top - headerH
2045    }, 500);
2046    load_filtered_products(paged, category, tax);
2047    if (paged === 1 || paged === '1') {
2048      $('.info-content').html(localStorage.getItem('infoContent'));
2049    } else {
2050      const infoContent = $('.info-content').html();
2051      if (infoContent) {
2052        localStorage.setItem('infoContent', infoContent);
2053        $('.info-content').empty();
2054      }
2055    }
2056    updateUrl(paged, 'page-transition');
2057  });
2058  function updateUrl(page, type = 'page-update') {
2059    let baseUrl = window.location.href.split('/page/')[0];
2060    if (baseUrl.endsWith('/')) {
2061      baseUrl = baseUrl.slice(0, -1);
2062    }
2063    const newUrl = page && page !== 1 && page !== "1" ? `${baseUrl}/page/${page}/` : baseUrl + '/';
2064    if (type === 'page-transition') {
2065      window.history.pushState({
2066        path: newUrl,
2067        type: 'page-transition'
2068      }, '', newUrl);
2069    } else {
2070      window.history.replaceState({
2071        path: newUrl,
2072        type: 'page-update'
2073      }, '', newUrl);
2074    }
2075  }
2076  window.addEventListener('popstate', function (event) {
2077    let state = event.state;
2078    let paged = window.location.href.match(/\/page\/(\d+)/);
2079    if (paged && paged[1]) {
2080      let category = $("#filter-form").data("category-id");
2081      let tax = $("#filter-form").data("tax");
2082      load_filtered_products(paged[1], category, tax);
2083    } else {
2084      let category = $("#filter-form").data("category-id");
2085      let tax = $("#filter-form").data("tax");
2086      load_filtered_products(1, category, tax);
2087    }
2088  });
2089  $('.reset-product-filter').on('click', function (e) {
2090    e.preventDefault();
2091    $('.woo-sort').find('option:first').prop('selected', true);
2092    $('.woo-sort select').niceSelect('update');
2093    $("#filter-form select").each(function () {
2094      $(this).val('').prop('selected', true);
2095      $(this).niceSelect('update');
2096    });
2097    let category = $("#filter-form").data("category-id");
2098    let tax = $("#filter-form").data("tax");
2099    deleteCookie(`savedFormData_${tax}_${category}`);
2100    load_filtered_products(1, category, tax);
2101    $('.filter__item .nice-select').removeClass('selected');
2102  });
2103  let tax = $("#filter-form").data("tax");
2104  let category = $("#filter-form").data("category-id");
2105  if (getCookie(`savedFormData_${tax}_${category}`)) {
2106    const savedFormData = getCookie(`savedFormData_${tax}_${category}`).split('&');
2107    savedFormData.forEach(function (item) {
2108      const [name, value] = item.split('=');
2109      let element = $(`[name="${decodeURIComponent(name)}"]`);
2110      element.val(decodeURIComponent(value));
2111      if (element.is('select') && !element.val()) {
2112        element.find('option:first').prop('selected', true);
2113      }
2114      if (element.val()) {
2115        element.addClass('selected');
2116      }
2117      element.niceSelect('update');
2118    });
2119    load_filtered_products(1, category, tax);
2120  }
2121  $('.filter__item select').on('change', function () {
2122    $(this).next().addClass('selected');
2123    const category = $("#filter-form").data("category-id");
2124    const tax = $("#filter-form").data("tax");
2125    const isSelected = $('#filter-form').serializeArray().some(item => item.value);
2126    if (isSelected) {
2127      setCookie(`savedFormData_${tax}_${category}`, $('#filter-form').serialize(), 1);
2128    } else {
2129      if (getCookie(`savedFormData_${tax}_${category}`)) {
2130        deleteCookie(`savedFormData_${tax}_${category}`);
2131      }
2132      $(this).next().removeClass('selected');
2133      $(this).next().blur();
2134    }
2135    load_filtered_products(1, category, tax);
2136  });
2137
2138  // Cookies
2139
2140  function setCookie(name, value, hours) {
2141    let expires = "";
2142    if (hours) {
2143      let date = new Date();
2144      date.setTime(date.getTime() + hours * 60 * 60 * 1000);
2145      expires = "; expires=" + date.toUTCString();
2146    }
2147    document.cookie = name + "=" + (value || "") + expires + "; path=/";
2148  }
2149  function getCookie(name) {
2150    let value = "; " + document.cookie;
2151    let parts = value.split("; " + name + "=");
2152    if (parts.length == 2) return parts.pop().split(";").shift();
2153  }
2154  function deleteCookie(name) {
2155    document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/';
2156  }
2157});
2158
2159/***/ }),
2160
2161/***/ "./assets/js/components/header-scrolled.js":
2162/*!*************************************************!*\
2163  !*** ./assets/js/components/header-scrolled.js ***!
2164  \*************************************************/
2165/***/ (function() {
2166
2167jQuery(document).ready(function ($) {
2168  "use strict";
2169
2170  /**
2171   * Header scrolled
2172   */
2173  function checkScrollPosition() {
2174    let st = $(window).scrollTop();
2175    if ($('body').hasClass('is-menu-open')) {
2176      return;
2177    }
2178    if (st > 70) {
2179      $('body').addClass('is-scrolled');
2180    } else {
2181      $('body').removeClass('is-scrolled');
2182    }
2183  }
2184  $(window).on('load scroll', function (e) {
2185    checkScrollPosition();
2186  });
2187});
2188
2189/***/ }),
2190
2191/***/ "./assets/js/components/letwork.js":
2192/*!*****************************************!*\
2193  !*** ./assets/js/components/letwork.js ***!
2194  \*****************************************/
2195/***/ (function() {
2196
2197document.addEventListener('DOMContentLoaded', function () {
2198  if (document.body.classList.contains('woocommerce-checkout')) {
2199    const observer = new MutationObserver(() => {
2200      const shippingPhoneInput = document.getElementById('shipping-phone');
2201      if (shippingPhoneInput) {
2202        shippingPhoneInput.required = true;
2203        const shippingPhoneLabel = shippingPhoneInput.nextElementSibling;
2204        if (shippingPhoneLabel && shippingPhoneLabel.tagName.toLowerCase() === 'label') {
2205          shippingPhoneLabel.innerHTML = shippingPhoneLabel.innerHTML.replace(/\(optional\)/i, '').trim();
2206        }
2207        if (shippingPhoneInput.hasAttribute('aria-label')) {
2208          const ariaLabel = shippingPhoneInput.getAttribute('aria-label');
2209          shippingPhoneInput.setAttribute('aria-label', ariaLabel.replace(/\(optional\)/i, '').trim());
2210        }
2211        const validationErrors = document.querySelectorAll('.wc-block-components-validation-error');
2212        validationErrors.forEach(error => {
2213          const errorSpan = error.querySelector('span');
2214          if (errorSpan) {
2215            errorSpan.innerHTML = errorSpan.innerHTML.replace(/\(optional\)/i, '').trim();
2216          }
2217        });
2218        observer.disconnect();
2219      }
2220    });
2221    observer.observe(document.body, {
2222      childList: true,
2223      subtree: true
2224    });
2225  }
2226});
2227
2228/***/ }),
2229
2230/***/ "./assets/js/components/modal.js":
2231/*!***************************************!*\
2232  !*** ./assets/js/components/modal.js ***!
2233  \***************************************/
2234/***/ (function() {
2235
2236jQuery(document).ready(function ($) {
2237  "use strict";
2238
2239  /**
2240   * Modal
2241   */
2242  $(document).on('click', '.js-modal-open', function (e) {
2243    e.preventDefault();
2244    const modal_id = $(this).data('modal');
2245    $('body').removeClass('is-menu-open').addClass('overflow-hidden');
2246    $('#' + modal_id).addClass('is-open');
2247  });
2248  $(document).find('.js-modal-close, .modal__overlay').on('click', function () {
2249    $('.modal').removeClass('is-open');
2250    $('body').removeClass('overflow-hidden');
2251  });
2252});
2253
2254/***/ }),
2255
2256/***/ "./assets/js/components/navigation.js":
2257/*!********************************************!*\
2258  !*** ./assets/js/components/navigation.js ***!
2259  \********************************************/
2260/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2261
2262"use strict";
2263__webpack_require__.r(__webpack_exports__);
2264/* harmony import */ var _vars__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_vars */ "./assets/js/_vars.js");
2265
2266jQuery(document).ready(function ($) {
2267  "use strict";
2268
2269  /**
2270   * Toggle main menu
2271   */
2272  $('.icon-burger').on('click', function () {
2273    $('body').toggleClass('is-menu-open');
2274  });
2275
2276  // Close mobile menu after navigating via a real link (incl. parent categories).
2277  $('.main-menu').on('click', 'a[href]:not([href="#"]):not([href=""])', function () {
2278    if ($(window).width() < _vars__WEBPACK_IMPORTED_MODULE_0__["default"].bp.lg) {
2279      $('body').removeClass('is-menu-open');
2280    }
2281  });
2282
2283  // autoclose mobile menu when increasing window width
2284  function closeMobileMenu() {
2285    $('.main-menu .sub-menu, .footer-links .sub-menu').css('display', '');
2286    if ($(window).width() >= _vars__WEBPACK_IMPORTED_MODULE_0__["default"].bp.lg) {
2287      if ($('body').hasClass('is-menu-open')) {
2288        $('.icon-burger').trigger('click');
2289      }
2290    }
2291  }
2292  $(window).on('resize', function (e) {
2293    closeMobileMenu();
2294  });
2295  function toggleMobileSubmenu($item) {
2296    const $parentList = $item.parent();
2297    const $toggle = $item.find('> .chevron-parent > .submenu-toggle');
2298    if ($item.hasClass('active')) {
2299      $item.removeClass('active');
2300      $item.children('.sub-menu').slideUp();
2301      $toggle.attr('aria-expanded', 'false');
2302      return;
2303    }
2304    $parentList.children('.sub-menu').slideUp();
2305    $parentList.find('> .menu-item-has-children').removeClass('active').find('> .chevron-parent > .submenu-toggle').attr('aria-expanded', 'false');
2306    $item.addClass('active');
2307    $item.children('.sub-menu').slideDown();
2308    $toggle.attr('aria-expanded', 'true');
2309  }
2310
2311  /**
2312   * Mobile submenu: only the chevron button toggles.
2313   * The category name (<a>) navigates normally.
2314   */
2315  $('.main-menu, .footer-links').on('click', '.submenu-toggle', function (e) {
2316    if ($(window).width() >= _vars__WEBPACK_IMPORTED_MODULE_0__["default"].bp.lg) {
2317      return;
2318    }
2319    e.preventDefault();
2320    e.stopPropagation();
2321    toggleMobileSubmenu($(this).closest('.menu-item-has-children'));
2322  });
2323  function toggleBarrierFree() {
2324    const hasClass = $('body').hasClass('barrier-free');
2325    $('body').toggleClass('barrier-free');
2326    if (!hasClass) {
2327      localStorage.setItem('barrier-free', 'true');
2328    } else {
2329      localStorage.removeItem('barrier-free');
2330    }
2331  }
2332  const userPrefersContrast = window.matchMedia('(prefers-contrast: more)').matches;
2333  const isBarrierFreeStored = localStorage.getItem('barrier-free') === 'true';
2334  if (isBarrierFreeStored || userPrefersContrast) {
2335    $('body').addClass('barrier-free');
2336    if (userPrefersContrast && !isBarrierFreeStored) {
2337      localStorage.setItem('barrier-free', 'true');
2338    }
2339  }
2340  $(document).on('click', '#barrier-free-toggle', function () {
2341    toggleBarrierFree();
2342  });
2343  $(document).on('keydown', '#barrier-free-toggle', function (e) {
2344    if (e.key === 'Enter' || e.keyCode === 13) {
2345      toggleBarrierFree();
2346    }
2347  });
2348});
2349
2350/***/ }),
2351
2352/***/ "./assets/js/components/offer-to-cart.js":
2353/*!***********************************************!*\
2354  !*** ./assets/js/components/offer-to-cart.js ***!
2355  \***********************************************/
2356/***/ (function() {
2357
2358jQuery(document).ready(function ($) {
2359  "use strict";
2360
2361  const url = new URL(window.location.href);
2362  const path = window.location.pathname.replace(/\/+$/, '');
2363  const urlParams = new URLSearchParams(window.location.search);
2364  const urlToken = urlParams.get("token");
2365  const content = document.getElementById("offer-content");
2366  const customerName = document.getElementById("offer__customer-name");
2367  const customerNameText = document.getElementById("offer__text__customer-name");
2368  const serviceNameText = document.getElementById("offer__text__service-name");
2369  const serviceImage = document.getElementById("offer__contact__image");
2370  const servicePhone = document.getElementById("offer__contact__phone");
2371  const serviceEmail = document.getElementById("offer__contact__email");
2372  const formOfferId = document.querySelector('input[name="offerId"]');
2373  const formOrderId = document.querySelector('input[name="orderId"]');
2374  const contentNoToken = document.getElementById("offer-content__notoken");
2375  if (path !== "/offer" || !urlToken) {
2376    return;
2377  }
2378  let offerItems = [];
2379  let offerVat = null;
2380  let offerId = null;
2381  let orderId = null;
2382  let offerShowOffer = null;
2383  let offerShowCatalog = null;
2384  let offerReview = null;
2385  let addToCartEventItems = [];
2386  fetch('/wp-json/letwork/v1/get-offer/', {
2387    method: 'POST',
2388    headers: {
2389      'Content-Type': 'application/json'
2390    },
2391    body: JSON.stringify({
2392      token: urlToken
2393    })
2394  }).then(response => {
2395    if (!response.ok) throw new Error("response invalid");
2396    return response.json();
2397  }).then(async data => {
2398    const offer = data && data.data && data.data.offer ? data.data.offer : null;
2399    const rawItems = data && data.data ? data.data.items : null;
2400    if (data.error !== false || !offer || !rawItems) {
2401      contentNoToken.style.display = "flex";
2402      return;
2403    }
2404
2405    // NeoX liefert offer_folder_json manchmal als Objekt, String oder null
2406    // (z. B. wenn die Angebotsmappe noch nicht erzeugt wurde). Darf die Seite nicht killen.
2407    let folder = offer.offer_folder_json;
2408    if (typeof folder === 'string' && folder !== '') {
2409      try {
2410        folder = JSON.parse(folder);
2411      } catch (e) {
2412        folder = null;
2413      }
2414    }
2415    if (!folder || typeof folder !== 'object' || Array.isArray(folder)) {
2416      folder = {};
2417    }
2418    offerItems = Array.isArray(rawItems) ? rawItems : Object.values(rawItems);
2419    offerVat = offer.vat;
2420    offerId = offer.id;
2421    orderId = offer.order_id;
2422    const fullName = [offer.billing_first_name, offer.billing_name].filter(Boolean).join(' ').trim();
2423    if (customerName) {
2424      customerName.innerHTML = fullName;
2425    }
2426    if (customerNameText) {
2427      customerNameText.innerHTML = folder.customer_greeting || fullName || '';
2428    }
2429    if (serviceNameText) {
2430      serviceNameText.innerHTML = [folder.first_name, folder.last_name].filter(Boolean).join(' ').trim();
2431    }
2432    if (serviceImage && folder.client_user_image) {
2433      serviceImage.src = folder.client_user_image;
2434    }
2435    if (servicePhone) {
2436      const phone = folder.phone || '';
2437      servicePhone.innerHTML = phone;
2438      if (phone) {
2439        servicePhone.href = 'tel:' + phone;
2440      }
2441    }
2442    if (serviceEmail) {
2443      const email = folder.email || '';
2444      serviceEmail.innerHTML = email;
2445      if (email) {
2446        serviceEmail.href = 'mailto:' + email;
2447      }
2448    }
2449    if (formOfferId) {
2450      formOfferId.value = offer.id;
2451    }
2452    if (formOrderId) {
2453      formOrderId.value = offer.order_id;
2454    }
2455    offerShowOffer = folder.offer_folder_pdf_url || '';
2456    offerShowCatalog = folder.offer_folder_pdf_catalog_url || '';
2457    offerReview = folder.review_for_offer_service_url || '';
2458    if (!offerShowOffer) {
2459      $('.offer-show-offer').addClass('disabled');
2460    }
2461    if (!offerShowCatalog) {
2462      $('.offer-show-catalog').addClass('disabled');
2463    }
2464    if (!offerReview) {
2465      $('.offer-review').addClass('disabled');
2466    }
2467    content.style.display = "flex";
2468    offerItems.forEach(item => {
2469      const gross = Number(item.item_price) + Number(item.item_price * offerVat / 100);
2470      addToCartEventItems.push({
2471        item_name: item.item_name,
2472        neox_article_no: item.item_number,
2473        sku: item.item_number,
2474        price: gross,
2475        quantity: item.item_quantity,
2476        // Katalog-ID kommt nach Möglichkeit aus der AJAX-Response.
2477        product_id: item.shop_product_id || item.product_id || null
2478      });
2479    });
2480  }).catch(error => {
2481    contentNoToken.style.display = "flex";
2482  });
2483  $('.offer-to-cart').on('click', async function () {
2484    if (!offerItems.length) return;
2485    await addOfferItems(offerItems, offerVat, offerId, orderId);
2486    url.searchParams.delete("token");
2487    window.location.href = wpApiSettings.cartUrl;
2488  });
2489  $('.offer-show-offer').on('click', function () {
2490    if (!offerShowOffer) return;
2491    window.open(offerShowOffer);
2492  });
2493  $('.offer-show-catalog').on('click', function () {
2494    if (!offerShowCatalog) return;
2495    window.open(offerShowCatalog);
2496  });
2497  $('.offer-review').on('click', function () {
2498    if (!offerReview) return;
2499    window.open(offerReview);
2500  });
2501  async function addOfferItems(items, vat, id, order_id) {
2502    return new Promise((resolve, reject) => {
2503      $.ajax({
2504        type: 'POST',
2505        url: wpApiSettings.ajaxUrl,
2506        data: {
2507          action: 'add_to_cart_offer_product',
2508          items: JSON.stringify(items),
2509          vat: vat,
2510          id: id,
2511          order_id: order_id
2512        },
2513        success: function (response) {
2514          const payload = response && response.data ? response.data : {};
2515          const trackItems = Array.isArray(payload.datalayer_items) && payload.datalayer_items.length ? payload.datalayer_items : addToCartEventItems;
2516          if (typeof window.letworkPushAddToCart === 'function') {
2517            // trackItems.price ist bereits Brutto (Netto + MwSt).
2518            window.letworkPushAddToCart(trackItems, {
2519              priceIsGross: true
2520            });
2521          } else {
2522            window.dataLayer = window.dataLayer || [];
2523            dataLayer.push({
2524              ecommerce: null
2525            });
2526            dataLayer.push({
2527              event: 'add_to_cart',
2528              ecommerce: {
2529                items: trackItems
2530              }
2531            });
2532          }
2533          window.dataLayer = window.dataLayer || [];
2534          dataLayer.push({
2535            event: 'add_to_cart_offer',
2536            ecommerce: {
2537              items: trackItems
2538            }
2539          });
2540          resolve(response);
2541        },
2542        error: reject
2543      });
2544    });
2545  }
2546});
2547
2548/***/ }),
2549
2550/***/ "./assets/js/components/order-steps.js":
2551/*!*********************************************!*\
2552  !*** ./assets/js/components/order-steps.js ***!
2553  \*********************************************/
2554/***/ (function() {
2555
2556document.addEventListener('DOMContentLoaded', () => {
2557  const orderSlider = document.querySelector('.order-slider');
2558  if (!orderSlider) return; // Not on this page — bail early.
2559
2560  const orderSliderWrap = document.querySelector('.order-slider__wrap');
2561  let currStep = parseInt(1);
2562  let language = orderSlider.querySelector('input[name="language"]');
2563  if (language) {
2564    language.value = document.documentElement.lang.split('-')[0];
2565  }
2566  function uniqid(prefix = "", random = false) {
2567    const sec = Date.now() * 1000 + Math.random() * 1000;
2568    const id = sec.toString(16).replace(/\./g, "").padEnd(14, "0");
2569    return `${prefix}${id}${random ? `.${Math.trunc(Math.random() * 100000000)}` : ""}`;
2570  }
2571  let adcell_reference = orderSlider.querySelector('input[name="adcell-reference"]');
2572  if (adcell_reference) {
2573    adcell_reference.value = uniqid("adcell_");
2574  }
2575
2576  // Prefix the sessionStorage key with the page language so that
2577  // steps recorded in DE are not accidentally restored in FR and vice versa.
2578  const pageLang = document.documentElement.lang.split('-')[0] || 'default';
2579  const SESSION_KEY = 'steps_' + pageLang;
2580  if (orderSlider) {
2581    const slides = document.querySelectorAll('.order-slider__slide');
2582    const lastSlide = orderSlider.querySelector('.order-slider__slide--last');
2583    const resultInput = orderSlider.querySelector('input[name="your-answers"]');
2584    const slideTitles = orderSlider.querySelectorAll('.order-slider__title');
2585    let questions = [];
2586    slideTitles.forEach(question => {
2587      if (question.innerText) {
2588        questions.push(question.innerText);
2589      } else {
2590        questions.push(null);
2591      }
2592    });
2593    slides.forEach(slide => {
2594      const slideItems = slide.querySelectorAll('.order-slider__item');
2595      slideItems.forEach(item => {
2596        item.addEventListener('click', () => {
2597          slideItems.forEach(item => item.classList.remove('active'));
2598          item.classList.add('active');
2599          storeData(questions);
2600          processNextStep();
2601        });
2602      });
2603    });
2604    const progressLine = document.querySelector('.progress__line');
2605    const totalSlides = orderSlider.dataset.total;
2606    const initWidth = 100 / totalSlides;
2607    progressLine.style.width = initWidth + '%';
2608    const processNextStep = () => {
2609      currStep++;
2610      const currLocation = window.location;
2611      const newUrl = currLocation.origin + currLocation.pathname + '?step=' + currStep;
2612      history.pushState(null, null, newUrl);
2613      processStep();
2614    };
2615    const processStep = (rewind = false) => {
2616      orderSlider.classList.toggle('rewind', rewind);
2617      const offset = (currStep - 1) * -100;
2618      orderSliderWrap.style.transform = `translate(${offset}%)`;
2619      progressLine.style.width = initWidth * currStep + '%';
2620      if (currStep > 1) {
2621        const activeItem = slides[currStep - 2].querySelector('.active');
2622        if (activeItem) {
2623          const prevAnswer = activeItem.dataset.item;
2624          slides[currStep - 1].querySelectorAll('.order-slider__item').forEach(item => item.classList.toggle('hide', prevAnswer == item.dataset.hide));
2625        }
2626      }
2627      lastSlide.classList.toggle('full', currStep == totalSlides);
2628    };
2629    const storeData = questions => {
2630      const storedData = [];
2631      let previewData = [];
2632      slides.forEach((slide, index) => {
2633        let question = "";
2634        if (questions[index] !== null) {
2635          question = questions[index];
2636        } else {
2637          question = index + 1;
2638        }
2639        const answer = slide.querySelector('.active');
2640        if (!answer) return;
2641        const answerText = answer.querySelector('.order-slider__text').innerText;
2642        storedData.push([answer.dataset.item, answerText]);
2643        previewData.push(question + ': ' + answerText);
2644      });
2645      sessionStorage.setItem(SESSION_KEY, JSON.stringify(storedData));
2646      // Write collected answers into the CF7 hidden field when it exists.
2647      if (resultInput) {
2648        resultInput.value = previewData.join('; ');
2649      }
2650    };
2651    const loadData = () => {
2652      const currSearchParams = new URLSearchParams(window.location.search);
2653      const stepsData = sessionStorage.getItem(SESSION_KEY);
2654      if (currSearchParams.get('step') && stepsData) {
2655        const loadedData = JSON.parse(stepsData);
2656        if (Array.isArray(loadedData)) {
2657          loadedData.forEach((item, index) => {
2658            const target = slides[index] && slides[index].querySelector(`.order-slider__item[data-item="${item[0]}"]`);
2659            if (target) target.classList.add('active');
2660          });
2661        }
2662        currStep = parseInt(currSearchParams.get('step'));
2663        processStep(true);
2664      }
2665    };
2666    loadData();
2667    window.onpopstate = () => {
2668      const currSearchParams = new URLSearchParams(window.location.search);
2669      currStep = currSearchParams.get('step') ? parseInt(currSearchParams.get('step')) : 1;
2670      processStep(true);
2671    };
2672    if ('scrollRestoration' in history) {
2673      history.scrollRestoration = 'manual';
2674    }
2675  }
2676});
2677
2678/***/ }),
2679
2680/***/ "./assets/js/components/quick-configurator.js":
2681/*!****************************************************!*\
2682  !*** ./assets/js/components/quick-configurator.js ***!
2683  \****************************************************/
2684/***/ (function() {
2685
2686jQuery(document).ready(function ($) {
2687  "use strict";
2688
2689  const QUICK_API_URL = wpApiSettings.quickApiUrl;
2690  const QUICK_API_TOKEN = wpApiSettings.quickApiToken;
2691  let firstCall = true;
2692  const slidersContainer = document.getElementById('quick-sliders');
2693  const addonsContainer = document.getElementById('quick-addons');
2694  const resetButton = document.getElementById('quick-reset-button');
2695  const valuesContainer = document.getElementById('quick-values');
2696  const showButton = document.getElementById('quick-show-button');
2697  const widthSlider = document.getElementById('widthSlider');
2698  const widthSliderValue = document.getElementById('widthSliderValue');
2699  const widthSliderMinValue = document.getElementById('widthMinLabel');
2700  const widthSliderMaxValue = document.getElementById('widthMaxLabel');
2701  const heightSlider = document.getElementById('heightSlider');
2702  const heightSliderValue = document.getElementById('heightSliderValue');
2703  const heightSliderMinValue = document.getElementById('heightMinLabel');
2704  const heightSliderMaxValue = document.getElementById('heightMaxLabel');
2705  const archiveWrapper = document.getElementsByClassName('archive-wrapper');
2706  const preconfiguredElement = document.getElementById('preconfigured');
2707  if (preconfiguredElement && document.getElementById('quick-configurator').classList.contains('quick-card-configurator')) {
2708    const width = preconfiguredElement.dataset.width;
2709    const height = preconfiguredElement.dataset.height;
2710    const opening = preconfiguredElement.dataset.opening;
2711    sendData_preconfigured(width, height, opening);
2712  }
2713  if (widthSlider) {
2714    widthSlider.addEventListener('input', function () {
2715      widthSliderValue.textContent = widthSlider.value;
2716    });
2717    widthSlider.addEventListener('change', function () {
2718      quickValuesPulse();
2719      sendData();
2720    });
2721  }
2722  if (heightSlider) {
2723    heightSlider.addEventListener('input', function () {
2724      heightSliderValue.textContent = heightSlider.value;
2725    });
2726    heightSlider.addEventListener('change', function () {
2727      quickValuesPulse();
2728      sendData();
2729    });
2730  }
2731  const quickAddons = document.getElementById('quick-addons');
2732  if (quickAddons) {
2733    const addons = quickAddons.getElementsByTagName('input');
2734    Array.from(addons).forEach(checkbox => {
2735      checkbox.addEventListener('change', function () {
2736        quickValuesPulse();
2737        sendData();
2738      });
2739    });
2740  }
2741  window.quickScrollUp = function () {
2742    window.scrollTo({
2743      top: document.getElementById('quick-configurator').getBoundingClientRect().top + window.scrollY - 130,
2744      behavior: 'smooth'
2745    });
2746  };
2747  function quickValuesPulse() {
2748    if (!document.getElementById('quick-configurator').classList.contains('quick-card-configurator')) {
2749      valuesContainer.classList.add('quick-values--pulse');
2750      setTimeout(function () {
2751        valuesContainer.classList.remove('quick-values--pulse');
2752      }, 500);
2753    }
2754  }
2755  function sendData(reset = false) {
2756    const opening = document.getElementById('opening').dataset.code;
2757    const opening_image = document.getElementById('quick-dropdown-button-opening').getElementsByClassName('quick-dropdown__button__image')[0];
2758    const width = document.getElementById('widthSlider').value;
2759    const height = document.getElementById('heightSlider').value;
2760    const addons = document.querySelectorAll('#quick-addons input[type="checkbox"]:checked');
2761    const addons_array = Array.from(addons).map(input => input.id);
2762    const addons_labels = document.querySelectorAll('#quick-addons .quick-checkbox__label');
2763    const addons_icons = [];
2764    let addons_icons_string = "";
2765    addons_labels.forEach(label => {
2766      addons_icons.push({
2767        [label.getAttribute('for')]: label.querySelector('img')
2768      });
2769    });
2770    addons_icons.forEach(icon => {
2771      if (addons_array.includes(Object.keys(icon)[0])) {
2772        addons_icons_string += "<div>" + icon[Object.keys(icon)[0]].outerHTML + "</div>";
2773      }
2774    });
2775    if (!document.getElementById('quick-configurator').classList.contains('quick-card-configurator')) {
2776      const cards = document.querySelectorAll('.product-card');
2777      const uuids = Array.from(cards).map(card => card.dataset.uuid);
2778      $.ajax({
2779        type: 'POST',
2780        url: `${QUICK_API_URL}/get-pricing`,
2781        data: {
2782          uuids: uuids,
2783          opening_code: !reset ? opening : "F",
2784          width: !reset ? width : 300,
2785          height: !reset ? height : 300,
2786          addons: !reset ? addons_array : [],
2787          language_id: 1
2788        },
2789        beforeSend: function (xhr) {
2790          xhr.setRequestHeader("Authorization", QUICK_API_TOKEN);
2791        },
2792        success: function (response) {
2793          const formatter = new Intl.NumberFormat('de-DE', {
2794            style: 'decimal',
2795            minimumFractionDigits: 2,
2796            maximumFractionDigits: 2
2797          });
2798          let firstModel = true;
2799          let fromPrice = 0;
2800          Object.keys(response).forEach(key => {
2801            const model = response[key];
2802            const card = document.querySelector(`.product-card[data-uuid="${model.uuid}"]`);
2803            if (!card) return;
2804            const priceElement = card.querySelector('.product-card__price');
2805            const regularPriceElement = card.querySelector('.product-card__price ins');
2806            const oldPriceElement = card.querySelector('.product-card__price del');
2807            const configuratorButton = card.querySelector('.button-line .configurator-button');
2808            if (priceElement) {
2809              if (firstModel) {
2810                fromPrice = model.final_price;
2811                firstModel = false;
2812              }
2813              if (regularPriceElement && oldPriceElement) {
2814                if (model.final_price > 0) {
2815                  regularPriceElement.innerHTML = !reset ? `<span class="woocommerce-Price-amount amount">${formatter.format(model.final_price)} €</span>` : `ab <span class="woocommerce-Price-amount amount">${formatter.format(model.final_price)} €</span>`;
2816                  oldPriceElement.innerHTML = !reset ? `<span class="woocommerce-Price-amount amount">${formatter.format(model.price_without_discount)} €</span>` : `ab <span class="woocommerce-Price-amount amount">${formatter.format(model.price_without_discount)} €</span>`;
2817                  fromPrice = model.final_price < fromPrice ? model.final_price : fromPrice;
2818                } else {
2819                  regularPriceElement.innerHTML = 'Nicht Baubar';
2820                  oldPriceElement.innerHTML = '';
2821                }
2822              } else {
2823                if (model.final_price > 0) {
2824                  priceElement.innerHTML = !reset ? `<span class="woocommerce-Price-amount amount">${formatter.format(model.final_price)} €</span>` : `ab <span class="woocommerce-Price-amount amount">${formatter.format(model.final_price)} €</span>`;
2825                  fromPrice = model.final_price < fromPrice ? model.final_price : fromPrice;
2826                } else {
2827                  priceElement.innerHTML = 'Nicht Baubar';
2828                }
2829              }
2830            }
2831            if (configuratorButton) {
2832              configuratorButton.dataset.quick_division = model.division_id;
2833              configuratorButton.dataset.quick_opening = model.opening_id;
2834              configuratorButton.dataset.quick_width = width;
2835              configuratorButton.dataset.quick_height = height;
2836              configuratorButton.dataset.quick_addons = addons_array;
2837            }
2838          });
2839          if (!reset) {
2840            if (document.getElementById("quick-sticky")) {
2841              document.getElementById("quick-sticky").remove();
2842            }
2843            archiveWrapper[0].insertAdjacentHTML("afterBegin", "<div id='quick-sticky' onclick='quickScrollUp()'>" + "<div>" + "<div class='quick-sticky__element'>" + "<span class='opening-image'>" + opening_image.outerHTML + "</span>" + "</div>" + "<div class='quick-sticky__element'>" + "<span>" + width + " mm x " + height + " mm" + "</span>" + "<span class='addon-icons'>" + addons_icons_string + "</span>" + "</div>" + "</div>" + "</div>");
2844          }
2845        },
2846        error: function () {
2847          alert('Etwas ist schief gelaufen. Bitte laden Sie die Seite neu');
2848        }
2849      });
2850    } else {
2851      const quick_cards = document.querySelectorAll('.quick-product-card');
2852      const quick_uuids = Array.from(quick_cards).map(quick_card => quick_card.dataset.uuid);
2853      $.ajax({
2854        type: 'POST',
2855        url: `${QUICK_API_URL}/get-pricing`,
2856        data: {
2857          uuids: quick_uuids,
2858          opening_code: !reset ? opening : "F",
2859          width: !reset ? width : 300,
2860          height: !reset ? height : 300,
2861          addons: !reset ? addons_array : [],
2862          language_id: 1
2863        },
2864        beforeSend: function (xhr) {
2865          xhr.setRequestHeader("Authorization", QUICK_API_TOKEN);
2866        },
2867        success: function (response) {
2868          const formatter = new Intl.NumberFormat('de-DE', {
2869            style: 'decimal',
2870            minimumFractionDigits: 2,
2871            maximumFractionDigits: 2
2872          });
2873          let firstModel = true;
2874          let fromPrice = 0;
2875          Object.keys(response).forEach(key => {
2876            const item = response[key];
2877            const quick_card = document.querySelector(`.quick-product-card[data-uuid="${item.uuid}"]`);
2878            if (!quick_card) return;
2879            const priceElement = quick_card.querySelector('.quick-product-card__price');
2880            const configuratorButton = quick_card.querySelector('.quick-product-card__button-line .configurator-button');
2881            if (priceElement) {
2882              if (firstModel) {
2883                fromPrice = item.final_price;
2884                firstModel = false;
2885              }
2886              if (item.final_price > 0) {
2887                priceElement.innerHTML = !reset ? `<span class="price-tag">${formatter.format(item.final_price)} <span class="currency">€</span></span>` : ``;
2888                fromPrice = item.final_price < fromPrice ? item.final_price : fromPrice;
2889              } else {
2890                priceElement.innerHTML = reset ? `` : '<span class="not-available">Nicht Baubar</span>';
2891              }
2892            }
2893            if (configuratorButton) {
2894              configuratorButton.dataset.quick_division = item.division_id;
2895              configuratorButton.dataset.quick_opening = item.opening_id;
2896              configuratorButton.dataset.quick_width = width;
2897              configuratorButton.dataset.quick_height = height;
2898              configuratorButton.dataset.quick_addons = addons_array;
2899            }
2900          });
2901        },
2902        error: function () {
2903          alert('Etwas ist schief gelaufen. Bitte laden Sie die Seite neu');
2904        }
2905      });
2906    }
2907  }
2908  function sendData_preconfigured(width, height, opening) {
2909    const languageCode = document.documentElement.lang.split('-')[0];
2910    let languageId = 1;
2911    switch (languageCode) {
2912      case "de":
2913        languageId = 1;
2914        break;
2915      case "fr":
2916        languageId = 2;
2917        break;
2918      case "en":
2919        languageId = 3;
2920        break;
2921      case "nl":
2922        languageId = 4;
2923        break;
2924      case "pl":
2925        languageId = 5;
2926        break;
2927    }
2928    const quick_cards = document.querySelectorAll('.quick-product-card');
2929    const quick_uuids = Array.from(quick_cards).map(quick_card => quick_card.dataset.uuid);
2930    $.ajax({
2931      type: 'POST',
2932      url: `${QUICK_API_URL}/get-pricing`,
2933      data: {
2934        uuids: quick_uuids,
2935        opening_code: opening,
2936        width: width,
2937        height: height,
2938        addons: [],
2939        language_id: 1
2940      },
2941      beforeSend: function (xhr) {
2942        xhr.setRequestHeader("Authorization", QUICK_API_TOKEN);
2943      },
2944      success: function (response) {
2945        const formatter = new Intl.NumberFormat('de-DE', {
2946          style: 'decimal',
2947          minimumFractionDigits: 2,
2948          maximumFractionDigits: 2
2949        });
2950        let firstModel = true;
2951        let fromPrice = 0;
2952        Object.keys(response).forEach(key => {
2953          const item = response[key];
2954          const quick_card = document.querySelector(`.quick-product-card[data-uuid="${item.uuid}"]`);
2955          if (!quick_card) return;
2956          const priceElement = quick_card.querySelector('.quick-preconfigured-card__price');
2957          if (priceElement) {
2958            if (firstModel) {
2959              fromPrice = item.final_price;
2960              firstModel = false;
2961            }
2962            if (item.final_price > 0) {
2963              priceElement.innerHTML = `<span class="price-tag">${formatter.format(item.final_price)} <span class="currency">€</span></span>`;
2964              fromPrice = item.final_price < fromPrice ? item.final_price : fromPrice;
2965            } else {
2966              priceElement.innerHTML = '<span class="not-available">Nicht Baubar</span>';
2967            }
2968          }
2969        });
2970      },
2971      error: function () {
2972        alert('Etwas ist schief gelaufen. Bitte laden Sie die Seite neu');
2973      }
2974    });
2975  }
2976  $(document).on('keydown', '#quick-dropdown-content-division a', function (e) {
2977    if (e.key === 'Enter' || e.keyCode === 13) {
2978      chooseDivision($(this));
2979    }
2980  });
2981  $(document).on('click', '#quick-dropdown-content-division a', function (e) {
2982    e.preventDefault();
2983    chooseDivision($(this));
2984  });
2985  function chooseDivision($this) {
2986    let code = $this.data('code');
2987    let title = $this.data('title');
2988    let icon = $this.data('icon');
2989    let type = $this.data('type');
2990    $.ajax({
2991      type: 'GET',
2992      url: `${QUICK_API_URL}/${type}/1/${code}`,
2993      beforeSend: function (xhr) {
2994        xhr.setRequestHeader("Authorization", QUICK_API_TOKEN);
2995      },
2996      success: function (response) {
2997        if (typeof response.items === 'object' && !Array.isArray(response.items) && response.items !== null) {
2998          response.items = Object.values(response.items);
2999        }
3000        const dropdownContentOpenings = document.getElementById('quick-dropdown-content-opening');
3001        dropdownContentOpenings.innerHTML = null;
3002        response.items.forEach(item => dropdownContentOpenings.insertAdjacentHTML('beforeend', `<a data-code="${item.opening_code}" data-title="${item.name}
3002" data-icon="https://letwork.app/data/images/configurators/attributes/${item.image}" data-min_height="${item.min_height}" data-max_height="${item.max_height}" data-default_height="${item.default_height}" data-min_width="${item.min_width}" data-max_width="${item.max_width}" data-default_width="${item.default_width}" tabindex="0">
3003                                <img class="quick-dropdown__image" src="https://letwork.app/data/images/configurators/attributes/${item.image}"
3004                                     alt="${item.name}">
3005                                    <span class="quick-dropdown__label">${item.name}</span>
3006                            </a>`));
3007      },
3008      error: function () {
3009        alert('Etwas ist schief gelaufen. Bitte laden Sie die Seite neu');
3010      }
3011    });
3012    const dropdown = document.getElementById('quick-dropdown-divisions');
3013    const dropdownOpening = document.getElementById('quick-dropdown-openings');
3014    const dropdownButton = document.getElementById('quick-dropdown-button-division');
3015    dropdownButton.innerHTML = `<img class="quick-dropdown__button__image" src="${icon}" alt="${title}"><span id="division" data-code="${code}" class="quick-dropdown__button__label">${title}</span>`;
3016    dropdown.classList.add('quick-dropdown--set');
3017    dropdownOpening.classList.remove('quick-dropdown--disabled');
3018    //resetButton.disabled = false;
3019  }
3020  $(document).on('keydown', '#quick-dropdown-content-opening a', function (e) {
3021    if (e.key === 'Enter' || e.keyCode === 13) {
3022      chooseOpening($(this));
3023    }
3024  });
3025  $(document).on('click', '#quick-dropdown-content-opening a', function (e) {
3026    e.preventDefault();
3027    chooseOpening($(this));
3028  });
3029  function chooseOpening($this) {
3030    let code = $this.data('code');
3031    let title = $this.data('title');
3032    let image = $this.data('icon');
3033    let min_width = $this.data('min_width');
3034    let max_width = $this.data('max_width');
3035    let default_width = $this.data('default_width');
3036    let min_height = $this.data('min_height');
3037    let max_height = $this.data('max_height');
3038    let default_height = $this.data('default_height');
3039    if (firstCall) {
3040      slidersContainer.classList.remove('quick-sliders--disabled');
3041      widthSlider.disabled = false;
3042      widthSliderValue.textContent = default_width;
3043      widthSlider.min = min_width;
3044      widthSliderMinValue.textContent = min_width + " mm";
3045      widthSlider.max = max_width;
3046      widthSliderMaxValue.textContent = max_width + " mm";
3047      widthSlider.value = Number(default_width);
3048      heightSlider.disabled = false;
3049      heightSliderValue.textContent = default_height;
3050      heightSlider.min = min_height;
3051      heightSliderMinValue.textContent = min_height + " mm";
3052      heightSlider.max = max_height;
3053      heightSliderMaxValue.textContent = max_height + " mm";
3054      heightSlider.value = Number(default_height);
3055      addonsContainer.classList.remove('quick-addons--disabled');
3056      Array.from(quickAddons.getElementsByTagName('input')).forEach(checkbox => {
3057        checkbox.disabled = false;
3058      });
3059      valuesContainer.classList.remove('quick-values--disabled');
3060      //archiveWrapper[0].classList.add('outline-in-color');
3061      firstCall = false;
3062    }
3063    const dropdown = document.getElementById('quick-dropdown-openings');
3064    const dropdownButton = document.getElementById('quick-dropdown-button-opening');
3065    dropdownButton.innerHTML = `<img class="quick-dropdown__button__image" src="${image}" alt="${title}"><span id="opening" data-code="${code}" class="quick-dropdown__button__label">${title}</span>`;
3066    dropdown.classList.add('quick-dropdown--set');
3067    if (showButton) {
3068      showButton.disabled = false;
3069    }
3070    quickValuesPulse();
3071    sendData();
3072  }
3073  $(document).on('click', '#quick-reset-button', function (e) {
3074    //resetButton.disabled = true;
3075    slidersContainer.classList.add('quick-sliders--disabled');
3076    widthSlider.disabled = true;
3077    widthSliderValue.textContent = "?";
3078    widthSlider.min = 0;
3079    widthSliderMinValue.textContent = "? mm";
3080    widthSlider.max = 0;
3081    widthSliderMaxValue.textContent = "? mm";
3082    heightSlider.disabled = true;
3083    heightSliderValue.textContent = "?";
3084    heightSlider.min = 0;
3085    heightSliderMinValue.textContent = "? mm";
3086    heightSlider.max = 0;
3087    heightSliderMaxValue.textContent = "? mm";
3088    addonsContainer.classList.add('quick-addons--disabled');
3089    Array.from(quickAddons.getElementsByTagName('input')).forEach(checkbox => {
3090      checkbox.disabled = true;
3091      checkbox.checked = false;
3092    });
3093    const dropdownDivision = document.getElementById('quick-dropdown-divisions');
3094    const dropdownButtonDivision = document.getElementById('quick-dropdown-button-division');
3095    const dropdownOpening = document.getElementById('quick-dropdown-openings');
3096    const dropdownButtonOpening = document.getElementById('quick-dropdown-button-opening');
3097    dropdownButtonDivision.innerHTML = `<img class="quick-dropdown__button__image" src="" alt="Wahl-Icon">
3098                                    <span id="division" class="quick-dropdown__button__label">Wählen Sie eine Option</span>`;
3099    dropdownButtonOpening.innerHTML = `<img class="quick-dropdown__button__image" src="" alt="Wahl-Icon">
3100                                    <span id="opening" class="quick-dropdown__button__label">Wählen Sie eine Option</span>`;
3101    dropdownDivision.classList.remove('quick-dropdown--set');
3102    dropdownOpening.classList.add('quick-dropdown--disabled');
3103    dropdownOpening.classList.remove('quick-dropdown--set');
3104    //quickValuesFrom.innerHTML = "?";
3105    valuesContainer.classList.add('quick-values--disabled');
3106    if (document.getElementById("quick-sticky")) {
3107      document.getElementById("quick-sticky").remove();
3108    }
3109    if (showButton) {
3110      showButton.disabled = true;
3111    }
3112    //archiveWrapper[0].classList.remove('outline-in-color');
3113    firstCall = true;
3114    document.querySelectorAll('.quick-product-card__price').forEach(el => el.innerHTML = '');
3115    sendData(true);
3116  });
3117  $(document).on('click', '#quick-show-button', function (e) {
3118    window.scrollTo({
3119      top: document.getElementById('quick-sticky').getBoundingClientRect().top + window.scrollY + 100,
3120      behavior: 'smooth'
3121    });
3122  });
3123  function fetchRelatedProductCard(relatedProductId, targetElement) {
3124    jQuery.ajax({
3125      url: wpApiSettings.ajaxUrl,
3126      type: 'POST',
3127      data: {
3128        action: 'get_related_product_card',
3129        related_product_id: relatedProductId
3130      },
3131      success: function (response) {
3132        if (response.success) {
3133          jQuery(targetElement).append(response.data.html);
3134        } else {
3135          console.error('Error fetching product card:', response.data.message);
3136        }
3137      },
3138      error: function (error) {
3139        console.error('AJAX error:', error);
3140      }
3141    });
3142  }
3143  $(document).on('change', '#quick-dropdown-products', function () {
3144    const relatedProductId = $(this).val();
3145    const targetElement = '.archive-wrapper>.row';
3146    fetchRelatedProductCard(relatedProductId, targetElement);
3147    $(this).find('option:selected').remove();
3148    $(this).val('');
3149    $(this).niceSelect('update');
3150    if (!firstCall) {
3151      setTimeout(function () {
3152        sendData();
3153      }, 1000);
3154    }
3155    if ($('#quick-dropdown-products option').length === 0) {
3156      $('.related-products-add .nice-select').hide();
3157    }
3158  });
3159
3160  /*$('#quick-dropdown-products-reload').on('click', function() {
3161      $(window).on('beforeunload', showConfirmation);
3162       setTimeout(function() {
3163          location.reload();
3164      }, 0);
3165       setTimeout(function() {
3166          $(window).off('beforeunload', showConfirmation);
3167      }, 1000);
3168  });*/
3169
3170  /*function showConfirmation(event) {
3171      event.preventDefault();
3172      event.returnValue = '';
3173  }*/
3174
3175  //<button id="quick-dropdown-products-reload" class="btn btn-outline"><?= __("Auswahl zurücksetzen"); ?></button>
3176});
3177
3178/***/ }),
3179
3180/***/ "./assets/js/components/sale-products-nav.js":
3181/*!***************************************************!*\
3182  !*** ./assets/js/components/sale-products-nav.js ***!
3183  \***************************************************/
3184/***/ (function() {
3185
3186(function () {
3187  var nav = document.querySelector('.sale-products__nav');
3188  if (!nav) return;
3189
3190  // ── Mobile toggle: main nav open/close ──
3191  var toggle = nav.querySelector('.sale-products__nav-toggle');
3192  var navInner = nav.querySelector('.sale-products__nav-inner');
3193  if (toggle && navInner) {
3194    navInner.classList.add('is-open');
3195    toggle.addEventListener('click', function () {
3196      var expanded = toggle.getAttribute('aria-expanded') === 'true';
3197      toggle.setAttribute('aria-expanded', String(!expanded));
3198      navInner.classList.toggle('is-open');
3199    });
3200  }
3201
3202  // ── Mobile toggle: expand parent categories ──
3203  var expandBtns = nav.querySelectorAll('.sale-products__nav-expand');
3204  expandBtns.forEach(function (btn) {
3205    btn.addEventListener('click', function () {
3206      var expanded = btn.getAttribute('aria-expanded') === 'true';
3207      btn.setAttribute('aria-expanded', String(!expanded));
3208      var children = btn.parentElement.querySelector('.sale-products__nav-children');
3209      if (children) {
3210        children.classList.toggle('is-open');
3211      }
3212    });
3213  });
3214
3215  // ── Anchor links: smooth scroll + close mobile nav ──
3216  var links = nav.querySelectorAll('a.sale-products__nav-link');
3217  var sections = [];
3218  links.forEach(function (link) {
3219    var href = link.getAttribute('href');
3220    if (!href || href.charAt(0) !== '#') return;
3221    var target = document.getElementById(href.substring(1));
3222    if (target) {
3223      sections.push({
3224        el: target,
3225        link: link
3226      });
3227    }
3228  });
3229  function setActive(activeLink) {
3230    links.forEach(function (l) {
3231      l.classList.remove('is-active');
3232    });
3233    if (activeLink) {
3234      activeLink.classList.add('is-active');
3235    }
3236  }
3237  if (sections.length) {
3238    var observer = new IntersectionObserver(function (entries) {
3239      var visible = [];
3240      entries.forEach(function (entry) {
3241        if (entry.isIntersecting) {
3242          visible.push(entry);
3243        }
3244      });
3245      if (visible.length > 0) {
3246        var topMost = visible.reduce(function (a, b) {
3247          return a.boundingClientRect.top < b.boundingClientRect.top ? a : b;
3248        });
3249        for (var i = 0; i < sections.length; i++) {
3250          if (sections[i].el === topMost.target) {
3251            setActive(sections[i].link);
3252            break;
3253          }
3254        }
3255      }
3256    }, {
3257      rootMargin: '-100px 0px -60% 0px',
3258      threshold: 0
3259    });
3260    sections.forEach(function (section) {
3261      observer.observe(section.el);
3262    });
3263  }
3264  links.forEach(function (link) {
3265    link.addEventListener('click', function (e) {
3266      var href = link.getAttribute('href');
3267      if (!href || href.charAt(0) !== '#') return;
3268      var target = document.getElementById(href.substring(1));
3269      if (!target) return;
3270      e.preventDefault();
3271      var offset = 100;
3272      var top = target.getBoundingClientRect().top + window.pageYOffset - offset;
3273      window.scrollTo({
3274        top: top,
3275        behavior: 'smooth'
3276      });
3277      setActive(link);
3278      if (navInner && toggle && window.innerWidth < 1025) {
3279        navInner.classList.remove('is-open');
3280        toggle.setAttribute('aria-expanded', 'false');
3281      }
3282    });
3283  });
3284})();
3285
3286/***/ }),
3287
3288/***/ "./assets/js/components/skip-link-focus-fix.js":
3289/*!*****************************************************!*\
3290  !*** ./assets/js/components/skip-link-focus-fix.js ***!
3291  \*****************************************************/
3292/***/ (function() {
3293
3294/**
3295 * File skip-link-focus-fix.js.
3296 *
3297 * Helps with accessibility for keyboard only users.
3298 *
3299 * Learn more: https://git.io/vWdr2
3300 */
3301(function () {
3302  var isIe = /(trident|msie)/i.test(navigator.userAgent);
3303  if (isIe && document.getElementById && window.addEventListener) {
3304    window.addEventListener('hashchange', function () {
3305      var id = location.hash.substring(1),
3306        element;
3307      if (!/^[A-z0-9_-]+$/.test(id)) {
3308        return;
3309      }
3310      element = document.getElementById(id);
3311      if (element) {
3312        if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {
3313          element.tabIndex = -1;
3314        }
3315        element.focus();
3316      }
3317    }, false);
3318  }
3319})();
3320
3321/***/ }),
3322
3323/***/ "./assets/js/components/smooth-scroll-anchor.js":
3324/*!******************************************************!*\
3325  !*** ./assets/js/components/smooth-scroll-anchor.js ***!
3326  \******************************************************/
3327/***/ (function() {
3328
3329jQuery(document).ready(function ($) {
3330  /**
3331   * Smooth scroll to anchor
3332   */
3333  $('a[href*="#"]:not([href="#"]):not(.content_tabs__nav-link)').on('click', function () {
3334    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
3335      var target = $(this.hash);
3336      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
3337      if (target.length) {
3338        $('html,body').animate({
3339          scrollTop: target.offset().top
3340        }, 700);
3341
3342        // remove anchor from url
3343        var hash = location.hash.replace('#', '');
3344        if (hash != '') {
3345          location.hash = '';
3346        }
3347        return false;
3348      }
3349    }
3350  });
3351});
3352
3353/***/ }),
3354
3355/***/ "./assets/js/components/tabs.js":
3356/*!**************************************!*\
3357  !*** ./assets/js/components/tabs.js ***!
3358  \**************************************/
3359/***/ (function() {
3360
3361jQuery(document).ready(function ($) {
3362  "use strict";
3363
3364  /**
3365   * Tabs
3366   */
3367  $(document).on('click', '.js-tab-title', function () {
3368    const tabs = $(this).closest('.js-tabs'),
3369      item = $(this).data('item');
3370    if ('' !== item) {
3371      tabs.find('.js-tab-title').removeClass('is-active');
3372      $(this).addClass('is-active');
3373      tabs.find('.js-tab-content').removeClass('is-active');
3374      tabs.find('#' + item).addClass('is-active');
3375    }
3376  });
3377});
3378
3379/***/ }),
3380
3381/***/ "./assets/js/components/to-top.js":
3382/*!****************************************!*\
3383  !*** ./assets/js/components/to-top.js ***!
3384  \****************************************/
3385/***/ (function() {
3386
3387window.onload = function (e) {
3388  const toTop = document.getElementById('to-top');
3389  if (toTop) {
3390    window.addEventListener('scroll', e => {
3391      if (window.scrollY > 300) {
3392        toTop.classList.add('show');
3393      } else {
3394        toTop.classList.remove('show');
3395      }
3396    });
3397    toTop.addEventListener('click', () => {
3398      // Remove hash from url
3399      setTimeout(() => {
3400        history.replaceState('', document.title, window.location.origin + window.location.pathname + window.location.search);
3401      }, 5);
3402    });
3403  }
3404  const awards = document.querySelector('.awards__content');
3405  if (awards) {
3406    window.addEventListener('scroll', e => {
3407      if (window.scrollY > 300) {
3408        awards.classList.add('show');
3409      } else {
3410        awards.classList.remove('show');
3411      }
3412    });
3413  }
3414  const projectStarter = document.querySelector('.project-starter');
3415  if (projectStarter) {
3416    window.addEventListener('scroll', e => {
3417      if (window.scrollY > 300) {
3418        projectStarter.classList.add('show');
3419      } else {
3420        projectStarter.classList.remove('show');
3421      }
3422    });
3423  }
3424};
3425
3426/***/ }),
3427
3428/***/ "./assets/js/components/toggle.js":
3429/*!****************************************!*\
3430  !*** ./assets/js/components/toggle.js ***!
3431  \****************************************/
3432/***/ (function() {
3433
3434jQuery(document).ready(function ($) {
3435  "use strict";
3436
3437  /**
3438   * Toggle
3439   */
3440  $(document).on('click', '.js-toggle', function (e) {
3441    e.preventDefault();
3442    const item = $(this).data('item');
3443    if ('' !== item) {
3444      $(this).toggleClass('is-open');
3445      $('#' + item).toggleClass('is-open').slideToggle();
3446    }
3447  });
3448});
3449
3450/***/ }),
3451
3452/***/ "./assets/js/components/trustbadge-offset.js":
3453/*!***************************************************!*\
3454  !*** ./assets/js/components/trustbadge-offset.js ***!
3455  \***************************************************/
3456/***/ (function() {
3457
3458/**
3459 * Keep the Trusted Shops floating badge above our contact / chat buttons.
3460 *
3461 * Newer eTrusted widgets do NOT position `#trustbadge-container…` (that node
3462 * is a 0×0 shell). The visible badge lives in a fixed child wrapper whose
3463 * hashed class names change. We locate that wrapper via the stable
3464 * `data-testid` and re-apply `bottom` whenever TS mutates the DOM/CSS.
3465 *
3466 * Stack (desktop, bottom-right): to-top 20 → contact 80 → chat (lws) 140.
3467 * Badge must sit above the chat button (~196px from bottom).
3468 */
3469(() => {
3470  const DESKTOP_BOTTOM = '220px';
3471  // Mobil: über Chat + Kontakt (gestapelt) mit kleinem Luftspalt
3472  const MOBILE_BOTTOM = '150px';
3473  const mq = window.matchMedia('(max-width: 1024px)');
3474  let applying = false;
3475  const desiredBottom = () => mq.matches ? MOBILE_BOTTOM : DESKTOP_BOTTOM;
3476  const findFloatingWrappers = () => {
3477    const found = new Set();
3478    document.querySelectorAll('[data-testid="minimized-trustbadge-floating"]').forEach(btn => {
3479      let el = btn.parentElement;
3480      while (el && el !== document.body) {
3481        if (window.getComputedStyle(el).position === 'fixed') {
3482          found.add(el);
3483          break;
3484        }
3485        el = el.parentElement;
3486      }
3487    });
3488
3489    // Fallback: sized fixed descendants of the classic container id.
3490    document.querySelectorAll('[id^="trustbadge-container"]').forEach(container => {
3491      container.querySelectorAll('*').forEach(el => {
3492        if (!(el instanceof HTMLElement)) {
3493          return;
3494        }
3495        const cs = window.getComputedStyle(el);
3496        if (cs.position === 'fixed' && el.offsetHeight > 20 && el.offsetWidth > 20) {
3497          found.add(el);
3498        }
3499      });
3500      // Legacy: container itself was the positioned node.
3501      const cs = window.getComputedStyle(container);
3502      if (cs.position === 'fixed' && container.offsetHeight > 20) {
3503        found.add(container);
3504      }
3505    });
3506    return [...found];
3507  };
3508  const apply = el => {
3509    if (!(el instanceof HTMLElement)) {
3510      return;
3511    }
3512    const bottom = desiredBottom();
3513    if (el.style.getPropertyValue('bottom') === bottom && el.style.getPropertyPriority('bottom') === 'important' && el.style.getPropertyValue('top') === 'auto') {
3514      return;
3515    }
3516    applying = true;
3517    // TS often sets both `top` and `bottom`; clear top so bottom wins.
3518    el.style.setProperty('top', 'auto', 'important');
3519    el.style.setProperty('bottom', bottom, 'important');
3520    applying = false;
3521  };
3522  const applyAll = () => {
3523    findFloatingWrappers().forEach(apply);
3524  };
3525  const observer = new MutationObserver(() => {
3526    if (applying) {
3527      return;
3528    }
3529    applyAll();
3530  });
3531  const hideOnProduct = () => {
3532    findFloatingWrappers().forEach(el => {
3533      if (!(el instanceof HTMLElement)) {
3534        return;
3535      }
3536      el.style.setProperty('display', 'none', 'important');
3537      el.style.setProperty('visibility', 'hidden', 'important');
3538      el.style.setProperty('pointer-events', 'none', 'important');
3539    });
3540  };
3541  const start = () => {
3542    // Produktseiten: Badge komplett unterdrücken (nicht nur verschieben).
3543    if (document.body.classList.contains('single-product')) {
3544      hideOnProduct();
3545      const productObserver = new MutationObserver(hideOnProduct);
3546      productObserver.observe(document.documentElement, {
3547        childList: true,
3548        subtree: true
3549      });
3550      [300, 1000, 2500, 5000].forEach(ms => {
3551        window.setTimeout(hideOnProduct, ms);
3552      });
3553      return;
3554    }
3555    applyAll();
3556    observer.observe(document.documentElement, {
3557      childList: true,
3558      subtree: true,
3559      attributes: true,
3560      attributeFilter: ['style', 'class']
3561    });
3562    if (typeof mq.addEventListener === 'function') {
3563      mq.addEventListener('change', applyAll);
3564    } else if (typeof mq.addListener === 'function') {
3565      mq.addListener(applyAll);
3566    }
3567    // TS mounts asynchronously and may reposition without style attrs.
3568    [300, 1000, 2500, 5000, 10000].forEach(ms => {
3569      window.setTimeout(applyAll, ms);
3570    });
3571    let ticks = 0;
3572    const timer = window.setInterval(() => {
3573      applyAll();
3574      ticks += 1;
3575      if (ticks >= 30) {
3576        window.clearInterval(timer);
3577      }
3578    }, 1000);
3579  };
3580  if (document.readyState === 'loading') {
3581    document.addEventListener('DOMContentLoaded', start);
3582  } else {
3583    start();
3584  }
3585})();
3586
3587/***/ }),
3588
3589/***/ "./assets/js/components/woocommerce.js":
3590/*!*********************************************!*\
3591  !*** ./assets/js/components/woocommerce.js ***!
3592  \*********************************************/
3593/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3594
3595"use strict";
3596__webpack_require__.r(__webpack_exports__);
3597/* harmony import */ var _functions_throttle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../functions/throttle */ "./assets/js/functions/throttle.js");
3598/* harmony import */ var swiper_bundle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/bundle */ "./node_modules/swiper/swiper-bundle.esm.js");
3599
3600 // import Swiper bundle with all modules installed
3601// available Swiper.js 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]
3602
3603jQuery(document).ready(function ($) {
3604  "use strict";
3605
3606  /**
3607   * Select2
3608   */
3609  if ($('body').hasClass('woocommerce-account')) {
3610    $('.woocommerce-MyAccount-content select, .woocommerce-form select').select2();
3611  }
3612
3613  /**
3614   * Product quantity update
3615   */
3616  $(document).on('click', '.quantity button.btn-qty__plus, .quantity button.btn-qty__minus', function () {
3617    var that = $(this);
3618    updateProductQty(that);
3619    $('button[name="update_cart"]').removeAttr('disabled').attr('aria-disabled', 'false');
3620  });
3621  $(document).on('keyup', '.quantity .qty', function () {
3622    var that = $(this);
3623    updateProductQty(that);
3624    $('button[name="update_cart"]').removeAttr('disabled').attr('aria-disabled', 'false');
3625  });
3626  const qtyFields = $('.quantity .qty');
3627  if (qtyFields.length) {
3628    qtyFields.each(function () {
3629      updateProductQty($(this));
3630    });
3631  }
3632  function updateProductQty(that) {
3633    // Get current quantity values
3634    const max = 9999,
3635      min = 1,
3636      step = 1;
3637    let qty = that.closest('.quantity').find('.qty'),
3638      val = parseFloat(qty.val()),
3639      totalQty = val;
3640
3641    // Change the value if plus or minus
3642    if (that.is('.btn-qty__plus')) {
3643      if (max && max <= val) {
3644        qty.val(max);
3645        totalQty = max;
3646      } else {
3647        qty.val(val + step);
3648        totalQty = val + step;
3649      }
3650    } else if (that.is('.btn-qty__minus')) {
3651      if (min && min >= val) {
3652        qty.val(min);
3653        totalQty = min;
3654      } else if (val > 1) {
3655        qty.val(val - step);
3656        totalQty = val - step;
3657      }
3658    }
3659    if (1 === totalQty) {
3660      that.closest('.quantity').find('.btn-qty__minus').addClass('disabled');
3661    } else {
3662      that.closest('.quantity').find('.btn-qty__minus').removeClass('disabled');
3663    }
3664  }
3665
3666  // hide both slider arrows if they are not needed
3667  function toggleSliderButtons(slider) {
3668    const disabledButtons = slider.querySelectorAll('.swiper-button-disabled');
3669    if (disabledButtons.length === 2) {
3670      disabledButtons.forEach(el => el.classList.add('d-none'));
3671    } else {
3672      slider.querySelectorAll('.swiper-button-prev, .swiper-button-next').forEach(el => el.classList.remove('d-none'));
3673    }
3674  }
3675
3676  /**
3677   * Slider Product Thumbnails
3678   */
3679  const sliderProductThumbs = document.querySelector('.swiper-product-thumbs'),
3680    sliderProductImage = document.querySelector('.swiper-product-image');
3681  let swiperProductThumbs, swiperProductImage;
3682  if (sliderProductImage) {
3683    swiperProductThumbs = new swiper_bundle__WEBPACK_IMPORTED_MODULE_1__["default"](sliderProductThumbs, {
3684      spaceBetween: 10,
3685      slidesPerView: 3,
3686      threshold: 10,
3687      direction: 'vertical',
3688      on: {
3689        init: function () {
3690          sliderProductThumbs.dataset.slides = sliderProductThumbs.querySelectorAll('.swiper-slide').length;
3691          toggleSliderButtons(sliderProductThumbs);
3692        },
3693        // lazy load images
3694        slideChange: function () {
3695          try {
3696            lazyLoadInstance.update();
3697          } catch (e) {}
3698        }
3699      }
3700    });
3701    swiperProductImage = new swiper_bundle__WEBPACK_IMPORTED_MODULE_1__["default"](sliderProductImage, {
3702      spaceBetween: 10,
3703      watchSlidesProgress: false,
3704      navigation: {
3705        nextEl: sliderProductImage.closest('.woocommerce-product-gallery').querySelector('.swiper-button-next'),
3706        prevEl: sliderProductImage.closest('.woocommerce-product-gallery').querySelector('.swiper-button-prev')
3707      },
3708      thumbs: {
3709        swiper: swiperProductThumbs,
3710        autoScrollOffset: 0
3711      },
3712      on: {
3713        init: function () {
3714          sliderProductImage.dataset.slides = sliderProductImage.querySelectorAll('.swiper-slide').length;
3715          swiperProductThumbs.update();
3716        },
3717        // lazy load images
3718        slideChange: function () {
3719          try {
3720            lazyLoadInstance.update();
3721          } catch (e) {}
3722        }
3723      }
3724    });
3725  }
3726
3727  /**
3728   * Init Woocommerce zoom on the custom product images
3729   */
3730  /**
3731   * Init Woocommerce zoom on the custom product images
3732   */
3733  if ($('body').hasClass('single-product') && wc_single_product_params.zoom_enabled) {
3734    $('.swiper-product-image .c-image').each(function () {
3735      const el = $(this);
3736      el.zoom({
3737        url: el.attr('href')
3738      });
3739    });
3740  }
3741
3742  /**
3743   * Slider Products (upsells, related, etc)
3744   */
3745  document.querySelectorAll('.swiper-products').forEach(slider => {
3746    const swiper = new swiper_bundle__WEBPACK_IMPORTED_MODULE_1__["default"](slider, {
3747      spaceBetween: 10,
3748      breakpoints: {
3749        576: {
3750          slidesPerView: 2,
3751          spaceBetween: 20
3752        },
3753        768: {
3754          slidesPerView: 3,
3755          spaceBetween: 30
3756        },
3757        1025: {
3758          slidesPerView: 4
3759        }
3760      },
3761      pagination: {
3762        el: slider.querySelector('.swiper-pagination'),
3763        clickable: true
3764      },
3765      navigation: {
3766        nextEl: slider.querySelector('.swiper-button-next'),
3767        prevEl: slider.querySelector('.swiper-button-prev')
3768      },
3769      on: {
3770        init: function () {
3771          slider.dataset.slides = slider.querySelectorAll('.swiper-slide').length;
3772          toggleSliderButtons(slider);
3773        },
3774        // lazy load images
3775        slideChange: function () {
3776          try {
3777            lazyLoadInstance.update();
3778          } catch (e) {}
3779        }
3780      }
3781    });
3782  });
3783  window.addEventListener('resize', () => {
3784    document.querySelectorAll('.swiper').forEach(slider => (0,_functions_throttle__WEBPACK_IMPORTED_MODULE_0__.throttle)(toggleSliderButtons(slider)));
3785  });
3786
3787  /**
3788   * Single Product Variation Change
3789   */
3790  if ($('form.variations_form').length) {
3791    const firstSlide = swiperProductImage.slides[0],
3792      firstSlideThumbs = swiperProductThumbs.slides[0],
3793      firstSlideOriginal = {
3794        dataImageId: firstSlide.getAttribute('data-image-id'),
3795        href: firstSlide.querySelector('a').getAttribute('href'),
3796        src: firstSlide.querySelector('img').getAttribute('src'),
3797        srcset: firstSlide.querySelector('img').getAttribute('srcset')
3798      };
3799    function resetFirstSlideToOriginal() {
3800      // slider product image:
3801      firstSlide.setAttribute('data-image-id', firstSlideOriginal.dataImageId);
3802      firstSlide.querySelector('a').setAttribute('href', firstSlideOriginal.href);
3803      firstSlide.querySelector('img').setAttribute('src', firstSlideOriginal.src);
3804      firstSlide.querySelector('img').setAttribute('srcset', firstSlideOriginal.srcset);
3805
3806      // slider product thumbnails:
3807      firstSlideThumbs.setAttribute('data-image-id', firstSlideOriginal.dataImageId);
3808      firstSlideThumbs.querySelector('img').setAttribute('src', firstSlideOriginal.src);
3809      firstSlideThumbs.querySelector('img').setAttribute('srcset', firstSlideOriginal.srcset);
3810    }
3811    $('input.variation_id').on('change', function () {
3812      if ('' !== $(this).val()) {
3813        const varID = $(this).val(),
3814          variations = JSON.parse($('form.variations_form').attr('data-product_variations')),
3815          filteredData = variations.filter(i => i.variation_id == varID);
3816        if (Object.keys(filteredData).length !== 0) {
3817          let imgID = null;
3818          const varObj = filteredData[0];
3819          imgID = varObj.image_id;
3820          const slides = swiperProductImage.slides;
3821          let slideIndexGoTo = 0;
3822          slides.forEach((slide, i) => {
3823            if (slide.dataset.imageId == imgID) {
3824              slideIndexGoTo = i;
3825            }
3826          });
3827          if (slideIndexGoTo === 0) {
3828            // slider product image:
3829            firstSlide.setAttribute('data-image-id', imgID);
3830            firstSlide.querySelector('a').setAttribute('href', varObj.image.url);
3831            firstSlide.querySelector('img').setAttribute('src', varObj.image.src);
3832            firstSlide.querySelector('img').setAttribute('srcset', varObj.image.srcset);
3833
3834            // slider product thumbnails:
3835            firstSlideThumbs.setAttribute('data-image-id', imgID);
3836            firstSlideThumbs.querySelector('img').setAttribute('src', varObj.image.thumb_src);
3837            firstSlideThumbs.querySelector('img').setAttribute('srcset', varObj.image.srcset);
3838          }
3839
3840          // change active slide
3841          swiperProductImage.slideTo(slideIndexGoTo);
3842        }
3843      } else {
3844        resetFirstSlideToOriginal();
3845      }
3846    });
3847
3848    // reset variations
3849    $('.reset_variations').on('click', function (e) {
3850      $('.variations_form select').val('').niceSelect('update');
3851      if (firstSlide.getAttribute('data-image-id') !== firstSlideOriginal.dataImageId) {
3852        resetFirstSlideToOriginal();
3853      }
3854    });
3855  }
3856
3857  /**
3858   * Cart page
3859   */
3860  $(document).on('added_to_cart removed_from_cart updated_cart_totals updated_checkout', function () {
3861    try {
3862      lazyLoadInstance.update();
3863    } catch (e) {}
3864  });
3865
3866  /**
3867   * Checkout product accordion
3868   */
3869  $(document).on('click', '.let-checkout-item__header', function (e) {
3870    e.preventDefault();
3871    const $item = $(this).closest('.let-checkout-item');
3872    const isOpen = $item.hasClass('is-open');
3873
3874    // Close all other items
3875    $('.let-checkout-item.is-open').not($item).each(function () {
3876      $(this).removeClass('is-open');
3877      $(this).find('.let-checkout-item__header').attr('aria-expanded', 'false');
3878    });
3879
3880    // Toggle current item
3881    if (isOpen) {
3882      $item.removeClass('is-open');
3883      $(this).attr('aria-expanded', 'false');
3884    } else {
3885      $item.addClass('is-open');
3886      $(this).attr('aria-expanded', 'true');
3887    }
3888  });
3889});
3890
3891/***/ }),
3892
3893/***/ "./assets/js/functions/throttle.js":
3894/*!*****************************************!*\
3895  !*** ./assets/js/functions/throttle.js ***!
3896  \*****************************************/
3897/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3898
3899"use strict";
3900__webpack_require__.r(__webpack_exports__);
3901/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3902/* harmony export */   throttle: function() { return /* binding */ throttle; }
3903/* harmony export */ });
3904/**
3905 * Throttle helper function
3906 * @param func
3907 * @param delay
3908 * @returns {(function(...[*]): void)|*}
3909 */
3910
3911// usage example:
3912// let f = throttle(custom_function);
3913// window.addEventListener('resize', f);
3914
3915const throttle = (func, delay = 250) => {
3916  let isThrottled = false;
3917  let savedArgs = null;
3918  let savedThis = null;
3919  return function wrap(...args) {
3920    if (isThrottled) {
3921      savedArgs = args, savedThis = this;
3922      return;
3923    }
3924    func.apply(this, args);
3925    isThrottled = true;
3926    setTimeout(() => {
3927      isThrottled = false;
3928      if (savedThis) {
3929        wrap.apply(savedThis, savedArgs);
3930        savedThis = null;
3931        savedArgs = null;
3932      }
3933    }, delay);
3934  };
3935};
3936
3937/***/ }),
3938
3939/***/ "./assets/js/vendors/jquery.nice-select.min.js":
3940/*!*****************************************************!*\
3941  !*** ./assets/js/vendors/jquery.nice-select.min.js ***!
3942  \*****************************************************/
3943/***/ (function() {
3944
3945/*  jQuery Nice Select - v1.0
3946    https://github.com/hernansartorio/jquery-nice-select
3947    Made by Hernán Sartorio  */
3948!function (e) {
3949  e.fn.niceSelect = function (t) {
3950    function s(t) {
3951      t.after(e("<div></div>").addClass("nice-select").addClass(t.attr("class") || "").addClass(t.attr("disabled") ? "disabled" : "").attr("tabindex", t.attr("disabled") ? null : "0").html('<span class="current"></span><ul class="list"></ul>'));
3952      var s = t.next(),
3953        n = t.find("option"),
3954        i = t.find("option:selected");
3955      s.find(".current").html(i.data("display") || i.text()), n.each(function (t) {
3956        var n = e(this),
3957          i = n.data("display");
3958        s.find("ul").append(e("<li></li>").attr("data-value", n.val()).attr("data-display", i || null).addClass("option" + (n.is(":selected") ? " selected" : "") + (n.is(":disabled") ? " disabled" : "")).html(n.text()));
3959      });
3960    }
3961    if ("string" == typeof t) return "update" == t ? this.each(function () {
3962      var t = e(this),
3963        n = e(this).next(".nice-select"),
3964        i = n.hasClass("open");
3965      n.length && (n.remove(), s(t), i && t.next().trigger("click"));
3966    }) : "destroy" == t ? (this.each(function () {
3967      var t = e(this),
3968        s = e(this).next(".nice-select");
3969      s.length && (s.remove(), t.css("display", ""));
3970    }), 0 == e(".nice-select").length && e(document).off(".nice_select")) : console.log('Method "' + t + '" does not exist.'), this;
3971    this.hide(), this.each(function () {
3972      var t = e(this);
3973      t.next().hasClass("nice-select") || s(t);
3974    }), e(document).off(".nice_select"), e(document).on("click.nice_select", ".nice-select", function (t) {
3975      var s = e(this);
3976      e(".nice-select").not(s).removeClass("open"), s.toggleClass("open"), s.hasClass("open") ? (s.find(".option"), s.find(".focus").removeClass("focus"), s.find(".selected").addClass("focus")) : s.focus();
3977    }), e(document).on("click.nice_select", function (t) {
3978      0 === e(t.target).closest(".nice-select").length && e(".nice-select").removeClass("open").find(".option");
3979    }), e(document).on("click.nice_select", ".nice-select .option:not(.disabled)", function (t) {
3980      var s = e(this),
3981        n = s.closest(".nice-select");
3982      n.find(".selected").removeClass("selected"), s.addClass("selected");
3983      var i = s.data("display") || s.text();
3984      n.find(".current").text(i), n.prev("select").val(s.data("value")).trigger("change");
3985    }), e(document).on("keydown.nice_select", ".nice-select", function (t) {
3986      var s = e(this),
3987        n = e(s.find(".focus") || s.find(".list .option.selected"));
3988      if (32 == t.keyCode || 13 == t.keyCode) return s.hasClass("open") ? n.trigger("click") : s.trigger("click"), !1;
3989      if (40 == t.keyCode) {
3990        if (s.hasClass("open")) {
3991          var i = n.nextAll(".option:not(.disabled)").first();
3992          i.length > 0 && (s.find(".focus").removeClass("focus"), i.addClass("focus"));
3993        } else s.trigger("click");
3994        return !1;
3995      }
3996      if (38 == t.keyCode) {
3997        if (s.hasClass("open")) {
3998          var l = n.prevAll(".option:not(.disabled)").first();
3999          l.length > 0 && (s.find(".focus").removeClass("focus"), l.addClass("focus"));
4000        } else s.trigger("click");
4001        return !1;
4002      }
4003      if (27 == t.keyCode) s.hasClass("open") && s.trigger("click");else if (9 == t.keyCode && s.hasClass("open")) return !1;
4004    });
4005    var n = document.createElement("a").style;
4006    return n.cssText = "pointer-events:auto", "auto" !== n.pointerEvents && e("html").addClass("no-csspointerevents"), this;
4007  };
4008}(jQuery);
4009
4010/***/ }),
4011
vendor: 42,644 bytes, lines 4012-5609
4012/***/ "./node_modules/dom7/dom7.esm.js":
4013/*!***************************************!*\
4014  !*** ./node_modules/dom7/dom7.esm.js ***!
4015  \***************************************/
4016/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4017
4018"use strict";
4019__webpack_require__.r(__webpack_exports__);
4020/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4021/* harmony export */   $: function() { return /* binding */ $; },
4022/* harmony export */   add: function() { return /* binding */ add; },
4023/* harmony export */   addClass: function() { return /* binding */ addClass; },
4024/* harmony export */   animate: function() { return /* binding */ animate; },
4025/* harmony export */   animationEnd: function() { return /* binding */ animationEnd; },
4026/* harmony export */   append: function() { return /* binding */ append; },
4027/* harmony export */   appendTo: function() { return /* binding */ appendTo; },
4028/* harmony export */   attr: function() { return /* binding */ attr; },
4029/* harmony export */   blur: function() { return /* binding */ blur; },
4030/* harmony export */   change: function() { return /* binding */ change; },
4031/* harmony export */   children: function() { return /* binding */ children; },
4032/* harmony export */   click: function() { return /* binding */ click; },
4033/* harmony export */   closest: function() { return /* binding */ closest; },
4034/* harmony export */   css: function() { return /* binding */ css; },
4035/* harmony export */   data: function() { return /* binding */ data; },
4036/* harmony export */   dataset: function() { return /* binding */ dataset; },
4037/* harmony export */   detach: function() { return /* binding */ detach; },
4038/* harmony export */   each: function() { return /* binding */ each; },
4039/* harmony export */   empty: function() { return /* binding */ empty; },
4040/* harmony export */   eq: function() { return /* binding */ eq; },
4041/* harmony export */   filter: function() { return /* binding */ filter; },
4042/* harmony export */   find: function() { return /* binding */ find; },
4043/* harmony export */   focus: function() { return /* binding */ focus; },
4044/* harmony export */   focusin: function() { return /* binding */ focusin; },
4045/* harmony export */   focusout: function() { return /* binding */ focusout; },
4046/* harmony export */   hasClass: function() { return /* binding */ hasClass; },
4047/* harmony export */   height: function() { return /* binding */ height; },
4048/* harmony export */   hide: function() { return /* binding */ hide; },
4049/* harmony export */   html: function() { return /* binding */ html; },
4050/* harmony export */   index: function() { return /* binding */ index; },
4051/* harmony export */   insertAfter: function() { return /* binding */ insertAfter; },
4052/* harmony export */   insertBefore: function() { return /* binding */ insertBefore; },
4053/* harmony export */   is: function() { return /* binding */ is; },
4054/* harmony export */   keydown: function() { return /* binding */ keydown; },
4055/* harmony export */   keypress: function() { return /* binding */ keypress; },
4056/* harmony export */   keyup: function() { return /* binding */ keyup; },
4057/* harmony export */   mousedown: function() { return /* binding */ mousedown; },
4058/* harmony export */   mouseenter: function() { return /* binding */ mouseenter; },
4059/* harmony export */   mouseleave: function() { return /* binding */ mouseleave; },
4060/* harmony export */   mousemove: function() { return /* binding */ mousemove; },
4061/* harmony export */   mouseout: function() { return /* binding */ mouseout; },
4062/* harmony export */   mouseover: function() { return /* binding */ mouseover; },
4063/* harmony export */   mouseup: function() { return /* binding */ mouseup; },
4064/* harmony export */   next: function() { return /* binding */ next; },
4065/* harmony export */   nextAll: function() { return /* binding */ nextAll; },
4066/* harmony export */   off: function() { return /* binding */ off; },
4067/* harmony export */   offset: function() { return /* binding */ offset; },
4068/* harmony export */   on: function() { return /* binding */ on; },
4069/* harmony export */   once: function() { return /* binding */ once; },
4070/* harmony export */   outerHeight: function() { return /* binding */ outerHeight; },
4071/* harmony export */   outerWidth: function() { return /* binding */ outerWidth; },
4072/* harmony export */   parent: function() { return /* binding */ parent; },
4073/* harmony export */   parents: function() { return /* binding */ parents; },
4074/* harmony export */   prepend: function() { return /* binding */ prepend; },
4075/* harmony export */   prependTo: function() { return /* binding */ prependTo; },
4076/* harmony export */   prev: function() { return /* binding */ prev; },
4077/* harmony export */   prevAll: function() { return /* binding */ prevAll; },
4078/* harmony export */   prop: function() { return /* binding */ prop; },
4079/* harmony export */   remove: function() { return /* binding */ remove; },
4080/* harmony export */   removeAttr: function() { return /* binding */ removeAttr; },
4081/* harmony export */   removeClass: function() { return /* binding */ removeClass; },
4082/* harmony export */   removeData: function() { return /* binding */ removeData; },
4083/* harmony export */   resize: function() { return /* binding */ resize; },
4084/* harmony export */   scroll: function() { return /* binding */ scroll; },
4085/* harmony export */   scrollLeft: function() { return /* binding */ scrollLeft; },
4086/* harmony export */   scrollTo: function() { return /* binding */ scrollTo; },
4087/* harmony export */   scrollTop: function() { return /* binding */ scrollTop; },
4088/* harmony export */   show: function() { return /* binding */ show; },
4089/* harmony export */   siblings: function() { return /* binding */ siblings; },
4090/* harmony export */   stop: function() { return /* binding */ stop; },
4091/* harmony export */   styles: function() { return /* binding */ styles; },
4092/* harmony export */   submit: function() { return /* binding */ submit; },
4093/* harmony export */   text: function() { return /* binding */ text; },
4094/* harmony export */   toggleClass: function() { return /* binding */ toggleClass; },
4095/* harmony export */   touchend: function() { return /* binding */ touchend; },
4096/* harmony export */   touchmove: function() { return /* binding */ touchmove; },
4097/* harmony export */   touchstart: function() { return /* binding */ touchstart; },
4098/* harmony export */   transform: function() { return /* binding */ transform; },
4099/* harmony export */   transition: function() { return /* binding */ transition; },
4100/* harmony export */   transitionEnd: function() { return /* binding */ transitionEnd; },
4101/* harmony export */   transitionStart: function() { return /* binding */ transitionStart; },
4102/* harmony export */   trigger: function() { return /* binding */ trigger; },
4103/* harmony export */   val: function() { return /* binding */ val; },
4104/* harmony export */   value: function() { return /* binding */ value; },
4105/* harmony export */   width: function() { return /* binding */ width; }
4106/* harmony export */ });
4107/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
4108/**
4109 * Dom7 4.0.6
4110 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
4111 * https://framework7.io/docs/dom7.html
4112 *
4113 * Copyright 2023, Vladimir Kharlampidi
4114 *
4115 * Licensed under MIT
4116 *
4117 * Released on: February 2, 2023
4118 */
4119
4120
4121/* eslint-disable no-proto */
4122function makeReactive(obj) {
4123  const proto = obj.__proto__;
4124  Object.defineProperty(obj, '__proto__', {
4125    get() {
4126      return proto;
4127    },
4128
4129    set(value) {
4130      proto.__proto__ = value;
4131    }
4132
4133  });
4134}
4135
4136class Dom7 extends Array {
4137  constructor(items) {
4138    if (typeof items === 'number') {
4139      super(items);
4140    } else {
4141      super(...(items || []));
4142      makeReactive(this);
4143    }
4144  }
4145
4146}
4147
4148function arrayFlat(arr = []) {
4149  const res = [];
4150  arr.forEach(el => {
4151    if (Array.isArray(el)) {
4152      res.push(...arrayFlat(el));
4153    } else {
4154      res.push(el);
4155    }
4156  });
4157  return res;
4158}
4159function arrayFilter(arr, callback) {
4160  return Array.prototype.filter.call(arr, callback);
4161}
4162function arrayUnique(arr) {
4163  const uniqueArray = [];
4164
4165  for (let i = 0; i < arr.length; i += 1) {
4166    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
4167  }
4168
4169  return uniqueArray;
4170}
4171function toCamelCase(string) {
4172  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());
4173}
4174
4175// eslint-disable-next-line
4176
4177function qsa(selector, context) {
4178  if (typeof selector !== 'string') {
4179    return [selector];
4180  }
4181
4182  const a = [];
4183  const res = context.querySelectorAll(selector);
4184
4185  for (let i = 0; i < res.length; i += 1) {
4186    a.push(res[i]);
4187  }
4188
4189  return a;
4190}
4191
4192function $(selector, context) {
4193  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4194  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
4195  let arr = [];
4196
4197  if (!context && selector instanceof Dom7) {
4198    return selector;
4199  }
4200
4201  if (!selector) {
4202    return new Dom7(arr);
4203  }
4204
4205  if (typeof selector === 'string') {
4206    const html = selector.trim();
4207
4208    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
4209      let toCreate = 'div';
4210      if (html.indexOf('<li') === 0) toCreate = 'ul';
4211      if (html.indexOf('<tr') === 0) toCreate = 'tbody';
4212      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
4213      if (html.indexOf('<tbody') === 0) toCreate = 'table';
4214      if (html.indexOf('<option') === 0) toCreate = 'select';
4215      const tempParent = document.createElement(toCreate);
4216      tempParent.innerHTML = html;
4217
4218      for (let i = 0; i < tempParent.childNodes.length; i += 1) {
4219        arr.push(tempParent.childNodes[i]);
4220      }
4221    } else {
4222      arr = qsa(selector.trim(), context || document);
4223    } // arr = qsa(selector, document);
4224
4225  } else if (selector.nodeType || selector === window || selector === document) {
4226    arr.push(selector);
4227  } else if (Array.isArray(selector)) {
4228    if (selector instanceof Dom7) return selector;
4229    arr = selector;
4230  }
4231
4232  return new Dom7(arrayUnique(arr));
4233}
4234
4235$.fn = Dom7.prototype;
4236
4237// eslint-disable-next-line
4238
4239function addClass(...classes) {
4240  const classNames = arrayFlat(classes.map(c => c.split(' ')));
4241  this.forEach(el => {
4242    el.classList.add(...classNames);
4243  });
4244  return this;
4245}
4246
4247function removeClass(...classes) {
4248  const classNames = arrayFlat(classes.map(c => c.split(' ')));
4249  this.forEach(el => {
4250    el.classList.remove(...classNames);
4251  });
4252  return this;
4253}
4254
4255function toggleClass(...classes) {
4256  const classNames = arrayFlat(classes.map(c => c.split(' ')));
4257  this.forEach(el => {
4258    classNames.forEach(className => {
4259      el.classList.toggle(className);
4260    });
4261  });
4262}
4263
4264function hasClass(...classes) {
4265  const classNames = arrayFlat(classes.map(c => c.split(' ')));
4266  return arrayFilter(this, el => {
4267    return classNames.filter(className => el.classList.contains(className)).length > 0;
4268  }).length > 0;
4269}
4270
4271function attr(attrs, value) {
4272  if (arguments.length === 1 && typeof attrs === 'string') {
4273    // Get attr
4274    if (this[0]) return this[0].getAttribute(attrs);
4275    return undefined;
4276  } // Set attrs
4277
4278
4279  for (let i = 0; i < this.length; i += 1) {
4280    if (arguments.length === 2) {
4281      // String
4282      this[i].setAttribute(attrs, value);
4283    } else {
4284      // Object
4285      for (const attrName in attrs) {
4286        this[i][attrName] = attrs[attrName];
4287        this[i].setAttribute(attrName, attrs[attrName]);
4288      }
4289    }
4290  }
4291
4292  return this;
4293}
4294
4295function removeAttr(attr) {
4296  for (let i = 0; i < this.length; i += 1) {
4297    this[i].removeAttribute(attr);
4298  }
4299
4300  return this;
4301}
4302
4303function prop(props, value) {
4304  if (arguments.length === 1 && typeof props === 'string') {
4305    // Get prop
4306    if (this[0]) return this[0][props];
4307  } else {
4308    // Set props
4309    for (let i = 0; i < this.length; i += 1) {
4310      if (arguments.length === 2) {
4311        // String
4312        this[i][props] = value;
4313      } else {
4314        // Object
4315        for (const propName in props) {
4316          this[i][propName] = props[propName];
4317        }
4318      }
4319    }
4320
4321    return this;
4322  }
4323
4324  return this;
4325}
4326
4327function data(key, value) {
4328  let el;
4329
4330  if (typeof value === 'undefined') {
4331    el = this[0];
4332    if (!el) return undefined; // Get value
4333
4334    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {
4335      return el.dom7ElementDataStorage[key];
4336    }
4337
4338    const dataKey = el.getAttribute(`data-${key}`);
4339
4340    if (dataKey) {
4341      return dataKey;
4342    }
4343
4344    return undefined;
4345  } // Set value
4346
4347
4348  for (let i = 0; i < this.length; i += 1) {
4349    el = this[i];
4350    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
4351    el.dom7ElementDataStorage[key] = value;
4352  }
4353
4354  return this;
4355}
4356
4357function removeData(key) {
4358  for (let i = 0; i < this.length; i += 1) {
4359    const el = this[i];
4360
4361    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {
4362      el.dom7ElementDataStorage[key] = null;
4363      delete el.dom7ElementDataStorage[key];
4364    }
4365  }
4366}
4367
4368function dataset() {
4369  const el = this[0];
4370  if (!el) return undefined;
4371  const dataset = {}; // eslint-disable-line
4372
4373  if (el.dataset) {
4374    for (const dataKey in el.dataset) {
4375      dataset[dataKey] = el.dataset[dataKey];
4376    }
4377  } else {
4378    for (let i = 0; i < el.attributes.length; i += 1) {
4379      const attr = el.attributes[i];
4380
4381      if (attr.name.indexOf('data-') >= 0) {
4382        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;
4383      }
4384    }
4385  }
4386
4387  for (const key in dataset) {
4388    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;
4389  }
4390
4391  return dataset;
4392}
4393
4394function val(value) {
4395  if (typeof value === 'undefined') {
4396    // get value
4397    const el = this[0];
4398    if (!el) return undefined;
4399
4400    if (el.multiple && el.nodeName.toLowerCase() === 'select') {
4401      const values = [];
4402
4403      for (let i = 0; i < el.selectedOptions.length; i += 1) {
4404        values.push(el.selectedOptions[i].value);
4405      }
4406
4407      return values;
4408    }
4409
4410    return el.value;
4411  } // set value
4412
4413
4414  for (let i = 0; i < this.length; i += 1) {
4415    const el = this[i];
4416
4417    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {
4418      for (let j = 0; j < el.options.length; j += 1) {
4419        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;
4420      }
4421    } else {
4422      el.value = value;
4423    }
4424  }
4425
4426  return this;
4427}
4428
4429function value(value) {
4430  return this.val(value);
4431}
4432
4433function transform(transform) {
4434  for (let i = 0; i < this.length; i += 1) {
4435    this[i].style.transform = transform;
4436  }
4437
4438  return this;
4439}
4440
4441function transition(duration) {
4442  for (let i = 0; i < this.length; i += 1) {
4443    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;
4444  }
4445
4446  return this;
4447}
4448
4449function on(...args) {
4450  let [eventType, targetSelector, listener, capture] = args;
4451
4452  if (typeof args[1] === 'function') {
4453    [eventType, listener, capture] = args;
4454    targetSelector = undefined;
4455  }
4456
4457  if (!capture) capture = false;
4458
4459  function handleLiveEvent(e) {
4460    const target = e.target;
4461    if (!target) return;
4462    const eventData = e.target.dom7EventData || [];
4463
4464    if (eventData.indexOf(e) < 0) {
4465      eventData.unshift(e);
4466    }
4467
4468    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
4469      const parents = $(target).parents(); // eslint-disable-line
4470
4471      for (let k = 0; k < parents.length; k += 1) {
4472        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);
4473      }
4474    }
4475  }
4476
4477  function handleEvent(e) {
4478    const eventData = e && e.target ? e.target.dom7EventData || [] : [];
4479
4480    if (eventData.indexOf(e) < 0) {
4481      eventData.unshift(e);
4482    }
4483
4484    listener.apply(this, eventData);
4485  }
4486
4487  const events = eventType.split(' ');
4488  let j;
4489
4490  for (let i = 0; i < this.length; i += 1) {
4491    const el = this[i];
4492
4493    if (!targetSelector) {
4494      for (j = 0; j < events.length; j += 1) {
4495        const event = events[j];
4496        if (!el.dom7Listeners) el.dom7Listeners = {};
4497        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
4498        el.dom7Listeners[event].push({
4499          listener,
4500          proxyListener: handleEvent
4501        });
4502        el.addEventListener(event, handleEvent, capture);
4503      }
4504    } else {
4505      // Live events
4506      for (j = 0; j < events.length; j += 1) {
4507        const event = events[j];
4508        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
4509        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];
4510        el.dom7LiveListeners[event].push({
4511          listener,
4512          proxyListener: handleLiveEvent
4513        });
4514        el.addEventListener(event, handleLiveEvent, capture);
4515      }
4516    }
4517  }
4518
4519  return this;
4520}
4521
4522function off(...args) {
4523  let [eventType, targetSelector, listener, capture] = args;
4524
4525  if (typeof args[1] === 'function') {
4526    [eventType, listener, capture] = args;
4527    targetSelector = undefined;
4528  }
4529
4530  if (!capture) capture = false;
4531  const events = eventType.split(' ');
4532
4533  for (let i = 0; i < events.length; i += 1) {
4534    const event = events[i];
4535
4536    for (let j = 0; j < this.length; j += 1) {
4537      const el = this[j];
4538      let handlers;
4539
4540      if (!targetSelector && el.dom7Listeners) {
4541        handlers = el.dom7Listeners[event];
4542      } else if (targetSelector && el.dom7LiveListeners) {
4543        handlers = el.dom7LiveListeners[event];
4544      }
4545
4546      if (handlers && handlers.length) {
4547        for (let k = handlers.length - 1; k >= 0; k -= 1) {
4548          const handler = handlers[k];
4549
4550          if (listener && handler.listener === listener) {
4551            el.removeEventListener(event, handler.proxyListener, capture);
4552            handlers.splice(k, 1);
4553          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
4554            el.removeEventListener(event, handler.proxyListener, capture);
4555            handlers.splice(k, 1);
4556          } else if (!listener) {
4557            el.removeEventListener(event, handler.proxyListener, capture);
4558            handlers.splice(k, 1);
4559          }
4560        }
4561      }
4562    }
4563  }
4564
4565  return this;
4566}
4567
4568function once(...args) {
4569  const dom = this;
4570  let [eventName, targetSelector, listener, capture] = args;
4571
4572  if (typeof args[1] === 'function') {
4573    [eventName, listener, capture] = args;
4574    targetSelector = undefined;
4575  }
4576
4577  function onceHandler(...eventArgs) {
4578    listener.apply(this, eventArgs);
4579    dom.off(eventName, targetSelector, onceHandler, capture);
4580
4581    if (onceHandler.dom7proxy) {
4582      delete onceHandler.dom7proxy;
4583    }
4584  }
4585
4586  onceHandler.dom7proxy = listener;
4587  return dom.on(eventName, targetSelector, onceHandler, capture);
4588}
4589
4590function trigger(...args) {
4591  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4592  const events = args[0].split(' ');
4593  const eventData = args[1];
4594
4595  for (let i = 0; i < events.length; i += 1) {
4596    const event = events[i];
4597
4598    for (let j = 0; j < this.length; j += 1) {
4599      const el = this[j];
4600
4601      if (window.CustomEvent) {
4602        const evt = new window.CustomEvent(event, {
4603          detail: eventData,
4604          bubbles: true,
4605          cancelable: true
4606        });
4607        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);
4608        el.dispatchEvent(evt);
4609        el.dom7EventData = [];
4610        delete el.dom7EventData;
4611      }
4612    }
4613  }
4614
4615  return this;
4616}
4617
4618function transitionStart(callback) {
4619  const dom = this;
4620
4621  function fireCallBack(e) {
4622    if (e.target !== this) return;
4623    callback.call(this, e);
4624    dom.off('transitionstart', fireCallBack);
4625  }
4626
4627  if (callback) {
4628    dom.on('transitionstart', fireCallBack);
4629  }
4630
4631  return this;
4632}
4633
4634function transitionEnd(callback) {
4635  const dom = this;
4636
4637  function fireCallBack(e) {
4638    if (e.target !== this) return;
4639    callback.call(this, e);
4640    dom.off('transitionend', fireCallBack);
4641  }
4642
4643  if (callback) {
4644    dom.on('transitionend', fireCallBack);
4645  }
4646
4647  return this;
4648}
4649
4650function animationEnd(callback) {
4651  const dom = this;
4652
4653  function fireCallBack(e) {
4654    if (e.target !== this) return;
4655    callback.call(this, e);
4656    dom.off('animationend', fireCallBack);
4657  }
4658
4659  if (callback) {
4660    dom.on('animationend', fireCallBack);
4661  }
4662
4663  return this;
4664}
4665
4666function width() {
4667  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4668
4669  if (this[0] === window) {
4670    return window.innerWidth;
4671  }
4672
4673  if (this.length > 0) {
4674    return parseFloat(this.css('width'));
4675  }
4676
4677  return null;
4678}
4679
4680function outerWidth(includeMargins) {
4681  if (this.length > 0) {
4682    if (includeMargins) {
4683      const styles = this.styles();
4684      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
4685    }
4686
4687    return this[0].offsetWidth;
4688  }
4689
4690  return null;
4691}
4692
4693function height() {
4694  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4695
4696  if (this[0] === window) {
4697    return window.innerHeight;
4698  }
4699
4700  if (this.length > 0) {
4701    return parseFloat(this.css('height'));
4702  }
4703
4704  return null;
4705}
4706
4707function outerHeight(includeMargins) {
4708  if (this.length > 0) {
4709    if (includeMargins) {
4710      const styles = this.styles();
4711      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
4712    }
4713
4714    return this[0].offsetHeight;
4715  }
4716
4717  return null;
4718}
4719
4720function offset() {
4721  if (this.length > 0) {
4722    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4723    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
4724    const el = this[0];
4725    const box = el.getBoundingClientRect();
4726    const body = document.body;
4727    const clientTop = el.clientTop || body.clientTop || 0;
4728    const clientLeft = el.clientLeft || body.clientLeft || 0;
4729    const scrollTop = el === window ? window.scrollY : el.scrollTop;
4730    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
4731    return {
4732      top: box.top + scrollTop - clientTop,
4733      left: box.left + scrollLeft - clientLeft
4734    };
4735  }
4736
4737  return null;
4738}
4739
4740function hide() {
4741  for (let i = 0; i < this.length; i += 1) {
4742    this[i].style.display = 'none';
4743  }
4744
4745  return this;
4746}
4747
4748function show() {
4749  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4750
4751  for (let i = 0; i < this.length; i += 1) {
4752    const el = this[i];
4753
4754    if (el.style.display === 'none') {
4755      el.style.display = '';
4756    }
4757
4758    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {
4759      // Still not visible
4760      el.style.display = 'block';
4761    }
4762  }
4763
4764  return this;
4765}
4766
4767function styles() {
4768  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4769  if (this[0]) return window.getComputedStyle(this[0], null);
4770  return {};
4771}
4772
4773function css(props, value) {
4774  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4775  let i;
4776
4777  if (arguments.length === 1) {
4778    if (typeof props === 'string') {
4779      // .css('width')
4780      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
4781    } else {
4782      // .css({ width: '100px' })
4783      for (i = 0; i < this.length; i += 1) {
4784        for (const prop in props) {
4785          this[i].style[prop] = props[prop];
4786        }
4787      }
4788
4789      return this;
4790    }
4791  }
4792
4793  if (arguments.length === 2 && typeof props === 'string') {
4794    // .css('width', '100px')
4795    for (i = 0; i < this.length; i += 1) {
4796      this[i].style[props] = value;
4797    }
4798
4799    return this;
4800  }
4801
4802  return this;
4803}
4804
4805function each(callback) {
4806  if (!callback) return this;
4807  this.forEach((el, index) => {
4808    callback.apply(el, [el, index]);
4809  });
4810  return this;
4811}
4812
4813function filter(callback) {
4814  const result = arrayFilter(this, callback);
4815  return $(result);
4816}
4817
4818function html(html) {
4819  if (typeof html === 'undefined') {
4820    return this[0] ? this[0].innerHTML : null;
4821  }
4822
4823  for (let i = 0; i < this.length; i += 1) {
4824    this[i].innerHTML = html;
4825  }
4826
4827  return this;
4828}
4829
4830function text(text) {
4831  if (typeof text === 'undefined') {
4832    return this[0] ? this[0].textContent.trim() : null;
4833  }
4834
4835  for (let i = 0; i < this.length; i += 1) {
4836    this[i].textContent = text;
4837  }
4838
4839  return this;
4840}
4841
4842function is(selector) {
4843  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4844  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
4845  const el = this[0];
4846  let compareWith;
4847  let i;
4848  if (!el || typeof selector === 'undefined') return false;
4849
4850  if (typeof selector === 'string') {
4851    if (el.matches) return el.matches(selector);
4852    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
4853    if (el.msMatchesSelector) return el.msMatchesSelector(selector);
4854    compareWith = $(selector);
4855
4856    for (i = 0; i < compareWith.length; i += 1) {
4857      if (compareWith[i] === el) return true;
4858    }
4859
4860    return false;
4861  }
4862
4863  if (selector === document) {
4864    return el === document;
4865  }
4866
4867  if (selector === window) {
4868    return el === window;
4869  }
4870
4871  if (selector.nodeType || selector instanceof Dom7) {
4872    compareWith = selector.nodeType ? [selector] : selector;
4873
4874    for (i = 0; i < compareWith.length; i += 1) {
4875      if (compareWith[i] === el) return true;
4876    }
4877
4878    return false;
4879  }
4880
4881  return false;
4882}
4883
4884function index() {
4885  let child = this[0];
4886  let i;
4887
4888  if (child) {
4889    i = 0; // eslint-disable-next-line
4890
4891    while ((child = child.previousSibling) !== null) {
4892      if (child.nodeType === 1) i += 1;
4893    }
4894
4895    return i;
4896  }
4897
4898  return undefined;
4899}
4900
4901function eq(index) {
4902  if (typeof index === 'undefined') return this;
4903  const length = this.length;
4904
4905  if (index > length - 1) {
4906    return $([]);
4907  }
4908
4909  if (index < 0) {
4910    const returnIndex = length + index;
4911    if (returnIndex < 0) return $([]);
4912    return $([this[returnIndex]]);
4913  }
4914
4915  return $([this[index]]);
4916}
4917
4918function append(...els) {
4919  let newChild;
4920  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
4921
4922  for (let k = 0; k < els.length; k += 1) {
4923    newChild = els[k];
4924
4925    for (let i = 0; i < this.length; i += 1) {
4926      if (typeof newChild === 'string') {
4927        const tempDiv = document.createElement('div');
4928        tempDiv.innerHTML = newChild;
4929
4930        while (tempDiv.firstChild) {
4931          this[i].appendChild(tempDiv.firstChild);
4932        }
4933      } else if (newChild instanceof Dom7) {
4934        for (let j = 0; j < newChild.length; j += 1) {
4935          this[i].appendChild(newChild[j]);
4936        }
4937      } else {
4938        this[i].appendChild(newChild);
4939      }
4940    }
4941  }
4942
4943  return this;
4944}
4945
4946function appendTo(parent) {
4947  $(parent).append(this);
4948  return this;
4949}
4950
4951function prepend(newChild) {
4952  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
4953  let i;
4954  let j;
4955
4956  for (i = 0; i < this.length; i += 1) {
4957    if (typeof newChild === 'string') {
4958      const tempDiv = document.createElement('div');
4959      tempDiv.innerHTML = newChild;
4960
4961      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
4962        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
4963      }
4964    } else if (newChild instanceof Dom7) {
4965      for (j = 0; j < newChild.length; j += 1) {
4966        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
4967      }
4968    } else {
4969      this[i].insertBefore(newChild, this[i].childNodes[0]);
4970    }
4971  }
4972
4973  return this;
4974}
4975
4976function prependTo(parent) {
4977  $(parent).prepend(this);
4978  return this;
4979}
4980
4981function insertBefore(selector) {
4982  const before = $(selector);
4983
4984  for (let i = 0; i < this.length; i += 1) {
4985    if (before.length === 1) {
4986      before[0].parentNode.insertBefore(this[i], before[0]);
4987    } else if (before.length > 1) {
4988      for (let j = 0; j < before.length; j += 1) {
4989        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);
4990      }
4991    }
4992  }
4993}
4994
4995function insertAfter(selector) {
4996  const after = $(selector);
4997
4998  for (let i = 0; i < this.length; i += 1) {
4999    if (after.length === 1) {
5000      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);
5001    } else if (after.length > 1) {
5002      for (let j = 0; j < after.length; j += 1) {
5003        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);
5004      }
5005    }
5006  }
5007}
5008
5009function next(selector) {
5010  if (this.length > 0) {
5011    if (selector) {
5012      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
5013        return $([this[0].nextElementSibling]);
5014      }
5015
5016      return $([]);
5017    }
5018
5019    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);
5020    return $([]);
5021  }
5022
5023  return $([]);
5024}
5025
5026function nextAll(selector) {
5027  const nextEls = [];
5028  let el = this[0];
5029  if (!el) return $([]);
5030
5031  while (el.nextElementSibling) {
5032    const next = el.nextElementSibling; // eslint-disable-line
5033
5034    if (selector) {
5035      if ($(next).is(selector)) nextEls.push(next);
5036    } else nextEls.push(next);
5037
5038    el = next;
5039  }
5040
5041  return $(nextEls);
5042}
5043
5044function prev(selector) {
5045  if (this.length > 0) {
5046    const el = this[0];
5047
5048    if (selector) {
5049      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
5050        return $([el.previousElementSibling]);
5051      }
5052
5053      return $([]);
5054    }
5055
5056    if (el.previousElementSibling) return $([el.previousElementSibling]);
5057    return $([]);
5058  }
5059
5060  return $([]);
5061}
5062
5063function prevAll(selector) {
5064  const prevEls = [];
5065  let el = this[0];
5066  if (!el) return $([]);
5067
5068  while (el.previousElementSibling) {
5069    const prev = el.previousElementSibling; // eslint-disable-line
5070
5071    if (selector) {
5072      if ($(prev).is(selector)) prevEls.push(prev);
5073    } else prevEls.push(prev);
5074
5075    el = prev;
5076  }
5077
5078  return $(prevEls);
5079}
5080
5081function siblings(selector) {
5082  return this.nextAll(selector).add(this.prevAll(selector));
5083}
5084
5085function parent(selector) {
5086  const parents = []; // eslint-disable-line
5087
5088  for (let i = 0; i < this.length; i += 1) {
5089    if (this[i].parentNode !== null) {
5090      if (selector) {
5091        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
5092      } else {
5093        parents.push(this[i].parentNode);
5094      }
5095    }
5096  }
5097
5098  return $(parents);
5099}
5100
5101function parents(selector) {
5102  const parents = []; // eslint-disable-line
5103
5104  for (let i = 0; i < this.length; i += 1) {
5105    let parent = this[i].parentNode; // eslint-disable-line
5106
5107    while (parent) {
5108      if (selector) {
5109        if ($(parent).is(selector)) parents.push(parent);
5110      } else {
5111        parents.push(parent);
5112      }
5113
5114      parent = parent.parentNode;
5115    }
5116  }
5117
5118  return $(parents);
5119}
5120
5121function closest(selector) {
5122  let closest = this; // eslint-disable-line
5123
5124  if (typeof selector === 'undefined') {
5125    return $([]);
5126  }
5127
5128  if (!closest.is(selector)) {
5129    closest = closest.parents(selector).eq(0);
5130  }
5131
5132  return closest;
5133}
5134
5135function find(selector) {
5136  const foundElements = [];
5137
5138  for (let i = 0; i < this.length; i += 1) {
5139    const found = this[i].querySelectorAll(selector);
5140
5141    for (let j = 0; j < found.length; j += 1) {
5142      foundElements.push(found[j]);
5143    }
5144  }
5145
5146  return $(foundElements);
5147}
5148
5149function children(selector) {
5150  const children = []; // eslint-disable-line
5151
5152  for (let i = 0; i < this.length; i += 1) {
5153    const childNodes = this[i].children;
5154
5155    for (let j = 0; j < childNodes.length; j += 1) {
5156      if (!selector || $(childNodes[j]).is(selector)) {
5157        children.push(childNodes[j]);
5158      }
5159    }
5160  }
5161
5162  return $(children);
5163}
5164
5165function remove() {
5166  for (let i = 0; i < this.length; i += 1) {
5167    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
5168  }
5169
5170  return this;
5171}
5172
5173function detach() {
5174  return this.remove();
5175}
5176
5177function add(...els) {
5178  const dom = this;
5179  let i;
5180  let j;
5181
5182  for (i = 0; i < els.length; i += 1) {
5183    const toAdd = $(els[i]);
5184
5185    for (j = 0; j < toAdd.length; j += 1) {
5186      dom.push(toAdd[j]);
5187    }
5188  }
5189
5190  return dom;
5191}
5192
5193function empty() {
5194  for (let i = 0; i < this.length; i += 1) {
5195    const el = this[i];
5196
5197    if (el.nodeType === 1) {
5198      for (let j = 0; j < el.childNodes.length; j += 1) {
5199        if (el.childNodes[j].parentNode) {
5200          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);
5201        }
5202      }
5203
5204      el.textContent = '';
5205    }
5206  }
5207
5208  return this;
5209}
5210
5211// eslint-disable-next-line
5212
5213function scrollTo(...args) {
5214  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
5215  let [left, top, duration, easing, callback] = args;
5216
5217  if (args.length === 4 && typeof easing === 'function') {
5218    callback = easing;
5219    [left, top, duration, callback, easing] = args;
5220  }
5221
5222  if (typeof easing === 'undefined') easing = 'swing';
5223  return this.each(function animate() {
5224    const el = this;
5225    let currentTop;
5226    let currentLeft;
5227    let maxTop;
5228    let maxLeft;
5229    let newTop;
5230    let newLeft;
5231    let scrollTop; // eslint-disable-line
5232
5233    let scrollLeft; // eslint-disable-line
5234
5235    let animateTop = top > 0 || top === 0;
5236    let animateLeft = left > 0 || left === 0;
5237
5238    if (typeof easing === 'undefined') {
5239      easing = 'swing';
5240    }
5241
5242    if (animateTop) {
5243      currentTop = el.scrollTop;
5244
5245      if (!duration) {
5246        el.scrollTop = top;
5247      }
5248    }
5249
5250    if (animateLeft) {
5251      currentLeft = el.scrollLeft;
5252
5253      if (!duration) {
5254        el.scrollLeft = left;
5255      }
5256    }
5257
5258    if (!duration) return;
5259
5260    if (animateTop) {
5261      maxTop = el.scrollHeight - el.offsetHeight;
5262      newTop = Math.max(Math.min(top, maxTop), 0);
5263    }
5264
5265    if (animateLeft) {
5266      maxLeft = el.scrollWidth - el.offsetWidth;
5267      newLeft = Math.max(Math.min(left, maxLeft), 0);
5268    }
5269
5270    let startTime = null;
5271    if (animateTop && newTop === currentTop) animateTop = false;
5272    if (animateLeft && newLeft === currentLeft) animateLeft = false;
5273
5274    function render(time = new Date().getTime()) {
5275      if (startTime === null) {
5276        startTime = time;
5277      }
5278
5279      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
5280      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;
5281      let done;
5282      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);
5283      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);
5284
5285      if (animateTop && newTop > currentTop && scrollTop >= newTop) {
5286        el.scrollTop = newTop;
5287        done = true;
5288      }
5289
5290      if (animateTop && newTop < currentTop && scrollTop <= newTop) {
5291        el.scrollTop = newTop;
5292        done = true;
5293      }
5294
5295      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {
5296        el.scrollLeft = newLeft;
5297        done = true;
5298      }
5299
5300      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {
5301        el.scrollLeft = newLeft;
5302        done = true;
5303      }
5304
5305      if (done) {
5306        if (callback) callback();
5307        return;
5308      }
5309
5310      if (animateTop) el.scrollTop = scrollTop;
5311      if (animateLeft) el.scrollLeft = scrollLeft;
5312      window.requestAnimationFrame(render);
5313    }
5314
5315    window.requestAnimationFrame(render);
5316  });
5317} // scrollTop(top, duration, easing, callback) {
5318
5319
5320function scrollTop(...args) {
5321  let [top, duration, easing, callback] = args;
5322
5323  if (args.length === 3 && typeof easing === 'function') {
5324    [top, duration, callback, easing] = args;
5325  }
5326
5327  const dom = this;
5328
5329  if (typeof top === 'undefined') {
5330    if (dom.length > 0) return dom[0].scrollTop;
5331    return null;
5332  }
5333
5334  return dom.scrollTo(undefined, top, duration, easing, callback);
5335}
5336
5337function scrollLeft(...args) {
5338  let [left, duration, easing, callback] = args;
5339
5340  if (args.length === 3 && typeof easing === 'function') {
5341    [left, duration, callback, easing] = args;
5342  }
5343
5344  const dom = this;
5345
5346  if (typeof left === 'undefined') {
5347    if (dom.length > 0) return dom[0].scrollLeft;
5348    return null;
5349  }
5350
5351  return dom.scrollTo(left, undefined, duration, easing, callback);
5352}
5353
5354// eslint-disable-next-line
5355
5356function animate(initialProps, initialParams) {
5357  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
5358  const els = this;
5359  const a = {
5360    props: Object.assign({}, initialProps),
5361    params: Object.assign({
5362      duration: 300,
5363      easing: 'swing' // or 'linear'
5364
5365      /* Callbacks
5366      begin(elements)
5367      complete(elements)
5368      progress(elements, complete, remaining, start, tweenValue)
5369      */
5370
5371    }, initialParams),
5372    elements: els,
5373    animating: false,
5374    que: [],
5375
5376    easingProgress(easing, progress) {
5377      if (easing === 'swing') {
5378        return 0.5 - Math.cos(progress * Math.PI) / 2;
5379      }
5380
5381      if (typeof easing === 'function') {
5382        return easing(progress);
5383      }
5384
5385      return progress;
5386    },
5387
5388    stop() {
5389      if (a.frameId) {
5390        window.cancelAnimationFrame(a.frameId);
5391      }
5392
5393      a.animating = false;
5394      a.elements.each(el => {
5395        const element = el;
5396        delete element.dom7AnimateInstance;
5397      });
5398      a.que = [];
5399    },
5400
5401    done(complete) {
5402      a.animating = false;
5403      a.elements.each(el => {
5404        const element = el;
5405        delete element.dom7AnimateInstance;
5406      });
5407      if (complete) complete(els);
5408
5409      if (a.que.length > 0) {
5410        const que = a.que.shift();
5411        a.animate(que[0], que[1]);
5412      }
5413    },
5414
5415    animate(props, params) {
5416      if (a.animating) {
5417        a.que.push([props, params]);
5418        return a;
5419      }
5420
5421      const elements = []; // Define & Cache Initials & Units
5422
5423      a.elements.each((el, index) => {
5424        let initialFullValue;
5425        let initialValue;
5426        let unit;
5427        let finalValue;
5428        let finalFullValue;
5429        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;
5430        elements[index] = {
5431          container: el
5432        };
5433        Object.keys(props).forEach(prop => {
5434          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');
5435          initialValue = parseFloat(initialFullValue);
5436          unit = initialFullValue.replace(initialValue, '');
5437          finalValue = parseFloat(props[prop]);
5438          finalFullValue = props[prop] + unit;
5439          elements[index][prop] = {
5440            initialFullValue,
5441            initialValue,
5442            unit,
5443            finalValue,
5444            finalFullValue,
5445            currentValue: initialValue
5446          };
5447        });
5448      });
5449      let startTime = null;
5450      let time;
5451      let elementsDone = 0;
5452      let propsDone = 0;
5453      let done;
5454      let began = false;
5455      a.animating = true;
5456
5457      function render() {
5458        time = new Date().getTime();
5459        let progress;
5460        let easeProgress; // let el;
5461
5462        if (!began) {
5463          began = true;
5464          if (params.begin) params.begin(els);
5465        }
5466
5467        if (startTime === null) {
5468          startTime = time;
5469        }
5470
5471        if (params.progress) {
5472          // eslint-disable-next-line
5473          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);
5474        }
5475
5476        elements.forEach(element => {
5477          const el = element;
5478          if (done || el.done) return;
5479          Object.keys(props).forEach(prop => {
5480            if (done || el.done) return;
5481            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);
5482            easeProgress = a.easingProgress(params.easing, progress);
5483            const {
5484              initialValue,
5485              finalValue,
5486              unit
5487            } = el[prop];
5488            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);
5489            const currentValue = el[prop].currentValue;
5490
5491            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {
5492              el.container.style[prop] = finalValue + unit;
5493              propsDone += 1;
5494
5495              if (propsDone === Object.keys(props).length) {
5496                el.done = true;
5497                elementsDone += 1;
5498              }
5499
5500              if (elementsDone === elements.length) {
5501                done = true;
5502              }
5503            }
5504
5505            if (done) {
5506              a.done(params.complete);
5507              return;
5508            }
5509
5510            el.container.style[prop] = currentValue + unit;
5511          });
5512        });
5513        if (done) return; // Then call
5514
5515        a.frameId = window.requestAnimationFrame(render);
5516      }
5517
5518      a.frameId = window.requestAnimationFrame(render);
5519      return a;
5520    }
5521
5522  };
5523
5524  if (a.elements.length === 0) {
5525    return els;
5526  }
5527
5528  let animateInstance;
5529
5530  for (let i = 0; i < a.elements.length; i += 1) {
5531    if (a.elements[i].dom7AnimateInstance) {
5532      animateInstance = a.elements[i].dom7AnimateInstance;
5533    } else a.elements[i].dom7AnimateInstance = a;
5534  }
5535
5536  if (!animateInstance) {
5537    animateInstance = a;
5538  }
5539
5540  if (initialProps === 'stop') {
5541    animateInstance.stop();
5542  } else {
5543    animateInstance.animate(a.props, a.params);
5544  }
5545
5546  return els;
5547}
5548
5549function stop() {
5550  const els = this;
5551
5552  for (let i = 0; i < els.length; i += 1) {
5553    if (els[i].dom7AnimateInstance) {
5554      els[i].dom7AnimateInstance.stop();
5555    }
5556  }
5557}
5558
5559const noTrigger = 'resize scroll'.split(' ');
5560
5561function shortcut(name) {
5562  function eventHandler(...args) {
5563    if (typeof args[0] === 'undefined') {
5564      for (let i = 0; i < this.length; i += 1) {
5565        if (noTrigger.indexOf(name) < 0) {
5566          if (name in this[i]) this[i][name]();else {
5567            $(this[i]).trigger(name);
5568          }
5569        }
5570      }
5571
5572      return this;
5573    }
5574
5575    return this.on(name, ...args);
5576  }
5577
5578  return eventHandler;
5579}
5580
5581const click = shortcut('click');
5582const blur = shortcut('blur');
5583const focus = shortcut('focus');
5584const focusin = shortcut('focusin');
5585const focusout = shortcut('focusout');
5586const keyup = shortcut('keyup');
5587const keydown = shortcut('keydown');
5588const keypress = shortcut('keypress');
5589const submit = shortcut('submit');
5590const change = shortcut('change');
5591const mousedown = shortcut('mousedown');
5592const mousemove = shortcut('mousemove');
5593const mouseup = shortcut('mouseup');
5594const mouseenter = shortcut('mouseenter');
5595const mouseleave = shortcut('mouseleave');
5596const mouseout = shortcut('mouseout');
5597const mouseover = shortcut('mouseover');
5598const touchstart = shortcut('touchstart');
5599const touchend = shortcut('touchend');
5600const touchmove = shortcut('touchmove');
5601const resize = shortcut('resize');
5602const scroll = shortcut('scroll');
5603
5604/* harmony default export */ __webpack_exports__["default"] = ($);
5605
5606
5607
5608/***/ }),
5609
vendor: 4,013 bytes, lines 5610-5776
5610/***/ "./node_modules/ssr-window/ssr-window.esm.js":
5611/*!***************************************************!*\
5612  !*** ./node_modules/ssr-window/ssr-window.esm.js ***!
5613  \***************************************************/
5614/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5615
5616"use strict";
5617__webpack_require__.r(__webpack_exports__);
5618/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5619/* harmony export */   extend: function() { return /* binding */ extend; },
5620/* harmony export */   getDocument: function() { return /* binding */ getDocument; },
5621/* harmony export */   getWindow: function() { return /* binding */ getWindow; },
5622/* harmony export */   ssrDocument: function() { return /* binding */ ssrDocument; },
5623/* harmony export */   ssrWindow: function() { return /* binding */ ssrWindow; }
5624/* harmony export */ });
5625/**
5626 * SSR Window 4.0.2
5627 * Better handling for window object in SSR environment
5628 * https://github.com/nolimits4web/ssr-window
5629 *
5630 * Copyright 2021, Vladimir Kharlampidi
5631 *
5632 * Licensed under MIT
5633 *
5634 * Released on: December 13, 2021
5635 */
5636/* eslint-disable no-param-reassign */
5637function isObject(obj) {
5638    return (obj !== null &&
5639        typeof obj === 'object' &&
5640        'constructor' in obj &&
5641        obj.constructor === Object);
5642}
5643function extend(target = {}, src = {}) {
5644    Object.keys(src).forEach((key) => {
5645        if (typeof target[key] === 'undefined')
5646            target[key] = src[key];
5647        else if (isObject(src[key]) &&
5648            isObject(target[key]) &&
5649            Object.keys(src[key]).length > 0) {
5650            extend(target[key], src[key]);
5651        }
5652    });
5653}
5654
5655const ssrDocument = {
5656    body: {},
5657    addEventListener() { },
5658    removeEventListener() { },
5659    activeElement: {
5660        blur() { },
5661        nodeName: '',
5662    },
5663    querySelector() {
5664        return null;
5665    },
5666    querySelectorAll() {
5667        return [];
5668    },
5669    getElementById() {
5670        return null;
5671    },
5672    createEvent() {
5673        return {
5674            initEvent() { },
5675        };
5676    },
5677    createElement() {
5678        return {
5679            children: [],
5680            childNodes: [],
5681            style: {},
5682            setAttribute() { },
5683            getElementsByTagName() {
5684                return [];
5685            },
5686        };
5687    },
5688    createElementNS() {
5689        return {};
5690    },
5691    importNode() {
5692        return null;
5693    },
5694    location: {
5695        hash: '',
5696        host: '',
5697        hostname: '',
5698        href: '',
5699        origin: '',
5700        pathname: '',
5701        protocol: '',
5702        search: '',
5703    },
5704};
5705function getDocument() {
5706    const doc = typeof document !== 'undefined' ? document : {};
5707    extend(doc, ssrDocument);
5708    return doc;
5709}
5710
5711const ssrWindow = {
5712    document: ssrDocument,
5713    navigator: {
5714        userAgent: '',
5715    },
5716    location: {
5717        hash: '',
5718        host: '',
5719        hostname: '',
5720        href: '',
5721        origin: '',
5722        pathname: '',
5723        protocol: '',
5724        search: '',
5725    },
5726    history: {
5727        replaceState() { },
5728        pushState() { },
5729        go() { },
5730        back() { },
5731    },
5732    CustomEvent: function CustomEvent() {
5733        return this;
5734    },
5735    addEventListener() { },
5736    removeEventListener() { },
5737    getComputedStyle() {
5738        return {
5739            getPropertyValue() {
5740                return '';
5741            },
5742        };
5743    },
5744    Image() { },
5745    Date() { },
5746    screen: {},
5747    setTimeout() { },
5748    clearTimeout() { },
5749    matchMedia() {
5750        return {};
5751    },
5752    requestAnimationFrame(callback) {
5753        if (typeof setTimeout === 'undefined') {
5754            callback();
5755            return null;
5756        }
5757        return setTimeout(callback, 0);
5758    },
5759    cancelAnimationFrame(id) {
5760        if (typeof setTimeout === 'undefined') {
5761            return;
5762        }
5763        clearTimeout(id);
5764    },
5765};
5766function getWindow() {
5767    const win = typeof window !== 'undefined' ? window : {};
5768    extend(win, ssrWindow);
5769    return win;
5770}
5771
5772
5773
5774
5775/***/ }),
5776
vendor: 1,872 bytes, lines 5777-5831
5777/***/ "./node_modules/swiper/core/breakpoints/getBreakpoint.js":
5778/*!***************************************************************!*\
5779  !*** ./node_modules/swiper/core/breakpoints/getBreakpoint.js ***!
5780  \***************************************************************/
5781/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5782
5783"use strict";
5784__webpack_require__.r(__webpack_exports__);
5785/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5786/* harmony export */   "default": function() { return /* binding */ getBreakpoint; }
5787/* harmony export */ });
5788/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
5789
5790function getBreakpoint(breakpoints, base = 'window', containerEl) {
5791  if (!breakpoints || base === 'container' && !containerEl) return undefined;
5792  let breakpoint = false;
5793  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
5794  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
5795  const points = Object.keys(breakpoints).map(point => {
5796    if (typeof point === 'string' && point.indexOf('@') === 0) {
5797      const minRatio = parseFloat(point.substr(1));
5798      const value = currentHeight * minRatio;
5799      return {
5800        value,
5801        point
5802      };
5803    }
5804
5805    return {
5806      value: point,
5807      point
5808    };
5809  });
5810  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
5811
5812  for (let i = 0; i < points.length; i += 1) {
5813    const {
5814      point,
5815      value
5816    } = points[i];
5817
5818    if (base === 'window') {
5819      if (window.matchMedia(`(min-width: ${value}px)`).matches) {
5820        breakpoint = point;
5821      }
5822    } else if (value <= containerEl.clientWidth) {
5823      breakpoint = point;
5824    }
5825  }
5826
5827  return breakpoint || 'max';
5828}
5829
5830/***/ }),
5831
vendor: 989 bytes, lines 5832-5850
5832/***/ "./node_modules/swiper/core/breakpoints/index.js":
5833/*!*******************************************************!*\
5834  !*** ./node_modules/swiper/core/breakpoints/index.js ***!
5835  \*******************************************************/
5836/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5837
5838"use strict";
5839__webpack_require__.r(__webpack_exports__);
5840/* harmony import */ var _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setBreakpoint.js */ "./node_modules/swiper/core/breakpoints/setBreakpoint.js");
5841/* harmony import */ var _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBreakpoint.js */ "./node_modules/swiper/core/breakpoints/getBreakpoint.js");
5842
5843
5844/* harmony default export */ __webpack_exports__["default"] = ({
5845  setBreakpoint: _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__["default"],
5846  getBreakpoint: _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__["default"]
5847});
5848
5849/***/ }),
5850
vendor: 3,771 bytes, lines 5851-5950
5851/***/ "./node_modules/swiper/core/breakpoints/setBreakpoint.js":
5852/*!***************************************************************!*\
5853  !*** ./node_modules/swiper/core/breakpoints/setBreakpoint.js ***!
5854  \***************************************************************/
5855/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5856
5857"use strict";
5858__webpack_require__.r(__webpack_exports__);
5859/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5860/* harmony export */   "default": function() { return /* binding */ setBreakpoint; }
5861/* harmony export */ });
5862/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
5863
5864
5865const isGridEnabled = (swiper, params) => {
5866  return swiper.grid && params.grid && params.grid.rows > 1;
5867};
5868
5869function setBreakpoint() {
5870  const swiper = this;
5871  const {
5872    activeIndex,
5873    initialized,
5874    loopedSlides = 0,
5875    params,
5876    $el
5877  } = swiper;
5878  const breakpoints = params.breakpoints;
5879  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
5880
5881  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
5882  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
5883  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
5884  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
5885  const wasMultiRow = isGridEnabled(swiper, params);
5886  const isMultiRow = isGridEnabled(swiper, breakpointParams);
5887  const wasEnabled = params.enabled;
5888
5889  if (wasMultiRow && !isMultiRow) {
5890    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);
5891    swiper.emitContainerClasses();
5892  } else if (!wasMultiRow && isMultiRow) {
5893    $el.addClass(`${params.containerModifierClass}grid`);
5894
5895    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
5896      $el.addClass(`${params.containerModifierClass}grid-column`);
5897    }
5898
5899    swiper.emitContainerClasses();
5900  } // Toggle navigation, pagination, scrollbar
5901
5902
5903  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
5904    const wasModuleEnabled = params[prop] && params[prop].enabled;
5905    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
5906
5907    if (wasModuleEnabled && !isModuleEnabled) {
5908      swiper[prop].disable();
5909    }
5910
5911    if (!wasModuleEnabled && isModuleEnabled) {
5912      swiper[prop].enable();
5913    }
5914  });
5915  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
5916  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
5917
5918  if (directionChanged && initialized) {
5919    swiper.changeDirection();
5920  }
5921
5922  (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(swiper.params, breakpointParams);
5923  const isEnabled = swiper.params.enabled;
5924  Object.assign(swiper, {
5925    allowTouchMove: swiper.params.allowTouchMove,
5926    allowSlideNext: swiper.params.allowSlideNext,
5927    allowSlidePrev: swiper.params.allowSlidePrev
5928  });
5929
5930  if (wasEnabled && !isEnabled) {
5931    swiper.disable();
5932  } else if (!wasEnabled && isEnabled) {
5933    swiper.enable();
5934  }
5935
5936  swiper.currentBreakpoint = breakpoint;
5937  swiper.emit('_beforeBreakpoint', breakpointParams);
5938
5939  if (needsReLoop && initialized) {
5940    swiper.loopDestroy();
5941    swiper.loopCreate();
5942    swiper.updateSlides();
5943    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
5944  }
5945
5946  swiper.emit('breakpoint', breakpointParams);
5947}
5948
5949/***/ }),
5950
vendor: 1,364 bytes, lines 5951-5999
5951/***/ "./node_modules/swiper/core/check-overflow/index.js":
5952/*!**********************************************************!*\
5953  !*** ./node_modules/swiper/core/check-overflow/index.js ***!
5954  \**********************************************************/
5955/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5956
5957"use strict";
5958__webpack_require__.r(__webpack_exports__);
5959function checkOverflow() {
5960  const swiper = this;
5961  const {
5962    isLocked: wasLocked,
5963    params
5964  } = swiper;
5965  const {
5966    slidesOffsetBefore
5967  } = params;
5968
5969  if (slidesOffsetBefore) {
5970    const lastSlideIndex = swiper.slides.length - 1;
5971    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
5972    swiper.isLocked = swiper.size > lastSlideRightEdge;
5973  } else {
5974    swiper.isLocked = swiper.snapGrid.length === 1;
5975  }
5976
5977  if (params.allowSlideNext === true) {
5978    swiper.allowSlideNext = !swiper.isLocked;
5979  }
5980
5981  if (params.allowSlidePrev === true) {
5982    swiper.allowSlidePrev = !swiper.isLocked;
5983  }
5984
5985  if (wasLocked && wasLocked !== swiper.isLocked) {
5986    swiper.isEnd = false;
5987  }
5988
5989  if (wasLocked !== swiper.isLocked) {
5990    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
5991  }
5992}
5993
5994/* harmony default export */ __webpack_exports__["default"] = ({
5995  checkOverflow
5996});
5997
5998/***/ }),
5999
vendor: 1,921 bytes, lines 6000-6067
6000/***/ "./node_modules/swiper/core/classes/addClasses.js":
6001/*!********************************************************!*\
6002  !*** ./node_modules/swiper/core/classes/addClasses.js ***!
6003  \********************************************************/
6004/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6005
6006"use strict";
6007__webpack_require__.r(__webpack_exports__);
6008/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6009/* harmony export */   "default": function() { return /* binding */ addClasses; }
6010/* harmony export */ });
6011function prepareClasses(entries, prefix) {
6012  const resultClasses = [];
6013  entries.forEach(item => {
6014    if (typeof item === 'object') {
6015      Object.keys(item).forEach(classNames => {
6016        if (item[classNames]) {
6017          resultClasses.push(prefix + classNames);
6018        }
6019      });
6020    } else if (typeof item === 'string') {
6021      resultClasses.push(prefix + item);
6022    }
6023  });
6024  return resultClasses;
6025}
6026
6027function addClasses() {
6028  const swiper = this;
6029  const {
6030    classNames,
6031    params,
6032    rtl,
6033    $el,
6034    device,
6035    support
6036  } = swiper; // prettier-ignore
6037
6038  const suffixes = prepareClasses(['initialized', params.direction, {
6039    'pointer-events': !support.touch
6040  }, {
6041    'free-mode': swiper.params.freeMode && params.freeMode.enabled
6042  }, {
6043    'autoheight': params.autoHeight
6044  }, {
6045    'rtl': rtl
6046  }, {
6047    'grid': params.grid && params.grid.rows > 1
6048  }, {
6049    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
6050  }, {
6051    'android': device.android
6052  }, {
6053    'ios': device.ios
6054  }, {
6055    'css-mode': params.cssMode
6056  }, {
6057    'centered': params.cssMode && params.centeredSlides
6058  }, {
6059    'watch-progress': params.watchSlidesProgress
6060  }], params.containerModifierClass);
6061  classNames.push(...suffixes);
6062  $el.addClass([...classNames].join(' '));
6063  swiper.emitContainerClasses();
6064}
6065
6066/***/ }),
6067
vendor: 950 bytes, lines 6068-6086
6068/***/ "./node_modules/swiper/core/classes/index.js":
6069/*!***************************************************!*\
6070  !*** ./node_modules/swiper/core/classes/index.js ***!
6071  \***************************************************/
6072/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6073
6074"use strict";
6075__webpack_require__.r(__webpack_exports__);
6076/* harmony import */ var _addClasses_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./addClasses.js */ "./node_modules/swiper/core/classes/addClasses.js");
6077/* harmony import */ var _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeClasses.js */ "./node_modules/swiper/core/classes/removeClasses.js");
6078
6079
6080/* harmony default export */ __webpack_exports__["default"] = ({
6081  addClasses: _addClasses_js__WEBPACK_IMPORTED_MODULE_0__["default"],
6082  removeClasses: _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__["default"]
6083});
6084
6085/***/ }),
6086
vendor: 773 bytes, lines 6087-6109
6087/***/ "./node_modules/swiper/core/classes/removeClasses.js":
6088/*!***********************************************************!*\
6089  !*** ./node_modules/swiper/core/classes/removeClasses.js ***!
6090  \***********************************************************/
6091/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6092
6093"use strict";
6094__webpack_require__.r(__webpack_exports__);
6095/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6096/* harmony export */   "default": function() { return /* binding */ removeClasses; }
6097/* harmony export */ });
6098function removeClasses() {
6099  const swiper = this;
6100  const {
6101    $el,
6102    classNames
6103  } = swiper;
6104  $el.removeClass(classNames.join(' '));
6105  swiper.emitContainerClasses();
6106}
6107
6108/***/ }),
6109
vendor: 22,490 bytes, lines 6110-6776
6110/***/ "./node_modules/swiper/core/core.js":
6111/*!******************************************!*\
6112  !*** ./node_modules/swiper/core/core.js ***!
6113  \******************************************/
6114/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6115
6116"use strict";
6117__webpack_require__.r(__webpack_exports__);
6118/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
6119/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
6120/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
6121/* harmony import */ var _shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/get-support.js */ "./node_modules/swiper/shared/get-support.js");
6122/* harmony import */ var _shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/get-device.js */ "./node_modules/swiper/shared/get-device.js");
6123/* harmony import */ var _shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shared/get-browser.js */ "./node_modules/swiper/shared/get-browser.js");
6124/* harmony import */ var _modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/resize/resize.js */ "./node_modules/swiper/core/modules/resize/resize.js");
6125/* harmony import */ var _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/observer/observer.js */ "./node_modules/swiper/core/modules/observer/observer.js");
6126/* harmony import */ var _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./events-emitter.js */ "./node_modules/swiper/core/events-emitter.js");
6127/* harmony import */ var _update_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./update/index.js */ "./node_modules/swiper/core/update/index.js");
6128/* harmony import */ var _translate_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./translate/index.js */ "./node_modules/swiper/core/translate/index.js");
6129/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transition/index.js */ "./node_modules/swiper/core/transition/index.js");
6130/* harmony import */ var _slide_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./slide/index.js */ "./node_modules/swiper/core/slide/index.js");
6131/* harmony import */ var _loop_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./loop/index.js */ "./node_modules/swiper/core/loop/index.js");
6132/* harmony import */ var _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./grab-cursor/index.js */ "./node_modules/swiper/core/grab-cursor/index.js");
6133/* harmony import */ var _events_index_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./events/index.js */ "./node_modules/swiper/core/events/index.js");
6134/* harmony import */ var _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./breakpoints/index.js */ "./node_modules/swiper/core/breakpoints/index.js");
6135/* harmony import */ var _classes_index_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./classes/index.js */ "./node_modules/swiper/core/classes/index.js");
6136/* harmony import */ var _images_index_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./images/index.js */ "./node_modules/swiper/core/images/index.js");
6137/* harmony import */ var _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./check-overflow/index.js */ "./node_modules/swiper/core/check-overflow/index.js");
6138/* harmony import */ var _defaults_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./defaults.js */ "./node_modules/swiper/core/defaults.js");
6139/* harmony import */ var _moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./moduleExtendParams.js */ "./node_modules/swiper/core/moduleExtendParams.js");
6140/* eslint no-param-reassign: "off" */
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163const prototypes = {
6164  eventsEmitter: _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__["default"],
6165  update: _update_index_js__WEBPACK_IMPORTED_MODULE_9__["default"],
6166  translate: _translate_index_js__WEBPACK_IMPORTED_MODULE_10__["default"],
6167  transition: _transition_index_js__WEBPACK_IMPORTED_MODULE_11__["default"],
6168  slide: _slide_index_js__WEBPACK_IMPORTED_MODULE_12__["default"],
6169  loop: _loop_index_js__WEBPACK_IMPORTED_MODULE_13__["default"],
6170  grabCursor: _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__["default"],
6171  events: _events_index_js__WEBPACK_IMPORTED_MODULE_15__["default"],
6172  breakpoints: _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__["default"],
6173  checkOverflow: _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__["default"],
6174  classes: _classes_index_js__WEBPACK_IMPORTED_MODULE_17__["default"],
6175  images: _images_index_js__WEBPACK_IMPORTED_MODULE_18__["default"]
6176};
6177const extendedDefaults = {};
6178
6179class Swiper {
6180  constructor(...args) {
6181    let el;
6182    let params;
6183
6184    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
6185      params = args[0];
6186    } else {
6187      [el, params] = args;
6188    }
6189
6190    if (!params) params = {};
6191    params = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params);
6192    if (el && !params.el) params.el = el;
6193
6194    if (params.el && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).length > 1) {
6195      const swipers = [];
6196      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).each(containerEl => {
6197        const newParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params, {
6198          el: containerEl
6199        });
6200        swipers.push(new Swiper(newParams));
6201      }); // eslint-disable-next-line no-constructor-return
6202
6203      return swipers;
6204    } // Swiper Instance
6205
6206
6207    const swiper = this;
6208    swiper.__swiper__ = true;
6209    swiper.support = (0,_shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__.getSupport)();
6210    swiper.device = (0,_shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__.getDevice)({
6211      userAgent: params.userAgent
6212    });
6213    swiper.browser = (0,_shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__.getBrowser)();
6214    swiper.eventsListeners = {};
6215    swiper.eventsAnyListeners = [];
6216    swiper.modules = [...swiper.__modules__];
6217
6218    if (params.modules && Array.isArray(params.modules)) {
6219      swiper.modules.push(...params.modules);
6220    }
6221
6222    const allModulesParams = {};
6223    swiper.modules.forEach(mod => {
6224      mod({
6225        swiper,
6226        extendParams: (0,_moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__["default"])(params, allModulesParams),
6227        on: swiper.on.bind(swiper),
6228        once: swiper.once.bind(swiper),
6229        off: swiper.off.bind(swiper),
6230        emit: swiper.emit.bind(swiper)
6231      });
6232    }); // Extend defaults with modules params
6233
6234    const swiperParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"], allModulesParams); // Extend defaults with passed params
6235
6236    swiper.params = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, swiperParams, extendedDefaults, params);
6237    swiper.originalParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, swiper.params);
6238    swiper.passedParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params); // add event listeners
6239
6240    if (swiper.params && swiper.params.on) {
6241      Object.keys(swiper.params.on).forEach(eventName => {
6242        swiper.on(eventName, swiper.params.on[eventName]);
6243      });
6244    }
6245
6246    if (swiper.params && swiper.params.onAny) {
6247      swiper.onAny(swiper.params.onAny);
6248    } // Save Dom lib
6249
6250
6251    swiper.$ = _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"]; // Extend Swiper
6252
6253    Object.assign(swiper, {
6254      enabled: swiper.params.enabled,
6255      el,
6256      // Classes
6257      classNames: [],
6258      // Slides
6259      slides: (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(),
6260      slidesGrid: [],
6261      snapGrid: [],
6262      slidesSizesGrid: [],
6263
6264      // isDirection
6265      isHorizontal() {
6266        return swiper.params.direction === 'horizontal';
6267      },
6268
6269      isVertical() {
6270        return swiper.params.direction === 'vertical';
6271      },
6272
6273      // Indexes
6274      activeIndex: 0,
6275      realIndex: 0,
6276      //
6277      isBeginning: true,
6278      isEnd: false,
6279      // Props
6280      translate: 0,
6281      previousTranslate: 0,
6282      progress: 0,
6283      velocity: 0,
6284      animating: false,
6285      // Locks
6286      allowSlideNext: swiper.params.allowSlideNext,
6287      allowSlidePrev: swiper.params.allowSlidePrev,
6288      // Touch Events
6289      touchEvents: function touchEvents() {
6290        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
6291        const desktop = ['pointerdown', 'pointermove', 'pointerup'];
6292        swiper.touchEventsTouch = {
6293          start: touch[0],
6294          move: touch[1],
6295          end: touch[2],
6296          cancel: touch[3]
6297        };
6298        swiper.touchEventsDesktop = {
6299          start: desktop[0],
6300          move: desktop[1],
6301          end: desktop[2]
6302        };
6303        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
6304      }(),
6305      touchEventsData: {
6306        isTouched: undefined,
6307        isMoved: undefined,
6308        allowTouchCallbacks: undefined,
6309        touchStartTime: undefined,
6310        isScrolling: undefined,
6311        currentTranslate: undefined,
6312        startTranslate: undefined,
6313        allowThresholdMove: undefined,
6314        // Form elements to match
6315        focusableElements: swiper.params.focusableElements,
6316        // Last click time
6317        lastClickTime: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
6318        clickTimeout: undefined,
6319        // Velocities
6320        velocities: [],
6321        allowMomentumBounce: undefined,
6322        isTouchEvent: undefined,
6323        startMoving: undefined
6324      },
6325      // Clicks
6326      allowClick: true,
6327      // Touches
6328      allowTouchMove: swiper.params.allowTouchMove,
6329      touches: {
6330        startX: 0,
6331        startY: 0,
6332        currentX: 0,
6333        currentY: 0,
6334        diff: 0
6335      },
6336      // Images
6337      imagesToLoad: [],
6338      imagesLoaded: 0
6339    });
6340    swiper.emit('_swiper'); // Init
6341
6342    if (swiper.params.init) {
6343      swiper.init();
6344    } // Return app instance
6345    // eslint-disable-next-line no-constructor-return
6346
6347
6348    return swiper;
6349  }
6350
6351  enable() {
6352    const swiper = this;
6353    if (swiper.enabled) return;
6354    swiper.enabled = true;
6355
6356    if (swiper.params.grabCursor) {
6357      swiper.setGrabCursor();
6358    }
6359
6360    swiper.emit('enable');
6361  }
6362
6363  disable() {
6364    const swiper = this;
6365    if (!swiper.enabled) return;
6366    swiper.enabled = false;
6367
6368    if (swiper.params.grabCursor) {
6369      swiper.unsetGrabCursor();
6370    }
6371
6372    swiper.emit('disable');
6373  }
6374
6375  setProgress(progress, speed) {
6376    const swiper = this;
6377    progress = Math.min(Math.max(progress, 0), 1);
6378    const min = swiper.minTranslate();
6379    const max = swiper.maxTranslate();
6380    const current = (max - min) * progress + min;
6381    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
6382    swiper.updateActiveIndex();
6383    swiper.updateSlidesClasses();
6384  }
6385
6386  emitContainerClasses() {
6387    const swiper = this;
6388    if (!swiper.params._emitClasses || !swiper.el) return;
6389    const cls = swiper.el.className.split(' ').filter(className => {
6390      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
6391    });
6392    swiper.emit('_containerClasses', cls.join(' '));
6393  }
6394
6395  getSlideClasses(slideEl) {
6396    const swiper = this;
6397    if (swiper.destroyed) return '';
6398    return slideEl.className.split(' ').filter(className => {
6399      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
6400    }).join(' ');
6401  }
6402
6403  emitSlidesClasses() {
6404    const swiper = this;
6405    if (!swiper.params._emitClasses || !swiper.el) return;
6406    const updates = [];
6407    swiper.slides.each(slideEl => {
6408      const classNames = swiper.getSlideClasses(slideEl);
6409      updates.push({
6410        slideEl,
6411        classNames
6412      });
6413      swiper.emit('_slideClass', slideEl, classNames);
6414    });
6415    swiper.emit('_slideClasses', updates);
6416  }
6417
6418  slidesPerViewDynamic(view = 'current', exact = false) {
6419    const swiper = this;
6420    const {
6421      params,
6422      slides,
6423      slidesGrid,
6424      slidesSizesGrid,
6425      size: swiperSize,
6426      activeIndex
6427    } = swiper;
6428    let spv = 1;
6429
6430    if (params.centeredSlides) {
6431      let slideSize = slides[activeIndex].swiperSlideSize;
6432      let breakLoop;
6433
6434      for (let i = activeIndex + 1; i < slides.length; i += 1) {
6435        if (slides[i] && !breakLoop) {
6436          slideSize += slides[i].swiperSlideSize;
6437          spv += 1;
6438          if (slideSize > swiperSize) breakLoop = true;
6439        }
6440      }
6441
6442      for (let i = activeIndex - 1; i >= 0; i -= 1) {
6443        if (slides[i] && !breakLoop) {
6444          slideSize += slides[i].swiperSlideSize;
6445          spv += 1;
6446          if (slideSize > swiperSize) breakLoop = true;
6447        }
6448      }
6449    } else {
6450      // eslint-disable-next-line
6451      if (view === 'current') {
6452        for (let i = activeIndex + 1; i < slides.length; i += 1) {
6453          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
6454
6455          if (slideInView) {
6456            spv += 1;
6457          }
6458        }
6459      } else {
6460        // previous
6461        for (let i = activeIndex - 1; i >= 0; i -= 1) {
6462          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
6463
6464          if (slideInView) {
6465            spv += 1;
6466          }
6467        }
6468      }
6469    }
6470
6471    return spv;
6472  }
6473
6474  update() {
6475    const swiper = this;
6476    if (!swiper || swiper.destroyed) return;
6477    const {
6478      snapGrid,
6479      params
6480    } = swiper; // Breakpoints
6481
6482    if (params.breakpoints) {
6483      swiper.setBreakpoint();
6484    }
6485
6486    swiper.updateSize();
6487    swiper.updateSlides();
6488    swiper.updateProgress();
6489    swiper.updateSlidesClasses();
6490
6491    function setTranslate() {
6492      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
6493      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
6494      swiper.setTranslate(newTranslate);
6495      swiper.updateActiveIndex();
6496      swiper.updateSlidesClasses();
6497    }
6498
6499    let translated;
6500
6501    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {
6502      setTranslate();
6503
6504      if (swiper.params.autoHeight) {
6505        swiper.updateAutoHeight();
6506      }
6507    } else {
6508      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
6509        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
6510      } else {
6511        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
6512      }
6513
6514      if (!translated) {
6515        setTranslate();
6516      }
6517    }
6518
6519    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
6520      swiper.checkOverflow();
6521    }
6522
6523    swiper.emit('update');
6524  }
6525
6526  changeDirection(newDirection, needUpdate = true) {
6527    const swiper = this;
6528    const currentDirection = swiper.params.direction;
6529
6530    if (!newDirection) {
6531      // eslint-disable-next-line
6532      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
6533    }
6534
6535    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
6536      return swiper;
6537    }
6538
6539    swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);
6540    swiper.emitContainerClasses();
6541    swiper.params.direction = newDirection;
6542    swiper.slides.each(slideEl => {
6543      if (newDirection === 'vertical') {
6544        slideEl.style.width = '';
6545      } else {
6546        slideEl.style.height = '';
6547      }
6548    });
6549    swiper.emit('changeDirection');
6550    if (needUpdate) swiper.update();
6551    return swiper;
6552  }
6553
6554  changeLanguageDirection(direction) {
6555    const swiper = this;
6556    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
6557    swiper.rtl = direction === 'rtl';
6558    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
6559
6560    if (swiper.rtl) {
6561      swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);
6562      swiper.el.dir = 'rtl';
6563    } else {
6564      swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);
6565      swiper.el.dir = 'ltr';
6566    }
6567
6568    swiper.update();
6569  }
6570
6571  mount(el) {
6572    const swiper = this;
6573    if (swiper.mounted) return true; // Find el
6574
6575    const $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el || swiper.params.el);
6576    el = $el[0];
6577
6578    if (!el) {
6579      return false;
6580    }
6581
6582    el.swiper = swiper;
6583
6584    const getWrapperSelector = () => {
6585      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;
6586    };
6587
6588    const getWrapper = () => {
6589      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
6590        const res = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items
6591
6592        res.children = options => $el.children(options);
6593
6594        return res;
6595      }
6596
6597      if (!$el.children) {
6598        return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($el).children(getWrapperSelector());
6599      }
6600
6601      return $el.children(getWrapperSelector());
6602    }; // Find Wrapper
6603
6604
6605    let $wrapperEl = getWrapper();
6606
6607    if ($wrapperEl.length === 0 && swiper.params.createElements) {
6608      const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
6609      const wrapper = document.createElement('div');
6610      $wrapperEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(wrapper);
6611      wrapper.className = swiper.params.wrapperClass;
6612      $el.append(wrapper);
6613      $el.children(`.${swiper.params.slideClass}`).each(slideEl => {
6614        $wrapperEl.append(slideEl);
6615      });
6616    }
6617
6618    Object.assign(swiper, {
6619      $el,
6620      el,
6621      $wrapperEl,
6622      wrapperEl: $wrapperEl[0],
6623      mounted: true,
6624      // RTL
6625      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
6626      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
6627      wrongRTL: $wrapperEl.css('display') === '-webkit-box'
6628    });
6629    return true;
6630  }
6631
6632  init(el) {
6633    const swiper = this;
6634    if (swiper.initialized) return swiper;
6635    const mounted = swiper.mount(el);
6636    if (mounted === false) return swiper;
6637    swiper.emit('beforeInit'); // Set breakpoint
6638
6639    if (swiper.params.breakpoints) {
6640      swiper.setBreakpoint();
6641    } // Add Classes
6642
6643
6644    swiper.addClasses(); // Create loop
6645
6646    if (swiper.params.loop) {
6647      swiper.loopCreate();
6648    } // Update size
6649
6650
6651    swiper.updateSize(); // Update slides
6652
6653    swiper.updateSlides();
6654
6655    if (swiper.params.watchOverflow) {
6656      swiper.checkOverflow();
6657    } // Set Grab Cursor
6658
6659
6660    if (swiper.params.grabCursor && swiper.enabled) {
6661      swiper.setGrabCursor();
6662    }
6663
6664    if (swiper.params.preloadImages) {
6665      swiper.preloadImages();
6666    } // Slide To Initial Slide
6667
6668
6669    if (swiper.params.loop) {
6670      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);
6671    } else {
6672      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
6673    } // Attach events
6674
6675
6676    swiper.attachEvents(); // Init Flag
6677
6678    swiper.initialized = true; // Emit
6679
6680    swiper.emit('init');
6681    swiper.emit('afterInit');
6682    return swiper;
6683  }
6684
6685  destroy(deleteInstance = true, cleanStyles = true) {
6686    const swiper = this;
6687    const {
6688      params,
6689      $el,
6690      $wrapperEl,
6691      slides
6692    } = swiper;
6693
6694    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
6695      return null;
6696    }
6697
6698    swiper.emit('beforeDestroy'); // Init Flag
6699
6700    swiper.initialized = false; // Detach events
6701
6702    swiper.detachEvents(); // Destroy loop
6703
6704    if (params.loop) {
6705      swiper.loopDestroy();
6706    } // Cleanup styles
6707
6708
6709    if (cleanStyles) {
6710      swiper.removeClasses();
6711      $el.removeAttr('style');
6712      $wrapperEl.removeAttr('style');
6713
6714      if (slides && slides.length) {
6715        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
6716      }
6717    }
6718
6719    swiper.emit('destroy'); // Detach emitter events
6720
6721    Object.keys(swiper.eventsListeners).forEach(eventName => {
6722      swiper.off(eventName);
6723    });
6724
6725    if (deleteInstance !== false) {
6726      swiper.$el[0].swiper = null;
6727      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.deleteProps)(swiper);
6728    }
6729
6730    swiper.destroyed = true;
6731    return null;
6732  }
6733
6734  static extendDefaults(newDefaults) {
6735    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)(extendedDefaults, newDefaults);
6736  }
6737
6738  static get extendedDefaults() {
6739    return extendedDefaults;
6740  }
6741
6742  static get defaults() {
6743    return _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"];
6744  }
6745
6746  static installModule(mod) {
6747    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
6748    const modules = Swiper.prototype.__modules__;
6749
6750    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
6751      modules.push(mod);
6752    }
6753  }
6754
6755  static use(module) {
6756    if (Array.isArray(module)) {
6757      module.forEach(m => Swiper.installModule(m));
6758      return Swiper;
6759    }
6760
6761    Swiper.installModule(module);
6762    return Swiper;
6763  }
6764
6765}
6766
6767Object.keys(prototypes).forEach(prototypeGroup => {
6768  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
6769    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
6770  });
6771});
6772Swiper.use([_modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__["default"]]);
6773/* harmony default export */ __webpack_exports__["default"] = (Swiper);
6774
6775/***/ }),
6776
vendor: 3,599 bytes, lines 6777-6911
6777/***/ "./node_modules/swiper/core/defaults.js":
6778/*!**********************************************!*\
6779  !*** ./node_modules/swiper/core/defaults.js ***!
6780  \**********************************************/
6781/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6782
6783"use strict";
6784__webpack_require__.r(__webpack_exports__);
6785/* harmony default export */ __webpack_exports__["default"] = ({
6786  init: true,
6787  direction: 'horizontal',
6788  touchEventsTarget: 'wrapper',
6789  initialSlide: 0,
6790  speed: 300,
6791  cssMode: false,
6792  updateOnWindowResize: true,
6793  resizeObserver: true,
6794  nested: false,
6795  createElements: false,
6796  enabled: true,
6797  focusableElements: 'input, select, option, textarea, button, video, label',
6798  // Overrides
6799  width: null,
6800  height: null,
6801  //
6802  preventInteractionOnTransition: false,
6803  // ssr
6804  userAgent: null,
6805  url: null,
6806  // To support iOS's swipe-to-go-back gesture (when being used in-app).
6807  edgeSwipeDetection: false,
6808  edgeSwipeThreshold: 20,
6809  // Autoheight
6810  autoHeight: false,
6811  // Set wrapper width
6812  setWrapperSize: false,
6813  // Virtual Translate
6814  virtualTranslate: false,
6815  // Effects
6816  effect: 'slide',
6817  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
6818  // Breakpoints
6819  breakpoints: undefined,
6820  breakpointsBase: 'window',
6821  // Slides grid
6822  spaceBetween: 0,
6823  slidesPerView: 1,
6824  slidesPerGroup: 1,
6825  slidesPerGroupSkip: 0,
6826  slidesPerGroupAuto: false,
6827  centeredSlides: false,
6828  centeredSlidesBounds: false,
6829  slidesOffsetBefore: 0,
6830  // in px
6831  slidesOffsetAfter: 0,
6832  // in px
6833  normalizeSlideIndex: true,
6834  centerInsufficientSlides: false,
6835  // Disable swiper and hide navigation when container not overflow
6836  watchOverflow: true,
6837  // Round length
6838  roundLengths: false,
6839  // Touches
6840  touchRatio: 1,
6841  touchAngle: 45,
6842  simulateTouch: true,
6843  shortSwipes: true,
6844  longSwipes: true,
6845  longSwipesRatio: 0.5,
6846  longSwipesMs: 300,
6847  followFinger: true,
6848  allowTouchMove: true,
6849  threshold: 0,
6850  touchMoveStopPropagation: false,
6851  touchStartPreventDefault: true,
6852  touchStartForcePreventDefault: false,
6853  touchReleaseOnEdges: false,
6854  // Unique Navigation Elements
6855  uniqueNavElements: true,
6856  // Resistance
6857  resistance: true,
6858  resistanceRatio: 0.85,
6859  // Progress
6860  watchSlidesProgress: false,
6861  // Cursor
6862  grabCursor: false,
6863  // Clicks
6864  preventClicks: true,
6865  preventClicksPropagation: true,
6866  slideToClickedSlide: false,
6867  // Images
6868  preloadImages: true,
6869  updateOnImagesReady: true,
6870  // loop
6871  loop: false,
6872  loopAdditionalSlides: 0,
6873  loopedSlides: null,
6874  loopedSlidesLimit: true,
6875  loopFillGroupWithBlank: false,
6876  loopPreventsSlide: true,
6877  // rewind
6878  rewind: false,
6879  // Swiping/no swiping
6880  allowSlidePrev: true,
6881  allowSlideNext: true,
6882  swipeHandler: null,
6883  // '.swipe-handler',
6884  noSwiping: true,
6885  noSwipingClass: 'swiper-no-swiping',
6886  noSwipingSelector: null,
6887  // Passive Listeners
6888  passiveListeners: true,
6889  maxBackfaceHiddenSlides: 10,
6890  // NS
6891  containerModifierClass: 'swiper-',
6892  // NEW
6893  slideClass: 'swiper-slide',
6894  slideBlankClass: 'swiper-slide-invisible-blank',
6895  slideActiveClass: 'swiper-slide-active',
6896  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
6897  slideVisibleClass: 'swiper-slide-visible',
6898  slideDuplicateClass: 'swiper-slide-duplicate',
6899  slideNextClass: 'swiper-slide-next',
6900  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
6901  slidePrevClass: 'swiper-slide-prev',
6902  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
6903  wrapperClass: 'swiper-wrapper',
6904  // Callbacks
6905  runCallbacksOnInit: true,
6906  // Internals
6907  _emitClasses: false
6908});
6909
6910/***/ }),
6911
vendor: 3,738 bytes, lines 6912-7036
6912/***/ "./node_modules/swiper/core/events-emitter.js":
6913/*!****************************************************!*\
6914  !*** ./node_modules/swiper/core/events-emitter.js ***!
6915  \****************************************************/
6916/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6917
6918"use strict";
6919__webpack_require__.r(__webpack_exports__);
6920/* eslint-disable no-underscore-dangle */
6921/* harmony default export */ __webpack_exports__["default"] = ({
6922  on(events, handler, priority) {
6923    const self = this;
6924    if (!self.eventsListeners || self.destroyed) return self;
6925    if (typeof handler !== 'function') return self;
6926    const method = priority ? 'unshift' : 'push';
6927    events.split(' ').forEach(event => {
6928      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
6929      self.eventsListeners[event][method](handler);
6930    });
6931    return self;
6932  },
6933
6934  once(events, handler, priority) {
6935    const self = this;
6936    if (!self.eventsListeners || self.destroyed) return self;
6937    if (typeof handler !== 'function') return self;
6938
6939    function onceHandler(...args) {
6940      self.off(events, onceHandler);
6941
6942      if (onceHandler.__emitterProxy) {
6943        delete onceHandler.__emitterProxy;
6944      }
6945
6946      handler.apply(self, args);
6947    }
6948
6949    onceHandler.__emitterProxy = handler;
6950    return self.on(events, onceHandler, priority);
6951  },
6952
6953  onAny(handler, priority) {
6954    const self = this;
6955    if (!self.eventsListeners || self.destroyed) return self;
6956    if (typeof handler !== 'function') return self;
6957    const method = priority ? 'unshift' : 'push';
6958
6959    if (self.eventsAnyListeners.indexOf(handler) < 0) {
6960      self.eventsAnyListeners[method](handler);
6961    }
6962
6963    return self;
6964  },
6965
6966  offAny(handler) {
6967    const self = this;
6968    if (!self.eventsListeners || self.destroyed) return self;
6969    if (!self.eventsAnyListeners) return self;
6970    const index = self.eventsAnyListeners.indexOf(handler);
6971
6972    if (index >= 0) {
6973      self.eventsAnyListeners.splice(index, 1);
6974    }
6975
6976    return self;
6977  },
6978
6979  off(events, handler) {
6980    const self = this;
6981    if (!self.eventsListeners || self.destroyed) return self;
6982    if (!self.eventsListeners) return self;
6983    events.split(' ').forEach(event => {
6984      if (typeof handler === 'undefined') {
6985        self.eventsListeners[event] = [];
6986      } else if (self.eventsListeners[event]) {
6987        self.eventsListeners[event].forEach((eventHandler, index) => {
6988          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
6989            self.eventsListeners[event].splice(index, 1);
6990          }
6991        });
6992      }
6993    });
6994    return self;
6995  },
6996
6997  emit(...args) {
6998    const self = this;
6999    if (!self.eventsListeners || self.destroyed) return self;
7000    if (!self.eventsListeners) return self;
7001    let events;
7002    let data;
7003    let context;
7004
7005    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
7006      events = args[0];
7007      data = args.slice(1, args.length);
7008      context = self;
7009    } else {
7010      events = args[0].events;
7011      data = args[0].data;
7012      context = args[0].context || self;
7013    }
7014
7015    data.unshift(context);
7016    const eventsArray = Array.isArray(events) ? events : events.split(' ');
7017    eventsArray.forEach(event => {
7018      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
7019        self.eventsAnyListeners.forEach(eventHandler => {
7020          eventHandler.apply(context, [event, ...data]);
7021        });
7022      }
7023
7024      if (self.eventsListeners && self.eventsListeners[event]) {
7025        self.eventsListeners[event].forEach(eventHandler => {
7026          eventHandler.apply(context, data);
7027        });
7028      }
7029    });
7030    return self;
7031  }
7032
7033});
7034
7035/***/ }),
7036
vendor: 4,404 bytes, lines 7037-7151
7037/***/ "./node_modules/swiper/core/events/index.js":
7038/*!**************************************************!*\
7039  !*** ./node_modules/swiper/core/events/index.js ***!
7040  \**************************************************/
7041/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7042
7043"use strict";
7044__webpack_require__.r(__webpack_exports__);
7045/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
7046/* harmony import */ var _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onTouchStart.js */ "./node_modules/swiper/core/events/onTouchStart.js");
7047/* harmony import */ var _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./onTouchMove.js */ "./node_modules/swiper/core/events/onTouchMove.js");
7048/* harmony import */ var _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onTouchEnd.js */ "./node_modules/swiper/core/events/onTouchEnd.js");
7049/* harmony import */ var _onResize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./onResize.js */ "./node_modules/swiper/core/events/onResize.js");
7050/* harmony import */ var _onClick_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onClick.js */ "./node_modules/swiper/core/events/onClick.js");
7051/* harmony import */ var _onScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./onScroll.js */ "./node_modules/swiper/core/events/onScroll.js");
7052
7053
7054
7055
7056
7057
7058
7059let dummyEventAttached = false;
7060
7061function dummyEventListener() {}
7062
7063const events = (swiper, method) => {
7064  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
7065  const {
7066    params,
7067    touchEvents,
7068    el,
7069    wrapperEl,
7070    device,
7071    support
7072  } = swiper;
7073  const capture = !!params.nested;
7074  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
7075  const swiperMethod = method; // Touch Events
7076
7077  if (!support.touch) {
7078    el[domMethod](touchEvents.start, swiper.onTouchStart, false);
7079    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);
7080    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);
7081  } else {
7082    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
7083      passive: true,
7084      capture: false
7085    } : false;
7086    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);
7087    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
7088      passive: false,
7089      capture
7090    } : capture);
7091    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);
7092
7093    if (touchEvents.cancel) {
7094      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);
7095    }
7096  } // Prevent Links Clicks
7097
7098
7099  if (params.preventClicks || params.preventClicksPropagation) {
7100    el[domMethod]('click', swiper.onClick, true);
7101  }
7102
7103  if (params.cssMode) {
7104    wrapperEl[domMethod]('scroll', swiper.onScroll);
7105  } // Resize handler
7106
7107
7108  if (params.updateOnWindowResize) {
7109    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
7110  } else {
7111    swiper[swiperMethod]('observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
7112  }
7113};
7114
7115function attachEvents() {
7116  const swiper = this;
7117  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
7118  const {
7119    params,
7120    support
7121  } = swiper;
7122  swiper.onTouchStart = _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper);
7123  swiper.onTouchMove = _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper);
7124  swiper.onTouchEnd = _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper);
7125
7126  if (params.cssMode) {
7127    swiper.onScroll = _onScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"].bind(swiper);
7128  }
7129
7130  swiper.onClick = _onClick_js__WEBPACK_IMPORTED_MODULE_5__["default"].bind(swiper);
7131
7132  if (support.touch && !dummyEventAttached) {
7133    document.addEventListener('touchstart', dummyEventListener);
7134    dummyEventAttached = true;
7135  }
7136
7137  events(swiper, 'on');
7138}
7139
7140function detachEvents() {
7141  const swiper = this;
7142  events(swiper, 'off');
7143}
7144
7145/* harmony default export */ __webpack_exports__["default"] = ({
7146  attachEvents,
7147  detachEvents
7148});
7149
7150/***/ }),
7151
vendor: 873 bytes, lines 7152-7178
7152/***/ "./node_modules/swiper/core/events/onClick.js":
7153/*!****************************************************!*\
7154  !*** ./node_modules/swiper/core/events/onClick.js ***!
7155  \****************************************************/
7156/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7157
7158"use strict";
7159__webpack_require__.r(__webpack_exports__);
7160/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7161/* harmony export */   "default": function() { return /* binding */ onClick; }
7162/* harmony export */ });
7163function onClick(e) {
7164  const swiper = this;
7165  if (!swiper.enabled) return;
7166
7167  if (!swiper.allowClick) {
7168    if (swiper.params.preventClicks) e.preventDefault();
7169
7170    if (swiper.params.preventClicksPropagation && swiper.animating) {
7171      e.stopPropagation();
7172      e.stopImmediatePropagation();
7173    }
7174  }
7175}
7176
7177/***/ }),
7178
vendor: 1,647 bytes, lines 7179-7235
7179/***/ "./node_modules/swiper/core/events/onResize.js":
7180/*!*****************************************************!*\
7181  !*** ./node_modules/swiper/core/events/onResize.js ***!
7182  \*****************************************************/
7183/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7184
7185"use strict";
7186__webpack_require__.r(__webpack_exports__);
7187/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7188/* harmony export */   "default": function() { return /* binding */ onResize; }
7189/* harmony export */ });
7190function onResize() {
7191  const swiper = this;
7192  const {
7193    params,
7194    el
7195  } = swiper;
7196  if (el && el.offsetWidth === 0) return; // Breakpoints
7197
7198  if (params.breakpoints) {
7199    swiper.setBreakpoint();
7200  } // Save locks
7201
7202
7203  const {
7204    allowSlideNext,
7205    allowSlidePrev,
7206    snapGrid
7207  } = swiper; // Disable locks on resize
7208
7209  swiper.allowSlideNext = true;
7210  swiper.allowSlidePrev = true;
7211  swiper.updateSize();
7212  swiper.updateSlides();
7213  swiper.updateSlidesClasses();
7214
7215  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
7216    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
7217  } else {
7218    swiper.slideTo(swiper.activeIndex, 0, false, true);
7219  }
7220
7221  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
7222    swiper.autoplay.run();
7223  } // Return locks after resize
7224
7225
7226  swiper.allowSlidePrev = allowSlidePrev;
7227  swiper.allowSlideNext = allowSlideNext;
7228
7229  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
7230    swiper.checkOverflow();
7231  }
7232}
7233
7234/***/ }),
7235
vendor: 1,459 bytes, lines 7236-7284
7236/***/ "./node_modules/swiper/core/events/onScroll.js":
7237/*!*****************************************************!*\
7238  !*** ./node_modules/swiper/core/events/onScroll.js ***!
7239  \*****************************************************/
7240/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7241
7242"use strict";
7243__webpack_require__.r(__webpack_exports__);
7244/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7245/* harmony export */   "default": function() { return /* binding */ onScroll; }
7246/* harmony export */ });
7247function onScroll() {
7248  const swiper = this;
7249  const {
7250    wrapperEl,
7251    rtlTranslate,
7252    enabled
7253  } = swiper;
7254  if (!enabled) return;
7255  swiper.previousTranslate = swiper.translate;
7256
7257  if (swiper.isHorizontal()) {
7258    swiper.translate = -wrapperEl.scrollLeft;
7259  } else {
7260    swiper.translate = -wrapperEl.scrollTop;
7261  } // eslint-disable-next-line
7262
7263
7264  if (swiper.translate === 0) swiper.translate = 0;
7265  swiper.updateActiveIndex();
7266  swiper.updateSlidesClasses();
7267  let newProgress;
7268  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
7269
7270  if (translatesDiff === 0) {
7271    newProgress = 0;
7272  } else {
7273    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
7274  }
7275
7276  if (newProgress !== swiper.progress) {
7277    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
7278  }
7279
7280  swiper.emit('setTranslate', swiper.translate, false);
7281}
7282
7283/***/ }),
7284
vendor: 5,536 bytes, lines 7285-7460
7285/***/ "./node_modules/swiper/core/events/onTouchEnd.js":
7286/*!*******************************************************!*\
7287  !*** ./node_modules/swiper/core/events/onTouchEnd.js ***!
7288  \*******************************************************/
7289/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7290
7291"use strict";
7292__webpack_require__.r(__webpack_exports__);
7293/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7294/* harmony export */   "default": function() { return /* binding */ onTouchEnd; }
7295/* harmony export */ });
7296/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7297
7298function onTouchEnd(event) {
7299  const swiper = this;
7300  const data = swiper.touchEventsData;
7301  const {
7302    params,
7303    touches,
7304    rtlTranslate: rtl,
7305    slidesGrid,
7306    enabled
7307  } = swiper;
7308  if (!enabled) return;
7309  let e = event;
7310  if (e.originalEvent) e = e.originalEvent;
7311
7312  if (data.allowTouchCallbacks) {
7313    swiper.emit('touchEnd', e);
7314  }
7315
7316  data.allowTouchCallbacks = false;
7317
7318  if (!data.isTouched) {
7319    if (data.isMoved && params.grabCursor) {
7320      swiper.setGrabCursor(false);
7321    }
7322
7323    data.isMoved = false;
7324    data.startMoving = false;
7325    return;
7326  } // Return Grab Cursor
7327
7328
7329  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
7330    swiper.setGrabCursor(false);
7331  } // Time diff
7332
7333
7334  const touchEndTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
7335  const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
7336
7337  if (swiper.allowClick) {
7338    const pathTree = e.path || e.composedPath && e.composedPath();
7339    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);
7340    swiper.emit('tap click', e);
7341
7342    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
7343      swiper.emit('doubleTap doubleClick', e);
7344    }
7345  }
7346
7347  data.lastClickTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
7348  (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {
7349    if (!swiper.destroyed) swiper.allowClick = true;
7350  });
7351
7352  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
7353    data.isTouched = false;
7354    data.isMoved = false;
7355    data.startMoving = false;
7356    return;
7357  }
7358
7359  data.isTouched = false;
7360  data.isMoved = false;
7361  data.startMoving = false;
7362  let currentPos;
7363
7364  if (params.followFinger) {
7365    currentPos = rtl ? swiper.translate : -swiper.translate;
7366  } else {
7367    currentPos = -data.currentTranslate;
7368  }
7369
7370  if (params.cssMode) {
7371    return;
7372  }
7373
7374  if (swiper.params.freeMode && params.freeMode.enabled) {
7375    swiper.freeMode.onTouchEnd({
7376      currentPos
7377    });
7378    return;
7379  } // Find current slide
7380
7381
7382  let stopIndex = 0;
7383  let groupSize = swiper.slidesSizesGrid[0];
7384
7385  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
7386    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
7387
7388    if (typeof slidesGrid[i + increment] !== 'undefined') {
7389      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
7390        stopIndex = i;
7391        groupSize = slidesGrid[i + increment] - slidesGrid[i];
7392      }
7393    } else if (currentPos >= slidesGrid[i]) {
7394      stopIndex = i;
7395      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
7396    }
7397  }
7398
7399  let rewindFirstIndex = null;
7400  let rewindLastIndex = null;
7401
7402  if (params.rewind) {
7403    if (swiper.isBeginning) {
7404      rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
7405    } else if (swiper.isEnd) {
7406      rewindFirstIndex = 0;
7407    }
7408  } // Find current slide size
7409
7410
7411  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
7412  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
7413
7414  if (timeDiff > params.longSwipesMs) {
7415    // Long touches
7416    if (!params.longSwipes) {
7417      swiper.slideTo(swiper.activeIndex);
7418      return;
7419    }
7420
7421    if (swiper.swipeDirection === 'next') {
7422      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
7423    }
7424
7425    if (swiper.swipeDirection === 'prev') {
7426      if (ratio > 1 - params.longSwipesRatio) {
7427        swiper.slideTo(stopIndex + increment);
7428      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
7429        swiper.slideTo(rewindLastIndex);
7430      } else {
7431        swiper.slideTo(stopIndex);
7432      }
7433    }
7434  } else {
7435    // Short swipes
7436    if (!params.shortSwipes) {
7437      swiper.slideTo(swiper.activeIndex);
7438      return;
7439    }
7440
7441    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
7442
7443    if (!isNavButtonTarget) {
7444      if (swiper.swipeDirection === 'next') {
7445        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
7446      }
7447
7448      if (swiper.swipeDirection === 'prev') {
7449        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
7450      }
7451    } else if (e.target === swiper.navigation.nextEl) {
7452      swiper.slideTo(stopIndex + increment);
7453    } else {
7454      swiper.slideTo(stopIndex);
7455    }
7456  }
7457}
7458
7459/***/ }),
7460
vendor: 7,844 bytes, lines 7461-7700
7461/***/ "./node_modules/swiper/core/events/onTouchMove.js":
7462/*!********************************************************!*\
7463  !*** ./node_modules/swiper/core/events/onTouchMove.js ***!
7464  \********************************************************/
7465/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7466
7467"use strict";
7468__webpack_require__.r(__webpack_exports__);
7469/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7470/* harmony export */   "default": function() { return /* binding */ onTouchMove; }
7471/* harmony export */ });
7472/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
7473/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
7474/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7475
7476
7477
7478function onTouchMove(event) {
7479  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
7480  const swiper = this;
7481  const data = swiper.touchEventsData;
7482  const {
7483    params,
7484    touches,
7485    rtlTranslate: rtl,
7486    enabled
7487  } = swiper;
7488  if (!enabled) return;
7489  let e = event;
7490  if (e.originalEvent) e = e.originalEvent;
7491
7492  if (!data.isTouched) {
7493    if (data.startMoving && data.isScrolling) {
7494      swiper.emit('touchMoveOpposite', e);
7495    }
7496
7497    return;
7498  }
7499
7500  if (data.isTouchEvent && e.type !== 'touchmove') return;
7501  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
7502  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
7503  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
7504
7505  if (e.preventedByNestedSwiper) {
7506    touches.startX = pageX;
7507    touches.startY = pageY;
7508    return;
7509  }
7510
7511  if (!swiper.allowTouchMove) {
7512    if (!(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) {
7513      swiper.allowClick = false;
7514    }
7515
7516    if (data.isTouched) {
7517      Object.assign(touches, {
7518        startX: pageX,
7519        startY: pageY,
7520        currentX: pageX,
7521        currentY: pageY
7522      });
7523      data.touchStartTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
7524    }
7525
7526    return;
7527  }
7528
7529  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
7530    if (swiper.isVertical()) {
7531      // Vertical
7532      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
7533        data.isTouched = false;
7534        data.isMoved = false;
7535        return;
7536      }
7537    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
7538      return;
7539    }
7540  }
7541
7542  if (data.isTouchEvent && document.activeElement) {
7543    if (e.target === document.activeElement && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) {
7544      data.isMoved = true;
7545      swiper.allowClick = false;
7546      return;
7547    }
7548  }
7549
7550  if (data.allowTouchCallbacks) {
7551    swiper.emit('touchMove', e);
7552  }
7553
7554  if (e.targetTouches && e.targetTouches.length > 1) return;
7555  touches.currentX = pageX;
7556  touches.currentY = pageY;
7557  const diffX = touches.currentX - touches.startX;
7558  const diffY = touches.currentY - touches.startY;
7559  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
7560
7561  if (typeof data.isScrolling === 'undefined') {
7562    let touchAngle;
7563
7564    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
7565      data.isScrolling = false;
7566    } else {
7567      // eslint-disable-next-line
7568      if (diffX * diffX + diffY * diffY >= 25) {
7569        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
7570        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
7571      }
7572    }
7573  }
7574
7575  if (data.isScrolling) {
7576    swiper.emit('touchMoveOpposite', e);
7577  }
7578
7579  if (typeof data.startMoving === 'undefined') {
7580    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
7581      data.startMoving = true;
7582    }
7583  }
7584
7585  if (data.isScrolling) {
7586    data.isTouched = false;
7587    return;
7588  }
7589
7590  if (!data.startMoving) {
7591    return;
7592  }
7593
7594  swiper.allowClick = false;
7595
7596  if (!params.cssMode && e.cancelable) {
7597    e.preventDefault();
7598  }
7599
7600  if (params.touchMoveStopPropagation && !params.nested) {
7601    e.stopPropagation();
7602  }
7603
7604  if (!data.isMoved) {
7605    if (params.loop && !params.cssMode) {
7606      swiper.loopFix();
7607    }
7608
7609    data.startTranslate = swiper.getTranslate();
7610    swiper.setTransition(0);
7611
7612    if (swiper.animating) {
7613      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
7614    }
7615
7616    data.allowMomentumBounce = false; // Grab Cursor
7617
7618    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
7619      swiper.setGrabCursor(true);
7620    }
7621
7622    swiper.emit('sliderFirstMove', e);
7623  }
7624
7625  swiper.emit('sliderMove', e);
7626  data.isMoved = true;
7627  let diff = swiper.isHorizontal() ? diffX : diffY;
7628  touches.diff = diff;
7629  diff *= params.touchRatio;
7630  if (rtl) diff = -diff;
7631  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
7632  data.currentTranslate = diff + data.startTranslate;
7633  let disableParentSwiper = true;
7634  let resistanceRatio = params.resistanceRatio;
7635
7636  if (params.touchReleaseOnEdges) {
7637    resistanceRatio = 0;
7638  }
7639
7640  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
7641    disableParentSwiper = false;
7642    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
7643  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
7644    disableParentSwiper = false;
7645    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
7646  }
7647
7648  if (disableParentSwiper) {
7649    e.preventedByNestedSwiper = true;
7650  } // Directions locks
7651
7652
7653  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
7654    data.currentTranslate = data.startTranslate;
7655  }
7656
7657  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
7658    data.currentTranslate = data.startTranslate;
7659  }
7660
7661  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
7662    data.currentTranslate = data.startTranslate;
7663  } // Threshold
7664
7665
7666  if (params.threshold > 0) {
7667    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
7668      if (!data.allowThresholdMove) {
7669        data.allowThresholdMove = true;
7670        touches.startX = touches.currentX;
7671        touches.startY = touches.currentY;
7672        data.currentTranslate = data.startTranslate;
7673        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
7674        return;
7675      }
7676    } else {
7677      data.currentTranslate = data.startTranslate;
7678      return;
7679    }
7680  }
7681
7682  if (!params.followFinger || params.cssMode) return; // Update active index in free mode
7683
7684  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
7685    swiper.updateActiveIndex();
7686    swiper.updateSlidesClasses();
7687  }
7688
7689  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {
7690    swiper.freeMode.onTouchMove();
7691  } // Update progress
7692
7693
7694  swiper.updateProgress(data.currentTranslate); // Update translate
7695
7696  swiper.setTranslate(data.currentTranslate);
7697}
7698
7699/***/ }),
7700
vendor: 5,765 bytes, lines 7701-7849
7701/***/ "./node_modules/swiper/core/events/onTouchStart.js":
7702/*!*********************************************************!*\
7703  !*** ./node_modules/swiper/core/events/onTouchStart.js ***!
7704  \*********************************************************/
7705/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7706
7707"use strict";
7708__webpack_require__.r(__webpack_exports__);
7709/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7710/* harmony export */   "default": function() { return /* binding */ onTouchStart; }
7711/* harmony export */ });
7712/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
7713/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
7714/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7715
7716
7717 // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
7718
7719function closestElement(selector, base = this) {
7720  function __closestFrom(el) {
7721    if (!el || el === (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)() || el === (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)()) return null;
7722    if (el.assignedSlot) el = el.assignedSlot;
7723    const found = el.closest(selector);
7724
7725    if (!found && !el.getRootNode) {
7726      return null;
7727    }
7728
7729    return found || __closestFrom(el.getRootNode().host);
7730  }
7731
7732  return __closestFrom(base);
7733}
7734
7735function onTouchStart(event) {
7736  const swiper = this;
7737  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
7738  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
7739  const data = swiper.touchEventsData;
7740  const {
7741    params,
7742    touches,
7743    enabled
7744  } = swiper;
7745  if (!enabled) return;
7746
7747  if (swiper.animating && params.preventInteractionOnTransition) {
7748    return;
7749  }
7750
7751  if (!swiper.animating && params.cssMode && params.loop) {
7752    swiper.loopFix();
7753  }
7754
7755  let e = event;
7756  if (e.originalEvent) e = e.originalEvent;
7757  let $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target);
7758
7759  if (params.touchEventsTarget === 'wrapper') {
7760    if (!$targetEl.closest(swiper.wrapperEl).length) return;
7761  }
7762
7763  data.isTouchEvent = e.type === 'touchstart';
7764  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
7765  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
7766  if (data.isTouched && data.isMoved) return; // change target el for shadow root component
7767
7768  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line
7769
7770  const eventPath = event.composedPath ? event.composedPath() : event.path;
7771
7772  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
7773    $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(eventPath[0]);
7774  }
7775
7776  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
7777  const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element
7778
7779  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {
7780    swiper.allowClick = true;
7781    return;
7782  }
7783
7784  if (params.swipeHandler) {
7785    if (!$targetEl.closest(params.swipeHandler)[0]) return;
7786  }
7787
7788  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
7789  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
7790  const startX = touches.currentX;
7791  const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
7792
7793  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
7794  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
7795
7796  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
7797    if (edgeSwipeDetection === 'prevent') {
7798      event.preventDefault();
7799    } else {
7800      return;
7801    }
7802  }
7803
7804  Object.assign(data, {
7805    isTouched: true,
7806    isMoved: false,
7807    allowTouchCallbacks: true,
7808    isScrolling: undefined,
7809    startMoving: undefined
7810  });
7811  touches.startX = startX;
7812  touches.startY = startY;
7813  data.touchStartTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
7814  swiper.allowClick = true;
7815  swiper.updateSize();
7816  swiper.swipeDirection = undefined;
7817  if (params.threshold > 0) data.allowThresholdMove = false;
7818
7819  if (e.type !== 'touchstart') {
7820    let preventDefault = true;
7821
7822    if ($targetEl.is(data.focusableElements)) {
7823      preventDefault = false;
7824
7825      if ($targetEl[0].nodeName === 'SELECT') {
7826        data.isTouched = false;
7827      }
7828    }
7829
7830    if (document.activeElement && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {
7831      document.activeElement.blur();
7832    }
7833
7834    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
7835
7836    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {
7837      e.preventDefault();
7838    }
7839  }
7840
7841  if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
7842    swiper.freeMode.onTouchStart();
7843  }
7844
7845  swiper.emit('touchStart', e);
7846}
7847
7848/***/ }),
7849
vendor: 999 bytes, lines 7850-7868
7850/***/ "./node_modules/swiper/core/grab-cursor/index.js":
7851/*!*******************************************************!*\
7852  !*** ./node_modules/swiper/core/grab-cursor/index.js ***!
7853  \*******************************************************/
7854/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7855
7856"use strict";
7857__webpack_require__.r(__webpack_exports__);
7858/* harmony import */ var _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js");
7859/* harmony import */ var _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unsetGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js");
7860
7861
7862/* harmony default export */ __webpack_exports__["default"] = ({
7863  setGrabCursor: _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__["default"],
7864  unsetGrabCursor: _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__["default"]
7865});
7866
7867/***/ }),
7868
vendor: 987 bytes, lines 7869-7889
7869/***/ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js":
7870/*!***************************************************************!*\
7871  !*** ./node_modules/swiper/core/grab-cursor/setGrabCursor.js ***!
7872  \***************************************************************/
7873/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7874
7875"use strict";
7876__webpack_require__.r(__webpack_exports__);
7877/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7878/* harmony export */   "default": function() { return /* binding */ setGrabCursor; }
7879/* harmony export */ });
7880function setGrabCursor(moving) {
7881  const swiper = this;
7882  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
7883  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
7884  el.style.cursor = 'move';
7885  el.style.cursor = moving ? 'grabbing' : 'grab';
7886}
7887
7888/***/ }),
7889
vendor: 900 bytes, lines 7890-7912
7890/***/ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js":
7891/*!*****************************************************************!*\
7892  !*** ./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js ***!
7893  \*****************************************************************/
7894/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7895
7896"use strict";
7897__webpack_require__.r(__webpack_exports__);
7898/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7899/* harmony export */   "default": function() { return /* binding */ unsetGrabCursor; }
7900/* harmony export */ });
7901function unsetGrabCursor() {
7902  const swiper = this;
7903
7904  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
7905    return;
7906  }
7907
7908  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
7909}
7910
7911/***/ }),
7912
vendor: 939 bytes, lines 7913-7931
7913/***/ "./node_modules/swiper/core/images/index.js":
7914/*!**************************************************!*\
7915  !*** ./node_modules/swiper/core/images/index.js ***!
7916  \**************************************************/
7917/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7918
7919"use strict";
7920__webpack_require__.r(__webpack_exports__);
7921/* harmony import */ var _loadImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loadImage.js */ "./node_modules/swiper/core/images/loadImage.js");
7922/* harmony import */ var _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./preloadImages.js */ "./node_modules/swiper/core/images/preloadImages.js");
7923
7924
7925/* harmony default export */ __webpack_exports__["default"] = ({
7926  loadImage: _loadImage_js__WEBPACK_IMPORTED_MODULE_0__["default"],
7927  preloadImages: _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__["default"]
7928});
7929
7930/***/ }),
7931
vendor: 1,664 bytes, lines 7932-7984
7932/***/ "./node_modules/swiper/core/images/loadImage.js":
7933/*!******************************************************!*\
7934  !*** ./node_modules/swiper/core/images/loadImage.js ***!
7935  \******************************************************/
7936/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7937
7938"use strict";
7939__webpack_require__.r(__webpack_exports__);
7940/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7941/* harmony export */   "default": function() { return /* binding */ loadImage; }
7942/* harmony export */ });
7943/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
7944/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
7945
7946
7947function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
7948  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
7949  let image;
7950
7951  function onReady() {
7952    if (callback) callback();
7953  }
7954
7955  const isPicture = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl).parent('picture')[0];
7956
7957  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
7958    if (src) {
7959      image = new window.Image();
7960      image.onload = onReady;
7961      image.onerror = onReady;
7962
7963      if (sizes) {
7964        image.sizes = sizes;
7965      }
7966
7967      if (srcset) {
7968        image.srcset = srcset;
7969      }
7970
7971      if (src) {
7972        image.src = src;
7973      }
7974    } else {
7975      onReady();
7976    }
7977  } else {
7978    // image already loaded...
7979    onReady();
7980  }
7981}
7982
7983/***/ }),
7984
vendor: 1,358 bytes, lines 7985-8017
7985/***/ "./node_modules/swiper/core/images/preloadImages.js":
7986/*!**********************************************************!*\
7987  !*** ./node_modules/swiper/core/images/preloadImages.js ***!
7988  \**********************************************************/
7989/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7990
7991"use strict";
7992__webpack_require__.r(__webpack_exports__);
7993/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7994/* harmony export */   "default": function() { return /* binding */ preloadImages; }
7995/* harmony export */ });
7996function preloadImages() {
7997  const swiper = this;
7998  swiper.imagesToLoad = swiper.$el.find('img');
7999
8000  function onReady() {
8001    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
8002    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
8003
8004    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
8005      if (swiper.params.updateOnImagesReady) swiper.update();
8006      swiper.emit('imagesReady');
8007    }
8008  }
8009
8010  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
8011    const imageEl = swiper.imagesToLoad[i];
8012    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
8013  }
8014}
8015
8016/***/ }),
8017
vendor: 1,142 bytes, lines 8018-8039
8018/***/ "./node_modules/swiper/core/loop/index.js":
8019/*!************************************************!*\
8020  !*** ./node_modules/swiper/core/loop/index.js ***!
8021  \************************************************/
8022/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8023
8024"use strict";
8025__webpack_require__.r(__webpack_exports__);
8026/* harmony import */ var _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loopCreate.js */ "./node_modules/swiper/core/loop/loopCreate.js");
8027/* harmony import */ var _loopFix_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loopFix.js */ "./node_modules/swiper/core/loop/loopFix.js");
8028/* harmony import */ var _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loopDestroy.js */ "./node_modules/swiper/core/loop/loopDestroy.js");
8029
8030
8031
8032/* harmony default export */ __webpack_exports__["default"] = ({
8033  loopCreate: _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
8034  loopFix: _loopFix_js__WEBPACK_IMPORTED_MODULE_1__["default"],
8035  loopDestroy: _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__["default"]
8036});
8037
8038/***/ }),
8039
vendor: 3,199 bytes, lines 8040-8111
8040/***/ "./node_modules/swiper/core/loop/loopCreate.js":
8041/*!*****************************************************!*\
8042  !*** ./node_modules/swiper/core/loop/loopCreate.js ***!
8043  \*****************************************************/
8044/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8045
8046"use strict";
8047__webpack_require__.r(__webpack_exports__);
8048/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8049/* harmony export */   "default": function() { return /* binding */ loopCreate; }
8050/* harmony export */ });
8051/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
8052/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
8053
8054
8055function loopCreate() {
8056  const swiper = this;
8057  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
8058  const {
8059    params,
8060    $wrapperEl
8061  } = swiper; // Remove duplicated slides
8062
8063  const $selector = $wrapperEl.children().length > 0 ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($wrapperEl.children()[0].parentNode) : $wrapperEl;
8064  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
8065  let slides = $selector.children(`.${params.slideClass}`);
8066
8067  if (params.loopFillGroupWithBlank) {
8068    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
8069
8070    if (blankSlidesNum !== params.slidesPerGroup) {
8071      for (let i = 0; i < blankSlidesNum; i += 1) {
8072        const blankNode = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
8073        $selector.append(blankNode);
8074      }
8075
8076      slides = $selector.children(`.${params.slideClass}`);
8077    }
8078  }
8079
8080  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
8081  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
8082  swiper.loopedSlides += params.loopAdditionalSlides;
8083
8084  if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {
8085    swiper.loopedSlides = slides.length;
8086  }
8087
8088  const prependSlides = [];
8089  const appendSlides = [];
8090  slides.each((el, index) => {
8091    const slide = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el);
8092    slide.attr('data-swiper-slide-index', index);
8093  });
8094
8095  for (let i = 0; i < swiper.loopedSlides; i += 1) {
8096    const index = i - Math.floor(i / slides.length) * slides.length;
8097    appendSlides.push(slides.eq(index)[0]);
8098    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);
8099  }
8100
8101  for (let i = 0; i < appendSlides.length; i += 1) {
8102    $selector.append((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
8103  }
8104
8105  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
8106    $selector.prepend((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
8107  }
8108}
8109
8110/***/ }),
8111
vendor: 873 bytes, lines 8112-8135
8112/***/ "./node_modules/swiper/core/loop/loopDestroy.js":
8113/*!******************************************************!*\
8114  !*** ./node_modules/swiper/core/loop/loopDestroy.js ***!
8115  \******************************************************/
8116/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8117
8118"use strict";
8119__webpack_require__.r(__webpack_exports__);
8120/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8121/* harmony export */   "default": function() { return /* binding */ loopDestroy; }
8122/* harmony export */ });
8123function loopDestroy() {
8124  const swiper = this;
8125  const {
8126    $wrapperEl,
8127    params,
8128    slides
8129  } = swiper;
8130  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
8131  slides.removeAttr('data-swiper-slide-index');
8132}
8133
8134/***/ }),
8135
vendor: 1,811 bytes, lines 8136-8190
8136/***/ "./node_modules/swiper/core/loop/loopFix.js":
8137/*!**************************************************!*\
8138  !*** ./node_modules/swiper/core/loop/loopFix.js ***!
8139  \**************************************************/
8140/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8141
8142"use strict";
8143__webpack_require__.r(__webpack_exports__);
8144/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8145/* harmony export */   "default": function() { return /* binding */ loopFix; }
8146/* harmony export */ });
8147function loopFix() {
8148  const swiper = this;
8149  swiper.emit('beforeLoopFix');
8150  const {
8151    activeIndex,
8152    slides,
8153    loopedSlides,
8154    allowSlidePrev,
8155    allowSlideNext,
8156    snapGrid,
8157    rtlTranslate: rtl
8158  } = swiper;
8159  let newIndex;
8160  swiper.allowSlidePrev = true;
8161  swiper.allowSlideNext = true;
8162  const snapTranslate = -snapGrid[activeIndex];
8163  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
8164
8165  if (activeIndex < loopedSlides) {
8166    newIndex = slides.length - loopedSlides * 3 + activeIndex;
8167    newIndex += loopedSlides;
8168    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
8169
8170    if (slideChanged && diff !== 0) {
8171      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
8172    }
8173  } else if (activeIndex >= slides.length - loopedSlides) {
8174    // Fix For Positive Oversliding
8175    newIndex = -slides.length + activeIndex + loopedSlides;
8176    newIndex += loopedSlides;
8177    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
8178
8179    if (slideChanged && diff !== 0) {
8180      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
8181    }
8182  }
8183
8184  swiper.allowSlidePrev = allowSlidePrev;
8185  swiper.allowSlideNext = allowSlideNext;
8186  swiper.emit('loopFix');
8187}
8188
8189/***/ }),
8190
vendor: 1,941 bytes, lines 8191-8243
8191/***/ "./node_modules/swiper/core/moduleExtendParams.js":
8192/*!********************************************************!*\
8193  !*** ./node_modules/swiper/core/moduleExtendParams.js ***!
8194  \********************************************************/
8195/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8196
8197"use strict";
8198__webpack_require__.r(__webpack_exports__);
8199/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8200/* harmony export */   "default": function() { return /* binding */ moduleExtendParams; }
8201/* harmony export */ });
8202/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
8203
8204function moduleExtendParams(params, allModulesParams) {
8205  return function extendParams(obj = {}) {
8206    const moduleParamName = Object.keys(obj)[0];
8207    const moduleParams = obj[moduleParamName];
8208
8209    if (typeof moduleParams !== 'object' || moduleParams === null) {
8210      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
8211      return;
8212    }
8213
8214    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {
8215      params[moduleParamName] = {
8216        auto: true
8217      };
8218    }
8219
8220    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
8221      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
8222      return;
8223    }
8224
8225    if (params[moduleParamName] === true) {
8226      params[moduleParamName] = {
8227        enabled: true
8228      };
8229    }
8230
8231    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
8232      params[moduleParamName].enabled = true;
8233    }
8234
8235    if (!params[moduleParamName]) params[moduleParamName] = {
8236      enabled: false
8237    };
8238    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
8239  };
8240}
8241
8242/***/ }),
8243
vendor: 2,792 bytes, lines 8244-8333
8244/***/ "./node_modules/swiper/core/modules/observer/observer.js":
8245/*!***************************************************************!*\
8246  !*** ./node_modules/swiper/core/modules/observer/observer.js ***!
8247  \***************************************************************/
8248/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8249
8250"use strict";
8251__webpack_require__.r(__webpack_exports__);
8252/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8253/* harmony export */   "default": function() { return /* binding */ Observer; }
8254/* harmony export */ });
8255/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
8256
8257function Observer({
8258  swiper,
8259  extendParams,
8260  on,
8261  emit
8262}) {
8263  const observers = [];
8264  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8265
8266  const attach = (target, options = {}) => {
8267    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
8268    const observer = new ObserverFunc(mutations => {
8269      // The observerUpdate event should only be triggered
8270      // once despite the number of mutations.  Additional
8271      // triggers are redundant and are very costly
8272      if (mutations.length === 1) {
8273        emit('observerUpdate', mutations[0]);
8274        return;
8275      }
8276
8277      const observerUpdate = function observerUpdate() {
8278        emit('observerUpdate', mutations[0]);
8279      };
8280
8281      if (window.requestAnimationFrame) {
8282        window.requestAnimationFrame(observerUpdate);
8283      } else {
8284        window.setTimeout(observerUpdate, 0);
8285      }
8286    });
8287    observer.observe(target, {
8288      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
8289      childList: typeof options.childList === 'undefined' ? true : options.childList,
8290      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
8291    });
8292    observers.push(observer);
8293  };
8294
8295  const init = () => {
8296    if (!swiper.params.observer) return;
8297
8298    if (swiper.params.observeParents) {
8299      const containerParents = swiper.$el.parents();
8300
8301      for (let i = 0; i < containerParents.length; i += 1) {
8302        attach(containerParents[i]);
8303      }
8304    } // Observe container
8305
8306
8307    attach(swiper.$el[0], {
8308      childList: swiper.params.observeSlideChildren
8309    }); // Observe wrapper
8310
8311    attach(swiper.$wrapperEl[0], {
8312      attributes: false
8313    });
8314  };
8315
8316  const destroy = () => {
8317    observers.forEach(observer => {
8318      observer.disconnect();
8319    });
8320    observers.splice(0, observers.length);
8321  };
8322
8323  extendParams({
8324    observer: false,
8325    observeParents: false,
8326    observeSlideChildren: false
8327  });
8328  on('init', init);
8329  on('destroy', destroy);
8330}
8331
8332/***/ }),
8333
vendor: 2,822 bytes, lines 8334-8423
8334/***/ "./node_modules/swiper/core/modules/resize/resize.js":
8335/*!***********************************************************!*\
8336  !*** ./node_modules/swiper/core/modules/resize/resize.js ***!
8337  \***********************************************************/
8338/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8339
8340"use strict";
8341__webpack_require__.r(__webpack_exports__);
8342/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8343/* harmony export */   "default": function() { return /* binding */ Resize; }
8344/* harmony export */ });
8345/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
8346
8347function Resize({
8348  swiper,
8349  on,
8350  emit
8351}) {
8352  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8353  let observer = null;
8354  let animationFrame = null;
8355
8356  const resizeHandler = () => {
8357    if (!swiper || swiper.destroyed || !swiper.initialized) return;
8358    emit('beforeResize');
8359    emit('resize');
8360  };
8361
8362  const createObserver = () => {
8363    if (!swiper || swiper.destroyed || !swiper.initialized) return;
8364    observer = new ResizeObserver(entries => {
8365      animationFrame = window.requestAnimationFrame(() => {
8366        const {
8367          width,
8368          height
8369        } = swiper;
8370        let newWidth = width;
8371        let newHeight = height;
8372        entries.forEach(({
8373          contentBoxSize,
8374          contentRect,
8375          target
8376        }) => {
8377          if (target && target !== swiper.el) return;
8378          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
8379          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
8380        });
8381
8382        if (newWidth !== width || newHeight !== height) {
8383          resizeHandler();
8384        }
8385      });
8386    });
8387    observer.observe(swiper.el);
8388  };
8389
8390  const removeObserver = () => {
8391    if (animationFrame) {
8392      window.cancelAnimationFrame(animationFrame);
8393    }
8394
8395    if (observer && observer.unobserve && swiper.el) {
8396      observer.unobserve(swiper.el);
8397      observer = null;
8398    }
8399  };
8400
8401  const orientationChangeHandler = () => {
8402    if (!swiper || swiper.destroyed || !swiper.initialized) return;
8403    emit('orientationchange');
8404  };
8405
8406  on('init', () => {
8407    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
8408      createObserver();
8409      return;
8410    }
8411
8412    window.addEventListener('resize', resizeHandler);
8413    window.addEventListener('orientationchange', orientationChangeHandler);
8414  });
8415  on('destroy', () => {
8416    removeObserver();
8417    window.removeEventListener('resize', resizeHandler);
8418    window.removeEventListener('orientationchange', orientationChangeHandler);
8419  });
8420}
8421
8422/***/ }),
8423
vendor: 2,148 bytes, lines 8424-8457
8424/***/ "./node_modules/swiper/core/slide/index.js":
8425/*!*************************************************!*\
8426  !*** ./node_modules/swiper/core/slide/index.js ***!
8427  \*************************************************/
8428/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8429
8430"use strict";
8431__webpack_require__.r(__webpack_exports__);
8432/* harmony import */ var _slideTo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slideTo.js */ "./node_modules/swiper/core/slide/slideTo.js");
8433/* harmony import */ var _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slideToLoop.js */ "./node_modules/swiper/core/slide/slideToLoop.js");
8434/* harmony import */ var _slideNext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slideNext.js */ "./node_modules/swiper/core/slide/slideNext.js");
8435/* harmony import */ var _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slidePrev.js */ "./node_modules/swiper/core/slide/slidePrev.js");
8436/* harmony import */ var _slideReset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./slideReset.js */ "./node_modules/swiper/core/slide/slideReset.js");
8437/* harmony import */ var _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./slideToClosest.js */ "./node_modules/swiper/core/slide/slideToClosest.js");
8438/* harmony import */ var _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./slideToClickedSlide.js */ "./node_modules/swiper/core/slide/slideToClickedSlide.js");
8439
8440
8441
8442
8443
8444
8445
8446/* harmony default export */ __webpack_exports__["default"] = ({
8447  slideTo: _slideTo_js__WEBPACK_IMPORTED_MODULE_0__["default"],
8448  slideToLoop: _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__["default"],
8449  slideNext: _slideNext_js__WEBPACK_IMPORTED_MODULE_2__["default"],
8450  slidePrev: _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__["default"],
8451  slideReset: _slideReset_js__WEBPACK_IMPORTED_MODULE_4__["default"],
8452  slideToClosest: _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__["default"],
8453  slideToClickedSlide: _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__["default"]
8454});
8455
8456/***/ }),
8457
vendor: 1,498 bytes, lines 8458-8501
8458/***/ "./node_modules/swiper/core/slide/slideNext.js":
8459/*!*****************************************************!*\
8460  !*** ./node_modules/swiper/core/slide/slideNext.js ***!
8461  \*****************************************************/
8462/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8463
8464"use strict";
8465__webpack_require__.r(__webpack_exports__);
8466/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8467/* harmony export */   "default": function() { return /* binding */ slideNext; }
8468/* harmony export */ });
8469/* eslint no-unused-vars: "off" */
8470function slideNext(speed = this.params.speed, runCallbacks = true, internal) {
8471  const swiper = this;
8472  const {
8473    animating,
8474    enabled,
8475    params
8476  } = swiper;
8477  if (!enabled) return swiper;
8478  let perGroup = params.slidesPerGroup;
8479
8480  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
8481    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
8482  }
8483
8484  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
8485
8486  if (params.loop) {
8487    if (animating && params.loopPreventsSlide) return false;
8488    swiper.loopFix(); // eslint-disable-next-line
8489
8490    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
8491  }
8492
8493  if (params.rewind && swiper.isEnd) {
8494    return swiper.slideTo(0, speed, runCallbacks, internal);
8495  }
8496
8497  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
8498}
8499
8500/***/ }),
8501
vendor: 2,573 bytes, lines 8502-8579
8502/***/ "./node_modules/swiper/core/slide/slidePrev.js":
8503/*!*****************************************************!*\
8504  !*** ./node_modules/swiper/core/slide/slidePrev.js ***!
8505  \*****************************************************/
8506/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8507
8508"use strict";
8509__webpack_require__.r(__webpack_exports__);
8510/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8511/* harmony export */   "default": function() { return /* binding */ slidePrev; }
8512/* harmony export */ });
8513/* eslint no-unused-vars: "off" */
8514function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
8515  const swiper = this;
8516  const {
8517    params,
8518    animating,
8519    snapGrid,
8520    slidesGrid,
8521    rtlTranslate,
8522    enabled
8523  } = swiper;
8524  if (!enabled) return swiper;
8525
8526  if (params.loop) {
8527    if (animating && params.loopPreventsSlide) return false;
8528    swiper.loopFix(); // eslint-disable-next-line
8529
8530    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
8531  }
8532
8533  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
8534
8535  function normalize(val) {
8536    if (val < 0) return -Math.floor(Math.abs(val));
8537    return Math.floor(val);
8538  }
8539
8540  const normalizedTranslate = normalize(translate);
8541  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
8542  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
8543
8544  if (typeof prevSnap === 'undefined' && params.cssMode) {
8545    let prevSnapIndex;
8546    snapGrid.forEach((snap, snapIndex) => {
8547      if (normalizedTranslate >= snap) {
8548        // prevSnap = snap;
8549        prevSnapIndex = snapIndex;
8550      }
8551    });
8552
8553    if (typeof prevSnapIndex !== 'undefined') {
8554      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
8555    }
8556  }
8557
8558  let prevIndex = 0;
8559
8560  if (typeof prevSnap !== 'undefined') {
8561    prevIndex = slidesGrid.indexOf(prevSnap);
8562    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
8563
8564    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
8565      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
8566      prevIndex = Math.max(prevIndex, 0);
8567    }
8568  }
8569
8570  if (params.rewind && swiper.isBeginning) {
8571    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
8572    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
8573  }
8574
8575  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
8576}
8577
8578/***/ }),
8579
vendor: 792 bytes, lines 8580-8598
8580/***/ "./node_modules/swiper/core/slide/slideReset.js":
8581/*!******************************************************!*\
8582  !*** ./node_modules/swiper/core/slide/slideReset.js ***!
8583  \******************************************************/
8584/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8585
8586"use strict";
8587__webpack_require__.r(__webpack_exports__);
8588/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8589/* harmony export */   "default": function() { return /* binding */ slideReset; }
8590/* harmony export */ });
8591/* eslint no-unused-vars: "off" */
8592function slideReset(speed = this.params.speed, runCallbacks = true, internal) {
8593  const swiper = this;
8594  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
8595}
8596
8597/***/ }),
8598
vendor: 6,502 bytes, lines 8599-8793
8599/***/ "./node_modules/swiper/core/slide/slideTo.js":
8600/*!***************************************************!*\
8601  !*** ./node_modules/swiper/core/slide/slideTo.js ***!
8602  \***************************************************/
8603/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8604
8605"use strict";
8606__webpack_require__.r(__webpack_exports__);
8607/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8608/* harmony export */   "default": function() { return /* binding */ slideTo; }
8609/* harmony export */ });
8610/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
8611
8612function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {
8613  if (typeof index !== 'number' && typeof index !== 'string') {
8614    throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);
8615  }
8616
8617  if (typeof index === 'string') {
8618    /**
8619     * The `index` argument converted from `string` to `number`.
8620     * @type {number}
8621     */
8622    const indexAsNumber = parseInt(index, 10);
8623    /**
8624     * Determines whether the `index` argument is a valid `number`
8625     * after being converted from the `string` type.
8626     * @type {boolean}
8627     */
8628
8629    const isValidNumber = isFinite(indexAsNumber);
8630
8631    if (!isValidNumber) {
8632      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
8633    } // Knowing that the converted `index` is a valid number,
8634    // we can update the original argument's value.
8635
8636
8637    index = indexAsNumber;
8638  }
8639
8640  const swiper = this;
8641  let slideIndex = index;
8642  if (slideIndex < 0) slideIndex = 0;
8643  const {
8644    params,
8645    snapGrid,
8646    slidesGrid,
8647    previousIndex,
8648    activeIndex,
8649    rtlTranslate: rtl,
8650    wrapperEl,
8651    enabled
8652  } = swiper;
8653
8654  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {
8655    return false;
8656  }
8657
8658  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
8659  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
8660  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
8661  const translate = -snapGrid[snapIndex]; // Normalize slideIndex
8662
8663  if (params.normalizeSlideIndex) {
8664    for (let i = 0; i < slidesGrid.length; i += 1) {
8665      const normalizedTranslate = -Math.floor(translate * 100);
8666      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
8667      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
8668
8669      if (typeof slidesGrid[i + 1] !== 'undefined') {
8670        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
8671          slideIndex = i;
8672        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
8673          slideIndex = i + 1;
8674        }
8675      } else if (normalizedTranslate >= normalizedGrid) {
8676        slideIndex = i;
8677      }
8678    }
8679  } // Directions locks
8680
8681
8682  if (swiper.initialized && slideIndex !== activeIndex) {
8683    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
8684      return false;
8685    }
8686
8687    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
8688      if ((activeIndex || 0) !== slideIndex) return false;
8689    }
8690  }
8691
8692  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
8693    swiper.emit('beforeSlideChangeStart');
8694  } // Update progress
8695
8696
8697  swiper.updateProgress(translate);
8698  let direction;
8699  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
8700
8701  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
8702    swiper.updateActiveIndex(slideIndex); // Update Height
8703
8704    if (params.autoHeight) {
8705      swiper.updateAutoHeight();
8706    }
8707
8708    swiper.updateSlidesClasses();
8709
8710    if (params.effect !== 'slide') {
8711      swiper.setTranslate(translate);
8712    }
8713
8714    if (direction !== 'reset') {
8715      swiper.transitionStart(runCallbacks, direction);
8716      swiper.transitionEnd(runCallbacks, direction);
8717    }
8718
8719    return false;
8720  }
8721
8722  if (params.cssMode) {
8723    const isH = swiper.isHorizontal();
8724    const t = rtl ? translate : -translate;
8725
8726    if (speed === 0) {
8727      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
8728
8729      if (isVirtual) {
8730        swiper.wrapperEl.style.scrollSnapType = 'none';
8731        swiper._immediateVirtual = true;
8732      }
8733
8734      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
8735
8736      if (isVirtual) {
8737        requestAnimationFrame(() => {
8738          swiper.wrapperEl.style.scrollSnapType = '';
8739          swiper._swiperImmediateVirtual = false;
8740        });
8741      }
8742    } else {
8743      if (!swiper.support.smoothScroll) {
8744        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.animateCSSModeScroll)({
8745          swiper,
8746          targetPosition: t,
8747          side: isH ? 'left' : 'top'
8748        });
8749        return true;
8750      }
8751
8752      wrapperEl.scrollTo({
8753        [isH ? 'left' : 'top']: t,
8754        behavior: 'smooth'
8755      });
8756    }
8757
8758    return true;
8759  }
8760
8761  swiper.setTransition(speed);
8762  swiper.setTranslate(translate);
8763  swiper.updateActiveIndex(slideIndex);
8764  swiper.updateSlidesClasses();
8765  swiper.emit('beforeTransitionStart', speed, internal);
8766  swiper.transitionStart(runCallbacks, direction);
8767
8768  if (speed === 0) {
8769    swiper.transitionEnd(runCallbacks, direction);
8770  } else if (!swiper.animating) {
8771    swiper.animating = true;
8772
8773    if (!swiper.onSlideToWrapperTransitionEnd) {
8774      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
8775        if (!swiper || swiper.destroyed) return;
8776        if (e.target !== this) return;
8777        swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
8778        swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
8779        swiper.onSlideToWrapperTransitionEnd = null;
8780        delete swiper.onSlideToWrapperTransitionEnd;
8781        swiper.transitionEnd(runCallbacks, direction);
8782      };
8783    }
8784
8785    swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
8786    swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
8787  }
8788
8789  return true;
8790}
8791
8792/***/ }),
8793
vendor: 2,456 bytes, lines 8794-8848
8794/***/ "./node_modules/swiper/core/slide/slideToClickedSlide.js":
8795/*!***************************************************************!*\
8796  !*** ./node_modules/swiper/core/slide/slideToClickedSlide.js ***!
8797  \***************************************************************/
8798/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8799
8800"use strict";
8801__webpack_require__.r(__webpack_exports__);
8802/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8803/* harmony export */   "default": function() { return /* binding */ slideToClickedSlide; }
8804/* harmony export */ });
8805/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
8806/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
8807
8808
8809function slideToClickedSlide() {
8810  const swiper = this;
8811  const {
8812    params,
8813    $wrapperEl
8814  } = swiper;
8815  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
8816  let slideToIndex = swiper.clickedIndex;
8817  let realIndex;
8818
8819  if (params.loop) {
8820    if (swiper.animating) return;
8821    realIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
8822
8823    if (params.centeredSlides) {
8824      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
8825        swiper.loopFix();
8826        slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
8827        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
8828          swiper.slideTo(slideToIndex);
8829        });
8830      } else {
8831        swiper.slideTo(slideToIndex);
8832      }
8833    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
8834      swiper.loopFix();
8835      slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
8836      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
8837        swiper.slideTo(slideToIndex);
8838      });
8839    } else {
8840      swiper.slideTo(slideToIndex);
8841    }
8842  } else {
8843    swiper.slideTo(slideToIndex);
8844  }
8845}
8846
8847/***/ }),
8848
vendor: 1,975 bytes, lines 8849-8894
8849/***/ "./node_modules/swiper/core/slide/slideToClosest.js":
8850/*!**********************************************************!*\
8851  !*** ./node_modules/swiper/core/slide/slideToClosest.js ***!
8852  \**********************************************************/
8853/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8854
8855"use strict";
8856__webpack_require__.r(__webpack_exports__);
8857/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8858/* harmony export */   "default": function() { return /* binding */ slideToClosest; }
8859/* harmony export */ });
8860/* eslint no-unused-vars: "off" */
8861function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
8862  const swiper = this;
8863  let index = swiper.activeIndex;
8864  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
8865  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
8866  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
8867
8868  if (translate >= swiper.snapGrid[snapIndex]) {
8869    // The current translate is on or after the current snap index, so the choice
8870    // is between the current index and the one after it.
8871    const currentSnap = swiper.snapGrid[snapIndex];
8872    const nextSnap = swiper.snapGrid[snapIndex + 1];
8873
8874    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
8875      index += swiper.params.slidesPerGroup;
8876    }
8877  } else {
8878    // The current translate is before the current snap index, so the choice
8879    // is between the current index and the one before it.
8880    const prevSnap = swiper.snapGrid[snapIndex - 1];
8881    const currentSnap = swiper.snapGrid[snapIndex];
8882
8883    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
8884      index -= swiper.params.slidesPerGroup;
8885    }
8886  }
8887
8888  index = Math.max(index, 0);
8889  index = Math.min(index, swiper.slidesGrid.length - 1);
8890  return swiper.slideTo(index, speed, runCallbacks, internal);
8891}
8892
8893/***/ }),
8894
vendor: 1,541 bytes, lines 8895-8941
8895/***/ "./node_modules/swiper/core/slide/slideToLoop.js":
8896/*!*******************************************************!*\
8897  !*** ./node_modules/swiper/core/slide/slideToLoop.js ***!
8898  \*******************************************************/
8899/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8900
8901"use strict";
8902__webpack_require__.r(__webpack_exports__);
8903/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8904/* harmony export */   "default": function() { return /* binding */ slideToLoop; }
8905/* harmony export */ });
8906function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {
8907  if (typeof index === 'string') {
8908    /**
8909     * The `index` argument converted from `string` to `number`.
8910     * @type {number}
8911     */
8912    const indexAsNumber = parseInt(index, 10);
8913    /**
8914     * Determines whether the `index` argument is a valid `number`
8915     * after being converted from the `string` type.
8916     * @type {boolean}
8917     */
8918
8919    const isValidNumber = isFinite(indexAsNumber);
8920
8921    if (!isValidNumber) {
8922      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
8923    } // Knowing that the converted `index` is a valid number,
8924    // we can update the original argument's value.
8925
8926
8927    index = indexAsNumber;
8928  }
8929
8930  const swiper = this;
8931  let newIndex = index;
8932
8933  if (swiper.params.loop) {
8934    newIndex += swiper.loopedSlides;
8935  }
8936
8937  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
8938}
8939
8940/***/ }),
8941
vendor: 1,249 bytes, lines 8942-8963
8942/***/ "./node_modules/swiper/core/transition/index.js":
8943/*!******************************************************!*\
8944  !*** ./node_modules/swiper/core/transition/index.js ***!
8945  \******************************************************/
8946/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8947
8948"use strict";
8949__webpack_require__.r(__webpack_exports__);
8950/* harmony import */ var _setTransition_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setTransition.js */ "./node_modules/swiper/core/transition/setTransition.js");
8951/* harmony import */ var _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transitionStart.js */ "./node_modules/swiper/core/transition/transitionStart.js");
8952/* harmony import */ var _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transitionEnd.js */ "./node_modules/swiper/core/transition/transitionEnd.js");
8953
8954
8955
8956/* harmony default export */ __webpack_exports__["default"] = ({
8957  setTransition: _setTransition_js__WEBPACK_IMPORTED_MODULE_0__["default"],
8958  transitionStart: _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__["default"],
8959  transitionEnd: _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__["default"]
8960});
8961
8962/***/ }),
8963
vendor: 823 bytes, lines 8964-8986
8964/***/ "./node_modules/swiper/core/transition/setTransition.js":
8965/*!**************************************************************!*\
8966  !*** ./node_modules/swiper/core/transition/setTransition.js ***!
8967  \**************************************************************/
8968/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8969
8970"use strict";
8971__webpack_require__.r(__webpack_exports__);
8972/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8973/* harmony export */   "default": function() { return /* binding */ setTransition; }
8974/* harmony export */ });
8975function setTransition(duration, byController) {
8976  const swiper = this;
8977
8978  if (!swiper.params.cssMode) {
8979    swiper.$wrapperEl.transition(duration);
8980  }
8981
8982  swiper.emit('setTransition', duration, byController);
8983}
8984
8985/***/ }),
8986
vendor: 1,305 bytes, lines 8987-9033
8987/***/ "./node_modules/swiper/core/transition/transitionEmit.js":
8988/*!***************************************************************!*\
8989  !*** ./node_modules/swiper/core/transition/transitionEmit.js ***!
8990  \***************************************************************/
8991/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8992
8993"use strict";
8994__webpack_require__.r(__webpack_exports__);
8995/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8996/* harmony export */   "default": function() { return /* binding */ transitionEmit; }
8997/* harmony export */ });
8998function transitionEmit({
8999  swiper,
9000  runCallbacks,
9001  direction,
9002  step
9003}) {
9004  const {
9005    activeIndex,
9006    previousIndex
9007  } = swiper;
9008  let dir = direction;
9009
9010  if (!dir) {
9011    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
9012  }
9013
9014  swiper.emit(`transition${step}`);
9015
9016  if (runCallbacks && activeIndex !== previousIndex) {
9017    if (dir === 'reset') {
9018      swiper.emit(`slideResetTransition${step}`);
9019      return;
9020    }
9021
9022    swiper.emit(`slideChangeTransition${step}`);
9023
9024    if (dir === 'next') {
9025      swiper.emit(`slideNextTransition${step}`);
9026    } else {
9027      swiper.emit(`slidePrevTransition${step}`);
9028    }
9029  }
9030}
9031
9032/***/ }),
9033
vendor: 1,130 bytes, lines 9034-9064
9034/***/ "./node_modules/swiper/core/transition/transitionEnd.js":
9035/*!**************************************************************!*\
9036  !*** ./node_modules/swiper/core/transition/transitionEnd.js ***!
9037  \**************************************************************/
9038/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9039
9040"use strict";
9041__webpack_require__.r(__webpack_exports__);
9042/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9043/* harmony export */   "default": function() { return /* binding */ transitionEnd; }
9044/* harmony export */ });
9045/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
9046
9047function transitionEnd(runCallbacks = true, direction) {
9048  const swiper = this;
9049  const {
9050    params
9051  } = swiper;
9052  swiper.animating = false;
9053  if (params.cssMode) return;
9054  swiper.setTransition(0);
9055  (0,_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
9056    swiper,
9057    runCallbacks,
9058    direction,
9059    step: 'End'
9060  });
9061}
9062
9063/***/ }),
9064
vendor: 1,153 bytes, lines 9065-9098
9065/***/ "./node_modules/swiper/core/transition/transitionStart.js":
9066/*!****************************************************************!*\
9067  !*** ./node_modules/swiper/core/transition/transitionStart.js ***!
9068  \****************************************************************/
9069/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9070
9071"use strict";
9072__webpack_require__.r(__webpack_exports__);
9073/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9074/* harmony export */   "default": function() { return /* binding */ transitionStart; }
9075/* harmony export */ });
9076/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
9077
9078function transitionStart(runCallbacks = true, direction) {
9079  const swiper = this;
9080  const {
9081    params
9082  } = swiper;
9083  if (params.cssMode) return;
9084
9085  if (params.autoHeight) {
9086    swiper.updateAutoHeight();
9087  }
9088
9089  (0,_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
9090    swiper,
9091    runCallbacks,
9092    direction,
9093    step: 'Start'
9094  });
9095}
9096
9097/***/ }),
9098
vendor: 1,279 bytes, lines 9099-9135
9099/***/ "./node_modules/swiper/core/translate/getTranslate.js":
9100/*!************************************************************!*\
9101  !*** ./node_modules/swiper/core/translate/getTranslate.js ***!
9102  \************************************************************/
9103/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9104
9105"use strict";
9106__webpack_require__.r(__webpack_exports__);
9107/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9108/* harmony export */   "default": function() { return /* binding */ getSwiperTranslate; }
9109/* harmony export */ });
9110/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
9111
9112function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {
9113  const swiper = this;
9114  const {
9115    params,
9116    rtlTranslate: rtl,
9117    translate,
9118    $wrapperEl
9119  } = swiper;
9120
9121  if (params.virtualTranslate) {
9122    return rtl ? -translate : translate;
9123  }
9124
9125  if (params.cssMode) {
9126    return translate;
9127  }
9128
9129  let currentTranslate = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTranslate)($wrapperEl[0], axis);
9130  if (rtl) currentTranslate = -currentTranslate;
9131  return currentTranslate || 0;
9132}
9133
9134/***/ }),
9135
vendor: 1,712 bytes, lines 9136-9163
9136/***/ "./node_modules/swiper/core/translate/index.js":
9137/*!*****************************************************!*\
9138  !*** ./node_modules/swiper/core/translate/index.js ***!
9139  \*****************************************************/
9140/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9141
9142"use strict";
9143__webpack_require__.r(__webpack_exports__);
9144/* harmony import */ var _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getTranslate.js */ "./node_modules/swiper/core/translate/getTranslate.js");
9145/* harmony import */ var _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setTranslate.js */ "./node_modules/swiper/core/translate/setTranslate.js");
9146/* harmony import */ var _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minTranslate.js */ "./node_modules/swiper/core/translate/minTranslate.js");
9147/* harmony import */ var _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./maxTranslate.js */ "./node_modules/swiper/core/translate/maxTranslate.js");
9148/* harmony import */ var _translateTo_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./translateTo.js */ "./node_modules/swiper/core/translate/translateTo.js");
9149
9150
9151
9152
9153
9154/* harmony default export */ __webpack_exports__["default"] = ({
9155  getTranslate: _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
9156  setTranslate: _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__["default"],
9157  minTranslate: _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__["default"],
9158  maxTranslate: _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__["default"],
9159  translateTo: _translateTo_js__WEBPACK_IMPORTED_MODULE_4__["default"]
9160});
9161
9162/***/ }),
9163
vendor: 681 bytes, lines 9164-9180
9164/***/ "./node_modules/swiper/core/translate/maxTranslate.js":
9165/*!************************************************************!*\
9166  !*** ./node_modules/swiper/core/translate/maxTranslate.js ***!
9167  \************************************************************/
9168/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9169
9170"use strict";
9171__webpack_require__.r(__webpack_exports__);
9172/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9173/* harmony export */   "default": function() { return /* binding */ maxTranslate; }
9174/* harmony export */ });
9175function maxTranslate() {
9176  return -this.snapGrid[this.snapGrid.length - 1];
9177}
9178
9179/***/ }),
9180
vendor: 658 bytes, lines 9181-9197
9181/***/ "./node_modules/swiper/core/translate/minTranslate.js":
9182/*!************************************************************!*\
9183  !*** ./node_modules/swiper/core/translate/minTranslate.js ***!
9184  \************************************************************/
9185/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9186
9187"use strict";
9188__webpack_require__.r(__webpack_exports__);
9189/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9190/* harmony export */   "default": function() { return /* binding */ minTranslate; }
9191/* harmony export */ });
9192function minTranslate() {
9193  return -this.snapGrid[0];
9194}
9195
9196/***/ }),
9197
vendor: 1,751 bytes, lines 9198-9259
9198/***/ "./node_modules/swiper/core/translate/setTranslate.js":
9199/*!************************************************************!*\
9200  !*** ./node_modules/swiper/core/translate/setTranslate.js ***!
9201  \************************************************************/
9202/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9203
9204"use strict";
9205__webpack_require__.r(__webpack_exports__);
9206/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9207/* harmony export */   "default": function() { return /* binding */ setTranslate; }
9208/* harmony export */ });
9209function setTranslate(translate, byController) {
9210  const swiper = this;
9211  const {
9212    rtlTranslate: rtl,
9213    params,
9214    $wrapperEl,
9215    wrapperEl,
9216    progress
9217  } = swiper;
9218  let x = 0;
9219  let y = 0;
9220  const z = 0;
9221
9222  if (swiper.isHorizontal()) {
9223    x = rtl ? -translate : translate;
9224  } else {
9225    y = translate;
9226  }
9227
9228  if (params.roundLengths) {
9229    x = Math.floor(x);
9230    y = Math.floor(y);
9231  }
9232
9233  if (params.cssMode) {
9234    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
9235  } else if (!params.virtualTranslate) {
9236    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
9237  }
9238
9239  swiper.previousTranslate = swiper.translate;
9240  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
9241
9242  let newProgress;
9243  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
9244
9245  if (translatesDiff === 0) {
9246    newProgress = 0;
9247  } else {
9248    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
9249  }
9250
9251  if (newProgress !== progress) {
9252    swiper.updateProgress(translate);
9253  }
9254
9255  swiper.emit('setTranslate', swiper.translate, byController);
9256}
9257
9258/***/ }),
9259
vendor: 3,389 bytes, lines 9260-9359
9260/***/ "./node_modules/swiper/core/translate/translateTo.js":
9261/*!***********************************************************!*\
9262  !*** ./node_modules/swiper/core/translate/translateTo.js ***!
9263  \***********************************************************/
9264/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9265
9266"use strict";
9267__webpack_require__.r(__webpack_exports__);
9268/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9269/* harmony export */   "default": function() { return /* binding */ translateTo; }
9270/* harmony export */ });
9271/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
9272
9273function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
9274  const swiper = this;
9275  const {
9276    params,
9277    wrapperEl
9278  } = swiper;
9279
9280  if (swiper.animating && params.preventInteractionOnTransition) {
9281    return false;
9282  }
9283
9284  const minTranslate = swiper.minTranslate();
9285  const maxTranslate = swiper.maxTranslate();
9286  let newTranslate;
9287  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
9288
9289  swiper.updateProgress(newTranslate);
9290
9291  if (params.cssMode) {
9292    const isH = swiper.isHorizontal();
9293
9294    if (speed === 0) {
9295      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
9296    } else {
9297      if (!swiper.support.smoothScroll) {
9298        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.animateCSSModeScroll)({
9299          swiper,
9300          targetPosition: -newTranslate,
9301          side: isH ? 'left' : 'top'
9302        });
9303        return true;
9304      }
9305
9306      wrapperEl.scrollTo({
9307        [isH ? 'left' : 'top']: -newTranslate,
9308        behavior: 'smooth'
9309      });
9310    }
9311
9312    return true;
9313  }
9314
9315  if (speed === 0) {
9316    swiper.setTransition(0);
9317    swiper.setTranslate(newTranslate);
9318
9319    if (runCallbacks) {
9320      swiper.emit('beforeTransitionStart', speed, internal);
9321      swiper.emit('transitionEnd');
9322    }
9323  } else {
9324    swiper.setTransition(speed);
9325    swiper.setTranslate(newTranslate);
9326
9327    if (runCallbacks) {
9328      swiper.emit('beforeTransitionStart', speed, internal);
9329      swiper.emit('transitionStart');
9330    }
9331
9332    if (!swiper.animating) {
9333      swiper.animating = true;
9334
9335      if (!swiper.onTranslateToWrapperTransitionEnd) {
9336        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
9337          if (!swiper || swiper.destroyed) return;
9338          if (e.target !== this) return;
9339          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
9340          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
9341          swiper.onTranslateToWrapperTransitionEnd = null;
9342          delete swiper.onTranslateToWrapperTransitionEnd;
9343
9344          if (runCallbacks) {
9345            swiper.emit('transitionEnd');
9346          }
9347        };
9348      }
9349
9350      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
9351      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
9352    }
9353  }
9354
9355  return true;
9356}
9357
9358/***/ }),
9359
vendor: 2,858 bytes, lines 9360-9399
9360/***/ "./node_modules/swiper/core/update/index.js":
9361/*!**************************************************!*\
9362  !*** ./node_modules/swiper/core/update/index.js ***!
9363  \**************************************************/
9364/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9365
9366"use strict";
9367__webpack_require__.r(__webpack_exports__);
9368/* harmony import */ var _updateSize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./updateSize.js */ "./node_modules/swiper/core/update/updateSize.js");
9369/* harmony import */ var _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateSlides.js */ "./node_modules/swiper/core/update/updateSlides.js");
9370/* harmony import */ var _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateAutoHeight.js */ "./node_modules/swiper/core/update/updateAutoHeight.js");
9371/* harmony import */ var _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateSlidesOffset.js */ "./node_modules/swiper/core/update/updateSlidesOffset.js");
9372/* harmony import */ var _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./updateSlidesProgress.js */ "./node_modules/swiper/core/update/updateSlidesProgress.js");
9373/* harmony import */ var _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./updateProgress.js */ "./node_modules/swiper/core/update/updateProgress.js");
9374/* harmony import */ var _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./updateSlidesClasses.js */ "./node_modules/swiper/core/update/updateSlidesClasses.js");
9375/* harmony import */ var _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./updateActiveIndex.js */ "./node_modules/swiper/core/update/updateActiveIndex.js");
9376/* harmony import */ var _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./updateClickedSlide.js */ "./node_modules/swiper/core/update/updateClickedSlide.js");
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386/* harmony default export */ __webpack_exports__["default"] = ({
9387  updateSize: _updateSize_js__WEBPACK_IMPORTED_MODULE_0__["default"],
9388  updateSlides: _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__["default"],
9389  updateAutoHeight: _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__["default"],
9390  updateSlidesOffset: _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__["default"],
9391  updateSlidesProgress: _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__["default"],
9392  updateProgress: _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__["default"],
9393  updateSlidesClasses: _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__["default"],
9394  updateActiveIndex: _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__["default"],
9395  updateClickedSlide: _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__["default"]
9396});
9397
9398/***/ }),
9399
vendor: 2,627 bytes, lines 9400-9483
9400/***/ "./node_modules/swiper/core/update/updateActiveIndex.js":
9401/*!**************************************************************!*\
9402  !*** ./node_modules/swiper/core/update/updateActiveIndex.js ***!
9403  \**************************************************************/
9404/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9405
9406"use strict";
9407__webpack_require__.r(__webpack_exports__);
9408/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9409/* harmony export */   "default": function() { return /* binding */ updateActiveIndex; }
9410/* harmony export */ });
9411function updateActiveIndex(newActiveIndex) {
9412  const swiper = this;
9413  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
9414  const {
9415    slidesGrid,
9416    snapGrid,
9417    params,
9418    activeIndex: previousIndex,
9419    realIndex: previousRealIndex,
9420    snapIndex: previousSnapIndex
9421  } = swiper;
9422  let activeIndex = newActiveIndex;
9423  let snapIndex;
9424
9425  if (typeof activeIndex === 'undefined') {
9426    for (let i = 0; i < slidesGrid.length; i += 1) {
9427      if (typeof slidesGrid[i + 1] !== 'undefined') {
9428        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
9429          activeIndex = i;
9430        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
9431          activeIndex = i + 1;
9432        }
9433      } else if (translate >= slidesGrid[i]) {
9434        activeIndex = i;
9435      }
9436    } // Normalize slideIndex
9437
9438
9439    if (params.normalizeSlideIndex) {
9440      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
9441    }
9442  }
9443
9444  if (snapGrid.indexOf(translate) >= 0) {
9445    snapIndex = snapGrid.indexOf(translate);
9446  } else {
9447    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
9448    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
9449  }
9450
9451  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
9452
9453  if (activeIndex === previousIndex) {
9454    if (snapIndex !== previousSnapIndex) {
9455      swiper.snapIndex = snapIndex;
9456      swiper.emit('snapIndexChange');
9457    }
9458
9459    return;
9460  } // Get real index
9461
9462
9463  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
9464  Object.assign(swiper, {
9465    snapIndex,
9466    realIndex,
9467    previousIndex,
9468    activeIndex
9469  });
9470  swiper.emit('activeIndexChange');
9471  swiper.emit('snapIndexChange');
9472
9473  if (previousRealIndex !== realIndex) {
9474    swiper.emit('realIndexChange');
9475  }
9476
9477  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
9478    swiper.emit('slideChange');
9479  }
9480}
9481
9482/***/ }),
9483
vendor: 2,348 bytes, lines 9484-9548
9484/***/ "./node_modules/swiper/core/update/updateAutoHeight.js":
9485/*!*************************************************************!*\
9486  !*** ./node_modules/swiper/core/update/updateAutoHeight.js ***!
9487  \*************************************************************/
9488/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9489
9490"use strict";
9491__webpack_require__.r(__webpack_exports__);
9492/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9493/* harmony export */   "default": function() { return /* binding */ updateAutoHeight; }
9494/* harmony export */ });
9495/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
9496
9497function updateAutoHeight(speed) {
9498  const swiper = this;
9499  const activeSlides = [];
9500  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
9501  let newHeight = 0;
9502  let i;
9503
9504  if (typeof speed === 'number') {
9505    swiper.setTransition(speed);
9506  } else if (speed === true) {
9507    swiper.setTransition(swiper.params.speed);
9508  }
9509
9510  const getSlideByIndex = index => {
9511    if (isVirtual) {
9512      return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];
9513    }
9514
9515    return swiper.slides.eq(index)[0];
9516  }; // Find slides currently in view
9517
9518
9519  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
9520    if (swiper.params.centeredSlides) {
9521      (swiper.visibleSlides || (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])([])).each(slide => {
9522        activeSlides.push(slide);
9523      });
9524    } else {
9525      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
9526        const index = swiper.activeIndex + i;
9527        if (index > swiper.slides.length && !isVirtual) break;
9528        activeSlides.push(getSlideByIndex(index));
9529      }
9530    }
9531  } else {
9532    activeSlides.push(getSlideByIndex(swiper.activeIndex));
9533  } // Find new height from highest slide in view
9534
9535
9536  for (i = 0; i < activeSlides.length; i += 1) {
9537    if (typeof activeSlides[i] !== 'undefined') {
9538      const height = activeSlides[i].offsetHeight;
9539      newHeight = height > newHeight ? height : newHeight;
9540    }
9541  } // Update Height
9542
9543
9544  if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);
9545}
9546
9547/***/ }),
9548
vendor: 1,806 bytes, lines 9549-9599
9549/***/ "./node_modules/swiper/core/update/updateClickedSlide.js":
9550/*!***************************************************************!*\
9551  !*** ./node_modules/swiper/core/update/updateClickedSlide.js ***!
9552  \***************************************************************/
9553/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9554
9555"use strict";
9556__webpack_require__.r(__webpack_exports__);
9557/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9558/* harmony export */   "default": function() { return /* binding */ updateClickedSlide; }
9559/* harmony export */ });
9560/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
9561
9562function updateClickedSlide(e) {
9563  const swiper = this;
9564  const params = swiper.params;
9565  const slide = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e).closest(`.${params.slideClass}`)[0];
9566  let slideFound = false;
9567  let slideIndex;
9568
9569  if (slide) {
9570    for (let i = 0; i < swiper.slides.length; i += 1) {
9571      if (swiper.slides[i] === slide) {
9572        slideFound = true;
9573        slideIndex = i;
9574        break;
9575      }
9576    }
9577  }
9578
9579  if (slide && slideFound) {
9580    swiper.clickedSlide = slide;
9581
9582    if (swiper.virtual && swiper.params.virtual.enabled) {
9583      swiper.clickedIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slide).attr('data-swiper-slide-index'), 10);
9584    } else {
9585      swiper.clickedIndex = slideIndex;
9586    }
9587  } else {
9588    swiper.clickedSlide = undefined;
9589    swiper.clickedIndex = undefined;
9590    return;
9591  }
9592
9593  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
9594    swiper.slideToClickedSlide();
9595  }
9596}
9597
9598/***/ }),
9599
vendor: 1,812 bytes, lines 9600-9663
9600/***/ "./node_modules/swiper/core/update/updateProgress.js":
9601/*!***********************************************************!*\
9602  !*** ./node_modules/swiper/core/update/updateProgress.js ***!
9603  \***********************************************************/
9604/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9605
9606"use strict";
9607__webpack_require__.r(__webpack_exports__);
9608/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9609/* harmony export */   "default": function() { return /* binding */ updateProgress; }
9610/* harmony export */ });
9611function updateProgress(translate) {
9612  const swiper = this;
9613
9614  if (typeof translate === 'undefined') {
9615    const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
9616
9617    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
9618  }
9619
9620  const params = swiper.params;
9621  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
9622  let {
9623    progress,
9624    isBeginning,
9625    isEnd
9626  } = swiper;
9627  const wasBeginning = isBeginning;
9628  const wasEnd = isEnd;
9629
9630  if (translatesDiff === 0) {
9631    progress = 0;
9632    isBeginning = true;
9633    isEnd = true;
9634  } else {
9635    progress = (translate - swiper.minTranslate()) / translatesDiff;
9636    isBeginning = progress <= 0;
9637    isEnd = progress >= 1;
9638  }
9639
9640  Object.assign(swiper, {
9641    progress,
9642    isBeginning,
9643    isEnd
9644  });
9645  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
9646
9647  if (isBeginning && !wasBeginning) {
9648    swiper.emit('reachBeginning toEdge');
9649  }
9650
9651  if (isEnd && !wasEnd) {
9652    swiper.emit('reachEnd toEdge');
9653  }
9654
9655  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
9656    swiper.emit('fromEdge');
9657  }
9658
9659  swiper.emit('progress', progress);
9660}
9661
9662/***/ }),
9663
vendor: 1,543 bytes, lines 9664-9710
9664/***/ "./node_modules/swiper/core/update/updateSize.js":
9665/*!*******************************************************!*\
9666  !*** ./node_modules/swiper/core/update/updateSize.js ***!
9667  \*******************************************************/
9668/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9669
9670"use strict";
9671__webpack_require__.r(__webpack_exports__);
9672/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9673/* harmony export */   "default": function() { return /* binding */ updateSize; }
9674/* harmony export */ });
9675function updateSize() {
9676  const swiper = this;
9677  let width;
9678  let height;
9679  const $el = swiper.$el;
9680
9681  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
9682    width = swiper.params.width;
9683  } else {
9684    width = $el[0].clientWidth;
9685  }
9686
9687  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
9688    height = swiper.params.height;
9689  } else {
9690    height = $el[0].clientHeight;
9691  }
9692
9693  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
9694    return;
9695  } // Subtract paddings
9696
9697
9698  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
9699  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
9700  if (Number.isNaN(width)) width = 0;
9701  if (Number.isNaN(height)) height = 0;
9702  Object.assign(swiper, {
9703    width,
9704    height,
9705    size: swiper.isHorizontal() ? width : height
9706  });
9707}
9708
9709/***/ }),
9710
vendor: 11,399 bytes, lines 9711-10045
9711/***/ "./node_modules/swiper/core/update/updateSlides.js":
9712/*!*********************************************************!*\
9713  !*** ./node_modules/swiper/core/update/updateSlides.js ***!
9714  \*********************************************************/
9715/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9716
9717"use strict";
9718__webpack_require__.r(__webpack_exports__);
9719/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9720/* harmony export */   "default": function() { return /* binding */ updateSlides; }
9721/* harmony export */ });
9722/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
9723
9724function updateSlides() {
9725  const swiper = this;
9726
9727  function getDirectionLabel(property) {
9728    if (swiper.isHorizontal()) {
9729      return property;
9730    } // prettier-ignore
9731
9732
9733    return {
9734      'width': 'height',
9735      'margin-top': 'margin-left',
9736      'margin-bottom ': 'margin-right',
9737      'margin-left': 'margin-top',
9738      'margin-right': 'margin-bottom',
9739      'padding-left': 'padding-top',
9740      'padding-right': 'padding-bottom',
9741      'marginRight': 'marginBottom'
9742    }[property];
9743  }
9744
9745  function getDirectionPropertyValue(node, label) {
9746    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
9747  }
9748
9749  const params = swiper.params;
9750  const {
9751    $wrapperEl,
9752    size: swiperSize,
9753    rtlTranslate: rtl,
9754    wrongRTL
9755  } = swiper;
9756  const isVirtual = swiper.virtual && params.virtual.enabled;
9757  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
9758  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
9759  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
9760  let snapGrid = [];
9761  const slidesGrid = [];
9762  const slidesSizesGrid = [];
9763  let offsetBefore = params.slidesOffsetBefore;
9764
9765  if (typeof offsetBefore === 'function') {
9766    offsetBefore = params.slidesOffsetBefore.call(swiper);
9767  }
9768
9769  let offsetAfter = params.slidesOffsetAfter;
9770
9771  if (typeof offsetAfter === 'function') {
9772    offsetAfter = params.slidesOffsetAfter.call(swiper);
9773  }
9774
9775  const previousSnapGridLength = swiper.snapGrid.length;
9776  const previousSlidesGridLength = swiper.slidesGrid.length;
9777  let spaceBetween = params.spaceBetween;
9778  let slidePosition = -offsetBefore;
9779  let prevSlideSize = 0;
9780  let index = 0;
9781
9782  if (typeof swiperSize === 'undefined') {
9783    return;
9784  }
9785
9786  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
9787    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
9788  }
9789
9790  swiper.virtualSize = -spaceBetween; // reset margins
9791
9792  if (rtl) slides.css({
9793    marginLeft: '',
9794    marginBottom: '',
9795    marginTop: ''
9796  });else slides.css({
9797    marginRight: '',
9798    marginBottom: '',
9799    marginTop: ''
9800  }); // reset cssMode offsets
9801
9802  if (params.centeredSlides && params.cssMode) {
9803    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-before', '');
9804    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-after', '');
9805  }
9806
9807  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
9808
9809  if (gridEnabled) {
9810    swiper.grid.initSlides(slidesLength);
9811  } // Calc slides
9812
9813
9814  let slideSize;
9815  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
9816    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
9817  }).length > 0;
9818
9819  for (let i = 0; i < slidesLength; i += 1) {
9820    slideSize = 0;
9821    const slide = slides.eq(i);
9822
9823    if (gridEnabled) {
9824      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);
9825    }
9826
9827    if (slide.css('display') === 'none') continue; // eslint-disable-line
9828
9829    if (params.slidesPerView === 'auto') {
9830      if (shouldResetSlideSize) {
9831        slides[i].style[getDirectionLabel('width')] = ``;
9832      }
9833
9834      const slideStyles = getComputedStyle(slide[0]);
9835      const currentTransform = slide[0].style.transform;
9836      const currentWebKitTransform = slide[0].style.webkitTransform;
9837
9838      if (currentTransform) {
9839        slide[0].style.transform = 'none';
9840      }
9841
9842      if (currentWebKitTransform) {
9843        slide[0].style.webkitTransform = 'none';
9844      }
9845
9846      if (params.roundLengths) {
9847        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
9848      } else {
9849        // eslint-disable-next-line
9850        const width = getDirectionPropertyValue(slideStyles, 'width');
9851        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
9852        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
9853        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
9854        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
9855        const boxSizing = slideStyles.getPropertyValue('box-sizing');
9856
9857        if (boxSizing && boxSizing === 'border-box') {
9858          slideSize = width + marginLeft + marginRight;
9859        } else {
9860          const {
9861            clientWidth,
9862            offsetWidth
9863          } = slide[0];
9864          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
9865        }
9866      }
9867
9868      if (currentTransform) {
9869        slide[0].style.transform = currentTransform;
9870      }
9871
9872      if (currentWebKitTransform) {
9873        slide[0].style.webkitTransform = currentWebKitTransform;
9874      }
9875
9876      if (params.roundLengths) slideSize = Math.floor(slideSize);
9877    } else {
9878      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
9879      if (params.roundLengths) slideSize = Math.floor(slideSize);
9880
9881      if (slides[i]) {
9882        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;
9883      }
9884    }
9885
9886    if (slides[i]) {
9887      slides[i].swiperSlideSize = slideSize;
9888    }
9889
9890    slidesSizesGrid.push(slideSize);
9891
9892    if (params.centeredSlides) {
9893      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
9894      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
9895      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
9896      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
9897      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
9898      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
9899      slidesGrid.push(slidePosition);
9900    } else {
9901      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
9902      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
9903      slidesGrid.push(slidePosition);
9904      slidePosition = slidePosition + slideSize + spaceBetween;
9905    }
9906
9907    swiper.virtualSize += slideSize + spaceBetween;
9908    prevSlideSize = slideSize;
9909    index += 1;
9910  }
9911
9912  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
9913
9914  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
9915    $wrapperEl.css({
9916      width: `${swiper.virtualSize + params.spaceBetween}px`
9917    });
9918  }
9919
9920  if (params.setWrapperSize) {
9921    $wrapperEl.css({
9922      [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`
9923    });
9924  }
9925
9926  if (gridEnabled) {
9927    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);
9928  } // Remove last grid elements depending on width
9929
9930
9931  if (!params.centeredSlides) {
9932    const newSlidesGrid = [];
9933
9934    for (let i = 0; i < snapGrid.length; i += 1) {
9935      let slidesGridItem = snapGrid[i];
9936      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
9937
9938      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
9939        newSlidesGrid.push(slidesGridItem);
9940      }
9941    }
9942
9943    snapGrid = newSlidesGrid;
9944
9945    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
9946      snapGrid.push(swiper.virtualSize - swiperSize);
9947    }
9948  }
9949
9950  if (snapGrid.length === 0) snapGrid = [0];
9951
9952  if (params.spaceBetween !== 0) {
9953    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
9954    slides.filter((_, slideIndex) => {
9955      if (!params.cssMode) return true;
9956
9957      if (slideIndex === slides.length - 1) {
9958        return false;
9959      }
9960
9961      return true;
9962    }).css({
9963      [key]: `${spaceBetween}px`
9964    });
9965  }
9966
9967  if (params.centeredSlides && params.centeredSlidesBounds) {
9968    let allSlidesSize = 0;
9969    slidesSizesGrid.forEach(slideSizeValue => {
9970      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
9971    });
9972    allSlidesSize -= params.spaceBetween;
9973    const maxSnap = allSlidesSize - swiperSize;
9974    snapGrid = snapGrid.map(snap => {
9975      if (snap < 0) return -offsetBefore;
9976      if (snap > maxSnap) return maxSnap + offsetAfter;
9977      return snap;
9978    });
9979  }
9980
9981  if (params.centerInsufficientSlides) {
9982    let allSlidesSize = 0;
9983    slidesSizesGrid.forEach(slideSizeValue => {
9984      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
9985    });
9986    allSlidesSize -= params.spaceBetween;
9987
9988    if (allSlidesSize < swiperSize) {
9989      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
9990      snapGrid.forEach((snap, snapIndex) => {
9991        snapGrid[snapIndex] = snap - allSlidesOffset;
9992      });
9993      slidesGrid.forEach((snap, snapIndex) => {
9994        slidesGrid[snapIndex] = snap + allSlidesOffset;
9995      });
9996    }
9997  }
9998
9999  Object.assign(swiper, {
10000    slides,
10001    snapGrid,
10002    slidesGrid,
10003    slidesSizesGrid
10004  });
10005
10006  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
10007    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
10008    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
10009    const addToSnapGrid = -swiper.snapGrid[0];
10010    const addToSlidesGrid = -swiper.slidesGrid[0];
10011    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
10012    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
10013  }
10014
10015  if (slidesLength !== previousSlidesLength) {
10016    swiper.emit('slidesLengthChange');
10017  }
10018
10019  if (snapGrid.length !== previousSnapGridLength) {
10020    if (swiper.params.watchOverflow) swiper.checkOverflow();
10021    swiper.emit('snapGridLengthChange');
10022  }
10023
10024  if (slidesGrid.length !== previousSlidesGridLength) {
10025    swiper.emit('slidesGridLengthChange');
10026  }
10027
10028  if (params.watchSlidesProgress) {
10029    swiper.updateSlidesOffset();
10030  }
10031
10032  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
10033    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
10034    const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);
10035
10036    if (slidesLength <= params.maxBackfaceHiddenSlides) {
10037      if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);
10038    } else if (hasClassBackfaceClassAdded) {
10039      swiper.$el.removeClass(backFaceHiddenClass);
10040    }
10041  }
10042}
10043
10044/***/ }),
10045
vendor: 3,336 bytes, lines 10046-10123
10046/***/ "./node_modules/swiper/core/update/updateSlidesClasses.js":
10047/*!****************************************************************!*\
10048  !*** ./node_modules/swiper/core/update/updateSlidesClasses.js ***!
10049  \****************************************************************/
10050/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10051
10052"use strict";
10053__webpack_require__.r(__webpack_exports__);
10054/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10055/* harmony export */   "default": function() { return /* binding */ updateSlidesClasses; }
10056/* harmony export */ });
10057function updateSlidesClasses() {
10058  const swiper = this;
10059  const {
10060    slides,
10061    params,
10062    $wrapperEl,
10063    activeIndex,
10064    realIndex
10065  } = swiper;
10066  const isVirtual = swiper.virtual && params.virtual.enabled;
10067  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
10068  let activeSlide;
10069
10070  if (isVirtual) {
10071    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
10072  } else {
10073    activeSlide = slides.eq(activeIndex);
10074  } // Active classes
10075
10076
10077  activeSlide.addClass(params.slideActiveClass);
10078
10079  if (params.loop) {
10080    // Duplicate to all looped slides
10081    if (activeSlide.hasClass(params.slideDuplicateClass)) {
10082      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
10083    } else {
10084      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
10085    }
10086  } // Next Slide
10087
10088
10089  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
10090
10091  if (params.loop && nextSlide.length === 0) {
10092    nextSlide = slides.eq(0);
10093    nextSlide.addClass(params.slideNextClass);
10094  } // Prev Slide
10095
10096
10097  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
10098
10099  if (params.loop && prevSlide.length === 0) {
10100    prevSlide = slides.eq(-1);
10101    prevSlide.addClass(params.slidePrevClass);
10102  }
10103
10104  if (params.loop) {
10105    // Duplicate to all looped slides
10106    if (nextSlide.hasClass(params.slideDuplicateClass)) {
10107      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
10108    } else {
10109      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
10110    }
10111
10112    if (prevSlide.hasClass(params.slideDuplicateClass)) {
10113      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
10114    } else {
10115      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
10116    }
10117  }
10118
10119  swiper.emitSlidesClasses();
10120}
10121
10122/***/ }),
10123
vendor: 863 bytes, lines 10124-10145
10124/***/ "./node_modules/swiper/core/update/updateSlidesOffset.js":
10125/*!***************************************************************!*\
10126  !*** ./node_modules/swiper/core/update/updateSlidesOffset.js ***!
10127  \***************************************************************/
10128/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10129
10130"use strict";
10131__webpack_require__.r(__webpack_exports__);
10132/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10133/* harmony export */   "default": function() { return /* binding */ updateSlidesOffset; }
10134/* harmony export */ });
10135function updateSlidesOffset() {
10136  const swiper = this;
10137  const slides = swiper.slides;
10138
10139  for (let i = 0; i < slides.length; i += 1) {
10140    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
10141  }
10142}
10143
10144/***/ }),
10145
vendor: 2,595 bytes, lines 10146-10204
10146/***/ "./node_modules/swiper/core/update/updateSlidesProgress.js":
10147/*!*****************************************************************!*\
10148  !*** ./node_modules/swiper/core/update/updateSlidesProgress.js ***!
10149  \*****************************************************************/
10150/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10151
10152"use strict";
10153__webpack_require__.r(__webpack_exports__);
10154/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10155/* harmony export */   "default": function() { return /* binding */ updateSlidesProgress; }
10156/* harmony export */ });
10157/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
10158
10159function updateSlidesProgress(translate = this && this.translate || 0) {
10160  const swiper = this;
10161  const params = swiper.params;
10162  const {
10163    slides,
10164    rtlTranslate: rtl,
10165    snapGrid
10166  } = swiper;
10167  if (slides.length === 0) return;
10168  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
10169  let offsetCenter = -translate;
10170  if (rtl) offsetCenter = translate; // Visible Slides
10171
10172  slides.removeClass(params.slideVisibleClass);
10173  swiper.visibleSlidesIndexes = [];
10174  swiper.visibleSlides = [];
10175
10176  for (let i = 0; i < slides.length; i += 1) {
10177    const slide = slides[i];
10178    let slideOffset = slide.swiperSlideOffset;
10179
10180    if (params.cssMode && params.centeredSlides) {
10181      slideOffset -= slides[0].swiperSlideOffset;
10182    }
10183
10184    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
10185    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
10186    const slideBefore = -(offsetCenter - slideOffset);
10187    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
10188    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
10189
10190    if (isVisible) {
10191      swiper.visibleSlides.push(slide);
10192      swiper.visibleSlidesIndexes.push(i);
10193      slides.eq(i).addClass(params.slideVisibleClass);
10194    }
10195
10196    slide.progress = rtl ? -slideProgress : slideProgress;
10197    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
10198  }
10199
10200  swiper.visibleSlides = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.visibleSlides);
10201}
10202
10203/***/ }),
10204
vendor: 11,072 bytes, lines 10205-10571
10205/***/ "./node_modules/swiper/modules/a11y/a11y.js":
10206/*!**************************************************!*\
10207  !*** ./node_modules/swiper/modules/a11y/a11y.js ***!
10208  \**************************************************/
10209/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10210
10211"use strict";
10212__webpack_require__.r(__webpack_exports__);
10213/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10214/* harmony export */   "default": function() { return /* binding */ A11y; }
10215/* harmony export */ });
10216/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
10217/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
10218
10219
10220function A11y({
10221  swiper,
10222  extendParams,
10223  on
10224}) {
10225  extendParams({
10226    a11y: {
10227      enabled: true,
10228      notificationClass: 'swiper-notification',
10229      prevSlideMessage: 'Previous slide',
10230      nextSlideMessage: 'Next slide',
10231      firstSlideMessage: 'This is the first slide',
10232      lastSlideMessage: 'This is the last slide',
10233      paginationBulletMessage: 'Go to slide {{index}}',
10234      slideLabelMessage: '{{index}} / {{slidesLength}}',
10235      containerMessage: null,
10236      containerRoleDescriptionMessage: null,
10237      itemRoleDescriptionMessage: null,
10238      slideRole: 'group',
10239      id: null
10240    }
10241  });
10242  swiper.a11y = {
10243    clicked: false
10244  };
10245  let liveRegion = null;
10246
10247  function notify(message) {
10248    const notification = liveRegion;
10249    if (notification.length === 0) return;
10250    notification.html('');
10251    notification.html(message);
10252  }
10253
10254  function getRandomNumber(size = 16) {
10255    const randomChar = () => Math.round(16 * Math.random()).toString(16);
10256
10257    return 'x'.repeat(size).replace(/x/g, randomChar);
10258  }
10259
10260  function makeElFocusable($el) {
10261    $el.attr('tabIndex', '0');
10262  }
10263
10264  function makeElNotFocusable($el) {
10265    $el.attr('tabIndex', '-1');
10266  }
10267
10268  function addElRole($el, role) {
10269    $el.attr('role', role);
10270  }
10271
10272  function addElRoleDescription($el, description) {
10273    $el.attr('aria-roledescription', description);
10274  }
10275
10276  function addElControls($el, controls) {
10277    $el.attr('aria-controls', controls);
10278  }
10279
10280  function addElLabel($el, label) {
10281    $el.attr('aria-label', label);
10282  }
10283
10284  function addElId($el, id) {
10285    $el.attr('id', id);
10286  }
10287
10288  function addElLive($el, live) {
10289    $el.attr('aria-live', live);
10290  }
10291
10292  function disableEl($el) {
10293    $el.attr('aria-disabled', true);
10294  }
10295
10296  function enableEl($el) {
10297    $el.attr('aria-disabled', false);
10298  }
10299
10300  function onEnterOrSpaceKey(e) {
10301    if (e.keyCode !== 13 && e.keyCode !== 32) return;
10302    const params = swiper.params.a11y;
10303    const $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target);
10304
10305    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
10306      if (!(swiper.isEnd && !swiper.params.loop)) {
10307        swiper.slideNext();
10308      }
10309
10310      if (swiper.isEnd) {
10311        notify(params.lastSlideMessage);
10312      } else {
10313        notify(params.nextSlideMessage);
10314      }
10315    }
10316
10317    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
10318      if (!(swiper.isBeginning && !swiper.params.loop)) {
10319        swiper.slidePrev();
10320      }
10321
10322      if (swiper.isBeginning) {
10323        notify(params.firstSlideMessage);
10324      } else {
10325        notify(params.prevSlideMessage);
10326      }
10327    }
10328
10329    if (swiper.pagination && $targetEl.is((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass))) {
10330      $targetEl[0].click();
10331    }
10332  }
10333
10334  function updateNavigation() {
10335    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
10336    const {
10337      $nextEl,
10338      $prevEl
10339    } = swiper.navigation;
10340
10341    if ($prevEl && $prevEl.length > 0) {
10342      if (swiper.isBeginning) {
10343        disableEl($prevEl);
10344        makeElNotFocusable($prevEl);
10345      } else {
10346        enableEl($prevEl);
10347        makeElFocusable($prevEl);
10348      }
10349    }
10350
10351    if ($nextEl && $nextEl.length > 0) {
10352      if (swiper.isEnd) {
10353        disableEl($nextEl);
10354        makeElNotFocusable($nextEl);
10355      } else {
10356        enableEl($nextEl);
10357        makeElFocusable($nextEl);
10358      }
10359    }
10360  }
10361
10362  function hasPagination() {
10363    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
10364  }
10365
10366  function hasClickablePagination() {
10367    return hasPagination() && swiper.params.pagination.clickable;
10368  }
10369
10370  function updatePagination() {
10371    const params = swiper.params.a11y;
10372    if (!hasPagination()) return;
10373    swiper.pagination.bullets.each(bulletEl => {
10374      const $bulletEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(bulletEl);
10375
10376      if (swiper.params.pagination.clickable) {
10377        makeElFocusable($bulletEl);
10378
10379        if (!swiper.params.pagination.renderBullet) {
10380          addElRole($bulletEl, 'button');
10381          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
10382        }
10383      }
10384
10385      if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {
10386        $bulletEl.attr('aria-current', 'true');
10387      } else {
10388        $bulletEl.removeAttr('aria-current');
10389      }
10390    });
10391  }
10392
10393  const initNavEl = ($el, wrapperId, message) => {
10394    makeElFocusable($el);
10395
10396    if ($el[0].tagName !== 'BUTTON') {
10397      addElRole($el, 'button');
10398      $el.on('keydown', onEnterOrSpaceKey);
10399    }
10400
10401    addElLabel($el, message);
10402    addElControls($el, wrapperId);
10403  };
10404
10405  const handlePointerDown = () => {
10406    swiper.a11y.clicked = true;
10407  };
10408
10409  const handlePointerUp = () => {
10410    requestAnimationFrame(() => {
10411      requestAnimationFrame(() => {
10412        if (!swiper.destroyed) {
10413          swiper.a11y.clicked = false;
10414        }
10415      });
10416    });
10417  };
10418
10419  const handleFocus = e => {
10420    if (swiper.a11y.clicked) return;
10421    const slideEl = e.target.closest(`.${swiper.params.slideClass}`);
10422    if (!slideEl || !swiper.slides.includes(slideEl)) return;
10423    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
10424    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
10425    if (isActive || isVisible) return;
10426    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
10427
10428    if (swiper.isHorizontal()) {
10429      swiper.el.scrollLeft = 0;
10430    } else {
10431      swiper.el.scrollTop = 0;
10432    }
10433
10434    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
10435  };
10436
10437  const initSlides = () => {
10438    const params = swiper.params.a11y;
10439
10440    if (params.itemRoleDescriptionMessage) {
10441      addElRoleDescription((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.itemRoleDescriptionMessage);
10442    }
10443
10444    if (params.slideRole) {
10445      addElRole((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.slideRole);
10446    }
10447
10448    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;
10449
10450    if (params.slideLabelMessage) {
10451      swiper.slides.each((slideEl, index) => {
10452        const $slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl);
10453        const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;
10454        const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
10455        addElLabel($slideEl, ariaLabelMessage);
10456      });
10457    }
10458  };
10459
10460  const init = () => {
10461    const params = swiper.params.a11y;
10462    swiper.$el.append(liveRegion); // Container
10463
10464    const $containerEl = swiper.$el;
10465
10466    if (params.containerRoleDescriptionMessage) {
10467      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
10468    }
10469
10470    if (params.containerMessage) {
10471      addElLabel($containerEl, params.containerMessage);
10472    } // Wrapper
10473
10474
10475    const $wrapperEl = swiper.$wrapperEl;
10476    const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;
10477    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
10478    addElId($wrapperEl, wrapperId);
10479    addElLive($wrapperEl, live); // Slide
10480
10481    initSlides(); // Navigation
10482
10483    let $nextEl;
10484    let $prevEl;
10485
10486    if (swiper.navigation && swiper.navigation.$nextEl) {
10487      $nextEl = swiper.navigation.$nextEl;
10488    }
10489
10490    if (swiper.navigation && swiper.navigation.$prevEl) {
10491      $prevEl = swiper.navigation.$prevEl;
10492    }
10493
10494    if ($nextEl && $nextEl.length) {
10495      initNavEl($nextEl, wrapperId, params.nextSlideMessage);
10496    }
10497
10498    if ($prevEl && $prevEl.length) {
10499      initNavEl($prevEl, wrapperId, params.prevSlideMessage);
10500    } // Pagination
10501
10502
10503    if (hasClickablePagination()) {
10504      swiper.pagination.$el.on('keydown', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
10505    } // Tab focus
10506
10507
10508    swiper.$el.on('focus', handleFocus, true);
10509    swiper.$el.on('pointerdown', handlePointerDown, true);
10510    swiper.$el.on('pointerup', handlePointerUp, true);
10511  };
10512
10513  function destroy() {
10514    if (liveRegion && liveRegion.length > 0) liveRegion.remove();
10515    let $nextEl;
10516    let $prevEl;
10517
10518    if (swiper.navigation && swiper.navigation.$nextEl) {
10519      $nextEl = swiper.navigation.$nextEl;
10520    }
10521
10522    if (swiper.navigation && swiper.navigation.$prevEl) {
10523      $prevEl = swiper.navigation.$prevEl;
10524    }
10525
10526    if ($nextEl) {
10527      $nextEl.off('keydown', onEnterOrSpaceKey);
10528    }
10529
10530    if ($prevEl) {
10531      $prevEl.off('keydown', onEnterOrSpaceKey);
10532    } // Pagination
10533
10534
10535    if (hasClickablePagination()) {
10536      swiper.pagination.$el.off('keydown', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
10537    } // Tab focus
10538
10539
10540    swiper.$el.off('focus', handleFocus, true);
10541    swiper.$el.off('pointerdown', handlePointerDown, true);
10542    swiper.$el.off('pointerup', handlePointerUp, true);
10543  }
10544
10545  on('beforeInit', () => {
10546    liveRegion = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`);
10547  });
10548  on('afterInit', () => {
10549    if (!swiper.params.a11y.enabled) return;
10550    init();
10551  });
10552  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
10553    if (!swiper.params.a11y.enabled) return;
10554    initSlides();
10555  });
10556  on('fromEdge toEdge afterInit lock unlock', () => {
10557    if (!swiper.params.a11y.enabled) return;
10558    updateNavigation();
10559  });
10560  on('paginationUpdate', () => {
10561    if (!swiper.params.a11y.enabled) return;
10562    updatePagination();
10563  });
10564  on('destroy', () => {
10565    if (!swiper.params.a11y.enabled) return;
10566    destroy();
10567  });
10568}
10569
10570/***/ }),
10571
vendor: 6,973 bytes, lines 10572-10817
10572/***/ "./node_modules/swiper/modules/autoplay/autoplay.js":
10573/*!**********************************************************!*\
10574  !*** ./node_modules/swiper/modules/autoplay/autoplay.js ***!
10575  \**********************************************************/
10576/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10577
10578"use strict";
10579__webpack_require__.r(__webpack_exports__);
10580/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10581/* harmony export */   "default": function() { return /* binding */ Autoplay; }
10582/* harmony export */ });
10583/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
10584/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
10585/* eslint no-underscore-dangle: "off" */
10586
10587/* eslint no-use-before-define: "off" */
10588
10589
10590function Autoplay({
10591  swiper,
10592  extendParams,
10593  on,
10594  emit
10595}) {
10596  let timeout;
10597  swiper.autoplay = {
10598    running: false,
10599    paused: false
10600  };
10601  extendParams({
10602    autoplay: {
10603      enabled: false,
10604      delay: 3000,
10605      waitForTransition: true,
10606      disableOnInteraction: true,
10607      stopOnLastSlide: false,
10608      reverseDirection: false,
10609      pauseOnMouseEnter: false
10610    }
10611  });
10612
10613  function run() {
10614    if (!swiper.size) {
10615      swiper.autoplay.running = false;
10616      swiper.autoplay.paused = false;
10617      return;
10618    }
10619
10620    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
10621    let delay = swiper.params.autoplay.delay;
10622
10623    if ($activeSlideEl.attr('data-swiper-autoplay')) {
10624      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
10625    }
10626
10627    clearTimeout(timeout);
10628    timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
10629      let autoplayResult;
10630
10631      if (swiper.params.autoplay.reverseDirection) {
10632        if (swiper.params.loop) {
10633          swiper.loopFix();
10634          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
10635          emit('autoplay');
10636        } else if (!swiper.isBeginning) {
10637          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
10638          emit('autoplay');
10639        } else if (!swiper.params.autoplay.stopOnLastSlide) {
10640          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
10641          emit('autoplay');
10642        } else {
10643          stop();
10644        }
10645      } else if (swiper.params.loop) {
10646        swiper.loopFix();
10647        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
10648        emit('autoplay');
10649      } else if (!swiper.isEnd) {
10650        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
10651        emit('autoplay');
10652      } else if (!swiper.params.autoplay.stopOnLastSlide) {
10653        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
10654        emit('autoplay');
10655      } else {
10656        stop();
10657      }
10658
10659      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {
10660        run();
10661      }
10662    }, delay);
10663  }
10664
10665  function start() {
10666    if (typeof timeout !== 'undefined') return false;
10667    if (swiper.autoplay.running) return false;
10668    swiper.autoplay.running = true;
10669    emit('autoplayStart');
10670    run();
10671    return true;
10672  }
10673
10674  function stop() {
10675    if (!swiper.autoplay.running) return false;
10676    if (typeof timeout === 'undefined') return false;
10677
10678    if (timeout) {
10679      clearTimeout(timeout);
10680      timeout = undefined;
10681    }
10682
10683    swiper.autoplay.running = false;
10684    emit('autoplayStop');
10685    return true;
10686  }
10687
10688  function pause(speed) {
10689    if (!swiper.autoplay.running) return;
10690    if (swiper.autoplay.paused) return;
10691    if (timeout) clearTimeout(timeout);
10692    swiper.autoplay.paused = true;
10693
10694    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
10695      swiper.autoplay.paused = false;
10696      run();
10697    } else {
10698      ['transitionend', 'webkitTransitionEnd'].forEach(event => {
10699        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);
10700      });
10701    }
10702  }
10703
10704  function onVisibilityChange() {
10705    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
10706
10707    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
10708      pause();
10709    }
10710
10711    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
10712      run();
10713      swiper.autoplay.paused = false;
10714    }
10715  }
10716
10717  function onTransitionEnd(e) {
10718    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
10719    if (e.target !== swiper.$wrapperEl[0]) return;
10720    ['transitionend', 'webkitTransitionEnd'].forEach(event => {
10721      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
10722    });
10723    swiper.autoplay.paused = false;
10724
10725    if (!swiper.autoplay.running) {
10726      stop();
10727    } else {
10728      run();
10729    }
10730  }
10731
10732  function onMouseEnter() {
10733    if (swiper.params.autoplay.disableOnInteraction) {
10734      stop();
10735    } else {
10736      emit('autoplayPause');
10737      pause();
10738    }
10739
10740    ['transitionend', 'webkitTransitionEnd'].forEach(event => {
10741      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
10742    });
10743  }
10744
10745  function onMouseLeave() {
10746    if (swiper.params.autoplay.disableOnInteraction) {
10747      return;
10748    }
10749
10750    swiper.autoplay.paused = false;
10751    emit('autoplayResume');
10752    run();
10753  }
10754
10755  function attachMouseEvents() {
10756    if (swiper.params.autoplay.pauseOnMouseEnter) {
10757      swiper.$el.on('mouseenter', onMouseEnter);
10758      swiper.$el.on('mouseleave', onMouseLeave);
10759    }
10760  }
10761
10762  function detachMouseEvents() {
10763    swiper.$el.off('mouseenter', onMouseEnter);
10764    swiper.$el.off('mouseleave', onMouseLeave);
10765  }
10766
10767  on('init', () => {
10768    if (swiper.params.autoplay.enabled) {
10769      start();
10770      const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
10771      document.addEventListener('visibilitychange', onVisibilityChange);
10772      attachMouseEvents();
10773    }
10774  });
10775  on('beforeTransitionStart', (_s, speed, internal) => {
10776    if (swiper.autoplay.running) {
10777      if (internal || !swiper.params.autoplay.disableOnInteraction) {
10778        swiper.autoplay.pause(speed);
10779      } else {
10780        stop();
10781      }
10782    }
10783  });
10784  on('sliderFirstMove', () => {
10785    if (swiper.autoplay.running) {
10786      if (swiper.params.autoplay.disableOnInteraction) {
10787        stop();
10788      } else {
10789        pause();
10790      }
10791    }
10792  });
10793  on('touchEnd', () => {
10794    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
10795      run();
10796    }
10797  });
10798  on('destroy', () => {
10799    detachMouseEvents();
10800
10801    if (swiper.autoplay.running) {
10802      stop();
10803    }
10804
10805    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
10806    document.removeEventListener('visibilitychange', onVisibilityChange);
10807  });
10808  Object.assign(swiper.autoplay, {
10809    pause,
10810    run,
10811    start,
10812    stop
10813  });
10814}
10815
10816/***/ }),
10817
vendor: 6,422 bytes, lines 10818-11023
10818/***/ "./node_modules/swiper/modules/controller/controller.js":
10819/*!**************************************************************!*\
10820  !*** ./node_modules/swiper/modules/controller/controller.js ***!
10821  \**************************************************************/
10822/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10823
10824"use strict";
10825__webpack_require__.r(__webpack_exports__);
10826/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10827/* harmony export */   "default": function() { return /* binding */ Controller; }
10828/* harmony export */ });
10829/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
10830/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
10831
10832function Controller({
10833  swiper,
10834  extendParams,
10835  on
10836}) {
10837  extendParams({
10838    controller: {
10839      control: undefined,
10840      inverse: false,
10841      by: 'slide' // or 'container'
10842
10843    }
10844  });
10845  swiper.controller = {
10846    control: undefined
10847  };
10848
10849  function LinearSpline(x, y) {
10850    const binarySearch = function search() {
10851      let maxIndex;
10852      let minIndex;
10853      let guess;
10854      return (array, val) => {
10855        minIndex = -1;
10856        maxIndex = array.length;
10857
10858        while (maxIndex - minIndex > 1) {
10859          guess = maxIndex + minIndex >> 1;
10860
10861          if (array[guess] <= val) {
10862            minIndex = guess;
10863          } else {
10864            maxIndex = guess;
10865          }
10866        }
10867
10868        return maxIndex;
10869      };
10870    }();
10871
10872    this.x = x;
10873    this.y = y;
10874    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
10875    // (x1,y1) is the known point before given value,
10876    // (x3,y3) is the known point after given value.
10877
10878    let i1;
10879    let i3;
10880
10881    this.interpolate = function interpolate(x2) {
10882      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
10883
10884      i3 = binarySearch(this.x, x2);
10885      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
10886      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
10887
10888      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
10889    };
10890
10891    return this;
10892  } // xxx: for now i will just save one spline function to to
10893
10894
10895  function getInterpolateFunction(c) {
10896    if (!swiper.controller.spline) {
10897      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
10898    }
10899  }
10900
10901  function setTranslate(_t, byController) {
10902    const controlled = swiper.controller.control;
10903    let multiplier;
10904    let controlledTranslate;
10905    const Swiper = swiper.constructor;
10906
10907    function setControlledTranslate(c) {
10908      // this will create an Interpolate function based on the snapGrids
10909      // x is the Grid of the scrolled scroller and y will be the controlled scroller
10910      // it makes sense to create this only once and recall it for the interpolation
10911      // the function does a lot of value caching for performance
10912      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
10913
10914      if (swiper.params.controller.by === 'slide') {
10915        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
10916        // but it did not work out
10917
10918        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
10919      }
10920
10921      if (!controlledTranslate || swiper.params.controller.by === 'container') {
10922        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
10923        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
10924      }
10925
10926      if (swiper.params.controller.inverse) {
10927        controlledTranslate = c.maxTranslate() - controlledTranslate;
10928      }
10929
10930      c.updateProgress(controlledTranslate);
10931      c.setTranslate(controlledTranslate, swiper);
10932      c.updateActiveIndex();
10933      c.updateSlidesClasses();
10934    }
10935
10936    if (Array.isArray(controlled)) {
10937      for (let i = 0; i < controlled.length; i += 1) {
10938        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
10939          setControlledTranslate(controlled[i]);
10940        }
10941      }
10942    } else if (controlled instanceof Swiper && byController !== controlled) {
10943      setControlledTranslate(controlled);
10944    }
10945  }
10946
10947  function setTransition(duration, byController) {
10948    const Swiper = swiper.constructor;
10949    const controlled = swiper.controller.control;
10950    let i;
10951
10952    function setControlledTransition(c) {
10953      c.setTransition(duration, swiper);
10954
10955      if (duration !== 0) {
10956        c.transitionStart();
10957
10958        if (c.params.autoHeight) {
10959          (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {
10960            c.updateAutoHeight();
10961          });
10962        }
10963
10964        c.$wrapperEl.transitionEnd(() => {
10965          if (!controlled) return;
10966
10967          if (c.params.loop && swiper.params.controller.by === 'slide') {
10968            c.loopFix();
10969          }
10970
10971          c.transitionEnd();
10972        });
10973      }
10974    }
10975
10976    if (Array.isArray(controlled)) {
10977      for (i = 0; i < controlled.length; i += 1) {
10978        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
10979          setControlledTransition(controlled[i]);
10980        }
10981      }
10982    } else if (controlled instanceof Swiper && byController !== controlled) {
10983      setControlledTransition(controlled);
10984    }
10985  }
10986
10987  function removeSpline() {
10988    if (!swiper.controller.control) return;
10989
10990    if (swiper.controller.spline) {
10991      swiper.controller.spline = undefined;
10992      delete swiper.controller.spline;
10993    }
10994  }
10995
10996  on('beforeInit', () => {
10997    swiper.controller.control = swiper.params.controller.control;
10998  });
10999  on('update', () => {
11000    removeSpline();
11001  });
11002  on('resize', () => {
11003    removeSpline();
11004  });
11005  on('observerUpdate', () => {
11006    removeSpline();
11007  });
11008  on('setTranslate', (_s, translate, byController) => {
11009    if (!swiper.controller.control) return;
11010    swiper.controller.setTranslate(translate, byController);
11011  });
11012  on('setTransition', (_s, duration, byController) => {
11013    if (!swiper.controller.control) return;
11014    swiper.controller.setTransition(duration, byController);
11015  });
11016  Object.assign(swiper.controller, {
11017    setTranslate,
11018    setTransition
11019  });
11020}
11021
11022/***/ }),
11023
vendor: 5,608 bytes, lines 11024-11170
11024/***/ "./node_modules/swiper/modules/effect-cards/effect-cards.js":
11025/*!******************************************************************!*\
11026  !*** ./node_modules/swiper/modules/effect-cards/effect-cards.js ***!
11027  \******************************************************************/
11028/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11029
11030"use strict";
11031__webpack_require__.r(__webpack_exports__);
11032/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11033/* harmony export */   "default": function() { return /* binding */ EffectCards; }
11034/* harmony export */ });
11035/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
11036/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
11037/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
11038/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
11039
11040
11041
11042
11043function EffectCards({
11044  swiper,
11045  extendParams,
11046  on
11047}) {
11048  extendParams({
11049    cardsEffect: {
11050      slideShadows: true,
11051      transformEl: null,
11052      rotate: true,
11053      perSlideRotate: 2,
11054      perSlideOffset: 8
11055    }
11056  });
11057
11058  const setTranslate = () => {
11059    const {
11060      slides,
11061      activeIndex
11062    } = swiper;
11063    const params = swiper.params.cardsEffect;
11064    const {
11065      startTranslate,
11066      isTouched
11067    } = swiper.touchEventsData;
11068    const currentTranslate = swiper.translate;
11069
11070    for (let i = 0; i < slides.length; i += 1) {
11071      const $slideEl = slides.eq(i);
11072      const slideProgress = $slideEl[0].progress;
11073      const progress = Math.min(Math.max(slideProgress, -4), 4);
11074      let offset = $slideEl[0].swiperSlideOffset;
11075
11076      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
11077        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);
11078      }
11079
11080      if (swiper.params.centeredSlides && swiper.params.cssMode) {
11081        offset -= slides[0].swiperSlideOffset;
11082      }
11083
11084      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
11085      let tY = 0;
11086      const tZ = -100 * Math.abs(progress);
11087      let scale = 1;
11088      let rotate = -params.perSlideRotate * progress;
11089      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
11090      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
11091      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
11092      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
11093
11094      if (isSwipeToNext || isSwipeToPrev) {
11095        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
11096        rotate += -28 * progress * subProgress;
11097        scale += -0.5 * subProgress;
11098        tXAdd += 96 * subProgress;
11099        tY = `${-25 * subProgress * Math.abs(progress)}%`;
11100      }
11101
11102      if (progress < 0) {
11103        // next
11104        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;
11105      } else if (progress > 0) {
11106        // prev
11107        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;
11108      } else {
11109        tX = `${tX}px`;
11110      }
11111
11112      if (!swiper.isHorizontal()) {
11113        const prevY = tY;
11114        tY = tX;
11115        tX = prevY;
11116      }
11117
11118      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;
11119      const transform = `
11120        translate3d(${tX}, ${tY}, ${tZ}px)
11121        rotateZ(${params.rotate ? rotate : 0}deg)
11122        scale(${scaleString})
11123      `;
11124
11125      if (params.slideShadows) {
11126        // Set shadows
11127        let $shadowEl = $slideEl.find('.swiper-slide-shadow');
11128
11129        if ($shadowEl.length === 0) {
11130          $shadowEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl);
11131        }
11132
11133        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
11134      }
11135
11136      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
11137      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
11138      $targetEl.transform(transform);
11139    }
11140  };
11141
11142  const setTransition = duration => {
11143    const {
11144      transformEl
11145    } = swiper.params.cardsEffect;
11146    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
11147    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
11148    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
11149      swiper,
11150      duration,
11151      transformEl
11152    });
11153  };
11154
11155  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
11156    effect: 'cards',
11157    swiper,
11158    on,
11159    setTranslate,
11160    setTransition,
11161    perspective: () => true,
11162    overwriteParams: () => ({
11163      watchSlidesProgress: true,
11164      virtualTranslate: !swiper.params.cssMode
11165    })
11166  });
11167}
11168
11169/***/ }),
11170
vendor: 5,463 bytes, lines 11171-11291
11171/***/ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js":
11172/*!**************************************************************************!*\
11173  !*** ./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js ***!
11174  \**************************************************************************/
11175/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11176
11177"use strict";
11178__webpack_require__.r(__webpack_exports__);
11179/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11180/* harmony export */   "default": function() { return /* binding */ EffectCoverflow; }
11181/* harmony export */ });
11182/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
11183/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
11184/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
11185
11186
11187
11188function EffectCoverflow({
11189  swiper,
11190  extendParams,
11191  on
11192}) {
11193  extendParams({
11194    coverflowEffect: {
11195      rotate: 50,
11196      stretch: 0,
11197      depth: 100,
11198      scale: 1,
11199      modifier: 1,
11200      slideShadows: true,
11201      transformEl: null
11202    }
11203  });
11204
11205  const setTranslate = () => {
11206    const {
11207      width: swiperWidth,
11208      height: swiperHeight,
11209      slides,
11210      slidesSizesGrid
11211    } = swiper;
11212    const params = swiper.params.coverflowEffect;
11213    const isHorizontal = swiper.isHorizontal();
11214    const transform = swiper.translate;
11215    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
11216    const rotate = isHorizontal ? params.rotate : -params.rotate;
11217    const translate = params.depth; // Each slide offset from center
11218
11219    for (let i = 0, length = slides.length; i < length; i += 1) {
11220      const $slideEl = slides.eq(i);
11221      const slideSize = slidesSizesGrid[i];
11222      const slideOffset = $slideEl[0].swiperSlideOffset;
11223      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
11224      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
11225      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
11226      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
11227
11228      let translateZ = -translate * Math.abs(offsetMultiplier);
11229      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
11230
11231      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
11232        stretch = parseFloat(params.stretch) / 100 * slideSize;
11233      }
11234
11235      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
11236      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
11237      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
11238
11239      if (Math.abs(translateX) < 0.001) translateX = 0;
11240      if (Math.abs(translateY) < 0.001) translateY = 0;
11241      if (Math.abs(translateZ) < 0.001) translateZ = 0;
11242      if (Math.abs(rotateY) < 0.001) rotateY = 0;
11243      if (Math.abs(rotateX) < 0.001) rotateX = 0;
11244      if (Math.abs(scale) < 0.001) scale = 0;
11245      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;
11246      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
11247      $targetEl.transform(slideTransform);
11248      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
11249
11250      if (params.slideShadows) {
11251        // Set shadows
11252        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
11253        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
11254
11255        if ($shadowBeforeEl.length === 0) {
11256          $shadowBeforeEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'left' : 'top');
11257        }
11258
11259        if ($shadowAfterEl.length === 0) {
11260          $shadowAfterEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'right' : 'bottom');
11261        }
11262
11263        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
11264        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
11265      }
11266    }
11267  };
11268
11269  const setTransition = duration => {
11270    const {
11271      transformEl
11272    } = swiper.params.coverflowEffect;
11273    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
11274    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
11275  };
11276
11277  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
11278    effect: 'coverflow',
11279    swiper,
11280    on,
11281    setTranslate,
11282    setTransition,
11283    perspective: () => true,
11284    overwriteParams: () => ({
11285      watchSlidesProgress: true
11286    })
11287  });
11288}
11289
11290/***/ }),
11291
vendor: 6,189 bytes, lines 11292-11463
11292/***/ "./node_modules/swiper/modules/effect-creative/effect-creative.js":
11293/*!************************************************************************!*\
11294  !*** ./node_modules/swiper/modules/effect-creative/effect-creative.js ***!
11295  \************************************************************************/
11296/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11297
11298"use strict";
11299__webpack_require__.r(__webpack_exports__);
11300/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11301/* harmony export */   "default": function() { return /* binding */ EffectCreative; }
11302/* harmony export */ });
11303/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
11304/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
11305/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
11306/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
11307
11308
11309
11310
11311function EffectCreative({
11312  swiper,
11313  extendParams,
11314  on
11315}) {
11316  extendParams({
11317    creativeEffect: {
11318      transformEl: null,
11319      limitProgress: 1,
11320      shadowPerProgress: false,
11321      progressMultiplier: 1,
11322      perspective: true,
11323      prev: {
11324        translate: [0, 0, 0],
11325        rotate: [0, 0, 0],
11326        opacity: 1,
11327        scale: 1
11328      },
11329      next: {
11330        translate: [0, 0, 0],
11331        rotate: [0, 0, 0],
11332        opacity: 1,
11333        scale: 1
11334      }
11335    }
11336  });
11337
11338  const getTranslateValue = value => {
11339    if (typeof value === 'string') return value;
11340    return `${value}px`;
11341  };
11342
11343  const setTranslate = () => {
11344    const {
11345      slides,
11346      $wrapperEl,
11347      slidesSizesGrid
11348    } = swiper;
11349    const params = swiper.params.creativeEffect;
11350    const {
11351      progressMultiplier: multiplier
11352    } = params;
11353    const isCenteredSlides = swiper.params.centeredSlides;
11354
11355    if (isCenteredSlides) {
11356      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
11357      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);
11358    }
11359
11360    for (let i = 0; i < slides.length; i += 1) {
11361      const $slideEl = slides.eq(i);
11362      const slideProgress = $slideEl[0].progress;
11363      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);
11364      let originalProgress = progress;
11365
11366      if (!isCenteredSlides) {
11367        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);
11368      }
11369
11370      const offset = $slideEl[0].swiperSlideOffset;
11371      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
11372      const r = [0, 0, 0];
11373      let custom = false;
11374
11375      if (!swiper.isHorizontal()) {
11376        t[1] = t[0];
11377        t[0] = 0;
11378      }
11379
11380      let data = {
11381        translate: [0, 0, 0],
11382        rotate: [0, 0, 0],
11383        scale: 1,
11384        opacity: 1
11385      };
11386
11387      if (progress < 0) {
11388        data = params.next;
11389        custom = true;
11390      } else if (progress > 0) {
11391        data = params.prev;
11392        custom = true;
11393      } // set translate
11394
11395
11396      t.forEach((value, index) => {
11397        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
11398      }); // set rotates
11399
11400      r.forEach((value, index) => {
11401        r[index] = data.rotate[index] * Math.abs(progress * multiplier);
11402      });
11403      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
11404      const translateString = t.join(', ');
11405      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;
11406      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
11407      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
11408      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows
11409
11410      if (custom && data.shadow || !custom) {
11411        let $shadowEl = $slideEl.children('.swiper-slide-shadow');
11412
11413        if ($shadowEl.length === 0 && data.shadow) {
11414          $shadowEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl);
11415        }
11416
11417        if ($shadowEl.length) {
11418          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
11419          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
11420        }
11421      }
11422
11423      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
11424      $targetEl.transform(transform).css({
11425        opacity: opacityString
11426      });
11427
11428      if (data.origin) {
11429        $targetEl.css('transform-origin', data.origin);
11430      }
11431    }
11432  };
11433
11434  const setTransition = duration => {
11435    const {
11436      transformEl
11437    } = swiper.params.creativeEffect;
11438    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
11439    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
11440    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
11441      swiper,
11442      duration,
11443      transformEl,
11444      allSlides: true
11445    });
11446  };
11447
11448  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
11449    effect: 'creative',
11450    swiper,
11451    on,
11452    setTranslate,
11453    setTransition,
11454    perspective: () => swiper.params.creativeEffect.perspective,
11455    overwriteParams: () => ({
11456      watchSlidesProgress: true,
11457      virtualTranslate: !swiper.params.cssMode
11458    })
11459  });
11460}
11461
11462/***/ }),
11463
vendor: 7,406 bytes, lines 11464-11674
11464/***/ "./node_modules/swiper/modules/effect-cube/effect-cube.js":
11465/*!****************************************************************!*\
11466  !*** ./node_modules/swiper/modules/effect-cube/effect-cube.js ***!
11467  \****************************************************************/
11468/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11469
11470"use strict";
11471__webpack_require__.r(__webpack_exports__);
11472/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11473/* harmony export */   "default": function() { return /* binding */ EffectCube; }
11474/* harmony export */ });
11475/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
11476/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
11477
11478
11479function EffectCube({
11480  swiper,
11481  extendParams,
11482  on
11483}) {
11484  extendParams({
11485    cubeEffect: {
11486      slideShadows: true,
11487      shadow: true,
11488      shadowOffset: 20,
11489      shadowScale: 0.94
11490    }
11491  });
11492
11493  const createSlideShadows = ($slideEl, progress, isHorizontal) => {
11494    let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
11495    let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
11496
11497    if (shadowBefore.length === 0) {
11498      shadowBefore = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
11499      $slideEl.append(shadowBefore);
11500    }
11501
11502    if (shadowAfter.length === 0) {
11503      shadowAfter = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
11504      $slideEl.append(shadowAfter);
11505    }
11506
11507    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
11508    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
11509  };
11510
11511  const recreateShadows = () => {
11512    // create new ones
11513    const isHorizontal = swiper.isHorizontal();
11514    swiper.slides.each(slideEl => {
11515      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
11516      createSlideShadows((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl), progress, isHorizontal);
11517    });
11518  };
11519
11520  const setTranslate = () => {
11521    const {
11522      $el,
11523      $wrapperEl,
11524      slides,
11525      width: swiperWidth,
11526      height: swiperHeight,
11527      rtlTranslate: rtl,
11528      size: swiperSize,
11529      browser
11530    } = swiper;
11531    const params = swiper.params.cubeEffect;
11532    const isHorizontal = swiper.isHorizontal();
11533    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
11534    let wrapperRotate = 0;
11535    let $cubeShadowEl;
11536
11537    if (params.shadow) {
11538      if (isHorizontal) {
11539        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
11540
11541        if ($cubeShadowEl.length === 0) {
11542          $cubeShadowEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>');
11543          $wrapperEl.append($cubeShadowEl);
11544        }
11545
11546        $cubeShadowEl.css({
11547          height: `${swiperWidth}px`
11548        });
11549      } else {
11550        $cubeShadowEl = $el.find('.swiper-cube-shadow');
11551
11552        if ($cubeShadowEl.length === 0) {
11553          $cubeShadowEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>');
11554          $el.append($cubeShadowEl);
11555        }
11556      }
11557    }
11558
11559    for (let i = 0; i < slides.length; i += 1) {
11560      const $slideEl = slides.eq(i);
11561      let slideIndex = i;
11562
11563      if (isVirtual) {
11564        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
11565      }
11566
11567      let slideAngle = slideIndex * 90;
11568      let round = Math.floor(slideAngle / 360);
11569
11570      if (rtl) {
11571        slideAngle = -slideAngle;
11572        round = Math.floor(-slideAngle / 360);
11573      }
11574
11575      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
11576      let tx = 0;
11577      let ty = 0;
11578      let tz = 0;
11579
11580      if (slideIndex % 4 === 0) {
11581        tx = -round * 4 * swiperSize;
11582        tz = 0;
11583      } else if ((slideIndex - 1) % 4 === 0) {
11584        tx = 0;
11585        tz = -round * 4 * swiperSize;
11586      } else if ((slideIndex - 2) % 4 === 0) {
11587        tx = swiperSize + round * 4 * swiperSize;
11588        tz = swiperSize;
11589      } else if ((slideIndex - 3) % 4 === 0) {
11590        tx = -swiperSize;
11591        tz = 3 * swiperSize + swiperSize * 4 * round;
11592      }
11593
11594      if (rtl) {
11595        tx = -tx;
11596      }
11597
11598      if (!isHorizontal) {
11599        ty = tx;
11600        tx = 0;
11601      }
11602
11603      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
11604
11605      if (progress <= 1 && progress > -1) {
11606        wrapperRotate = slideIndex * 90 + progress * 90;
11607        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
11608      }
11609
11610      $slideEl.transform(transform);
11611
11612      if (params.slideShadows) {
11613        createSlideShadows($slideEl, progress, isHorizontal);
11614      }
11615    }
11616
11617    $wrapperEl.css({
11618      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
11619      'transform-origin': `50% 50% -${swiperSize / 2}px`
11620    });
11621
11622    if (params.shadow) {
11623      if (isHorizontal) {
11624        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
11625      } else {
11626        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
11627        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
11628        const scale1 = params.shadowScale;
11629        const scale2 = params.shadowScale / multiplier;
11630        const offset = params.shadowOffset;
11631        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
11632      }
11633    }
11634
11635    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
11636    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);
11637    $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);
11638  };
11639
11640  const setTransition = duration => {
11641    const {
11642      $el,
11643      slides
11644    } = swiper;
11645    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
11646
11647    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
11648      $el.find('.swiper-cube-shadow').transition(duration);
11649    }
11650  };
11651
11652  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
11653    effect: 'cube',
11654    swiper,
11655    on,
11656    setTranslate,
11657    setTransition,
11658    recreateShadows,
11659    getEffectParams: () => swiper.params.cubeEffect,
11660    perspective: () => true,
11661    overwriteParams: () => ({
11662      slidesPerView: 1,
11663      slidesPerGroup: 1,
11664      watchSlidesProgress: true,
11665      resistanceRatio: 0,
11666      spaceBetween: 0,
11667      centeredSlides: false,
11668      virtualTranslate: true
11669    })
11670  });
11671}
11672
11673/***/ }),
11674
vendor: 2,995 bytes, lines 11675-11761
11675/***/ "./node_modules/swiper/modules/effect-fade/effect-fade.js":
11676/*!****************************************************************!*\
11677  !*** ./node_modules/swiper/modules/effect-fade/effect-fade.js ***!
11678  \****************************************************************/
11679/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11680
11681"use strict";
11682__webpack_require__.r(__webpack_exports__);
11683/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11684/* harmony export */   "default": function() { return /* binding */ EffectFade; }
11685/* harmony export */ });
11686/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
11687/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
11688/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
11689
11690
11691
11692function EffectFade({
11693  swiper,
11694  extendParams,
11695  on
11696}) {
11697  extendParams({
11698    fadeEffect: {
11699      crossFade: false,
11700      transformEl: null
11701    }
11702  });
11703
11704  const setTranslate = () => {
11705    const {
11706      slides
11707    } = swiper;
11708    const params = swiper.params.fadeEffect;
11709
11710    for (let i = 0; i < slides.length; i += 1) {
11711      const $slideEl = swiper.slides.eq(i);
11712      const offset = $slideEl[0].swiperSlideOffset;
11713      let tx = -offset;
11714      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
11715      let ty = 0;
11716
11717      if (!swiper.isHorizontal()) {
11718        ty = tx;
11719        tx = 0;
11720      }
11721
11722      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);
11723      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl);
11724      $targetEl.css({
11725        opacity: slideOpacity
11726      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);
11727    }
11728  };
11729
11730  const setTransition = duration => {
11731    const {
11732      transformEl
11733    } = swiper.params.fadeEffect;
11734    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
11735    $transitionElements.transition(duration);
11736    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
11737      swiper,
11738      duration,
11739      transformEl,
11740      allSlides: true
11741    });
11742  };
11743
11744  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
11745    effect: 'fade',
11746    swiper,
11747    on,
11748    setTranslate,
11749    setTransition,
11750    overwriteParams: () => ({
11751      slidesPerView: 1,
11752      slidesPerGroup: 1,
11753      watchSlidesProgress: true,
11754      spaceBetween: 0,
11755      virtualTranslate: !swiper.params.cssMode
11756    })
11757  });
11758}
11759
11760/***/ }),
11761
vendor: 5,368 bytes, lines 11762-11903
11762/***/ "./node_modules/swiper/modules/effect-flip/effect-flip.js":
11763/*!****************************************************************!*\
11764  !*** ./node_modules/swiper/modules/effect-flip/effect-flip.js ***!
11765  \****************************************************************/
11766/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11767
11768"use strict";
11769__webpack_require__.r(__webpack_exports__);
11770/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11771/* harmony export */   "default": function() { return /* binding */ EffectFlip; }
11772/* harmony export */ });
11773/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
11774/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
11775/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
11776/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
11777/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
11778
11779
11780
11781
11782
11783function EffectFlip({
11784  swiper,
11785  extendParams,
11786  on
11787}) {
11788  extendParams({
11789    flipEffect: {
11790      slideShadows: true,
11791      limitRotation: true,
11792      transformEl: null
11793    }
11794  });
11795
11796  const createSlideShadows = ($slideEl, progress, params) => {
11797    let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
11798    let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
11799
11800    if (shadowBefore.length === 0) {
11801      shadowBefore = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');
11802    }
11803
11804    if (shadowAfter.length === 0) {
11805      shadowAfter = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
11806    }
11807
11808    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
11809    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
11810  };
11811
11812  const recreateShadows = () => {
11813    // Set shadows
11814    const params = swiper.params.flipEffect;
11815    swiper.slides.each(slideEl => {
11816      const $slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl);
11817      let progress = $slideEl[0].progress;
11818
11819      if (swiper.params.flipEffect.limitRotation) {
11820        progress = Math.max(Math.min(slideEl.progress, 1), -1);
11821      }
11822
11823      createSlideShadows($slideEl, progress, params);
11824    });
11825  };
11826
11827  const setTranslate = () => {
11828    const {
11829      slides,
11830      rtlTranslate: rtl
11831    } = swiper;
11832    const params = swiper.params.flipEffect;
11833
11834    for (let i = 0; i < slides.length; i += 1) {
11835      const $slideEl = slides.eq(i);
11836      let progress = $slideEl[0].progress;
11837
11838      if (swiper.params.flipEffect.limitRotation) {
11839        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
11840      }
11841
11842      const offset = $slideEl[0].swiperSlideOffset;
11843      const rotate = -180 * progress;
11844      let rotateY = rotate;
11845      let rotateX = 0;
11846      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
11847      let ty = 0;
11848
11849      if (!swiper.isHorizontal()) {
11850        ty = tx;
11851        tx = 0;
11852        rotateX = -rotateY;
11853        rotateY = 0;
11854      } else if (rtl) {
11855        rotateY = -rotateY;
11856      }
11857
11858      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
11859
11860      if (params.slideShadows) {
11861        createSlideShadows($slideEl, progress, params);
11862      }
11863
11864      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
11865      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__["default"])(params, $slideEl);
11866      $targetEl.transform(transform);
11867    }
11868  };
11869
11870  const setTransition = duration => {
11871    const {
11872      transformEl
11873    } = swiper.params.flipEffect;
11874    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
11875    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
11876    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__["default"])({
11877      swiper,
11878      duration,
11879      transformEl
11880    });
11881  };
11882
11883  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
11884    effect: 'flip',
11885    swiper,
11886    on,
11887    setTranslate,
11888    setTransition,
11889    recreateShadows,
11890    getEffectParams: () => swiper.params.flipEffect,
11891    perspective: () => true,
11892    overwriteParams: () => ({
11893      slidesPerView: 1,
11894      slidesPerGroup: 1,
11895      watchSlidesProgress: true,
11896      spaceBetween: 0,
11897      virtualTranslate: !swiper.params.cssMode
11898    })
11899  });
11900}
11901
11902/***/ }),
11903
vendor: 8,979 bytes, lines 11904-12174
11904/***/ "./node_modules/swiper/modules/free-mode/free-mode.js":
11905/*!************************************************************!*\
11906  !*** ./node_modules/swiper/modules/free-mode/free-mode.js ***!
11907  \************************************************************/
11908/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11909
11910"use strict";
11911__webpack_require__.r(__webpack_exports__);
11912/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11913/* harmony export */   "default": function() { return /* binding */ freeMode; }
11914/* harmony export */ });
11915/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
11916
11917function freeMode({
11918  swiper,
11919  extendParams,
11920  emit,
11921  once
11922}) {
11923  extendParams({
11924    freeMode: {
11925      enabled: false,
11926      momentum: true,
11927      momentumRatio: 1,
11928      momentumBounce: true,
11929      momentumBounceRatio: 1,
11930      momentumVelocityRatio: 1,
11931      sticky: false,
11932      minimumVelocity: 0.02
11933    }
11934  });
11935
11936  function onTouchStart() {
11937    const translate = swiper.getTranslate();
11938    swiper.setTranslate(translate);
11939    swiper.setTransition(0);
11940    swiper.touchEventsData.velocities.length = 0;
11941    swiper.freeMode.onTouchEnd({
11942      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
11943    });
11944  }
11945
11946  function onTouchMove() {
11947    const {
11948      touchEventsData: data,
11949      touches
11950    } = swiper; // Velocity
11951
11952    if (data.velocities.length === 0) {
11953      data.velocities.push({
11954        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
11955        time: data.touchStartTime
11956      });
11957    }
11958
11959    data.velocities.push({
11960      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
11961      time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)()
11962    });
11963  }
11964
11965  function onTouchEnd({
11966    currentPos
11967  }) {
11968    const {
11969      params,
11970      $wrapperEl,
11971      rtlTranslate: rtl,
11972      snapGrid,
11973      touchEventsData: data
11974    } = swiper; // Time diff
11975
11976    const touchEndTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
11977    const timeDiff = touchEndTime - data.touchStartTime;
11978
11979    if (currentPos < -swiper.minTranslate()) {
11980      swiper.slideTo(swiper.activeIndex);
11981      return;
11982    }
11983
11984    if (currentPos > -swiper.maxTranslate()) {
11985      if (swiper.slides.length < snapGrid.length) {
11986        swiper.slideTo(snapGrid.length - 1);
11987      } else {
11988        swiper.slideTo(swiper.slides.length - 1);
11989      }
11990
11991      return;
11992    }
11993
11994    if (params.freeMode.momentum) {
11995      if (data.velocities.length > 1) {
11996        const lastMoveEvent = data.velocities.pop();
11997        const velocityEvent = data.velocities.pop();
11998        const distance = lastMoveEvent.position - velocityEvent.position;
11999        const time = lastMoveEvent.time - velocityEvent.time;
12000        swiper.velocity = distance / time;
12001        swiper.velocity /= 2;
12002
12003        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
12004          swiper.velocity = 0;
12005        } // this implies that the user stopped moving a finger then released.
12006        // There would be no events with distance zero, so the last event is stale.
12007
12008
12009        if (time > 150 || (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)() - lastMoveEvent.time > 300) {
12010          swiper.velocity = 0;
12011        }
12012      } else {
12013        swiper.velocity = 0;
12014      }
12015
12016      swiper.velocity *= params.freeMode.momentumVelocityRatio;
12017      data.velocities.length = 0;
12018      let momentumDuration = 1000 * params.freeMode.momentumRatio;
12019      const momentumDistance = swiper.velocity * momentumDuration;
12020      let newPosition = swiper.translate + momentumDistance;
12021      if (rtl) newPosition = -newPosition;
12022      let doBounce = false;
12023      let afterBouncePosition;
12024      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
12025      let needsLoopFix;
12026
12027      if (newPosition < swiper.maxTranslate()) {
12028        if (params.freeMode.momentumBounce) {
12029          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
12030            newPosition = swiper.maxTranslate() - bounceAmount;
12031          }
12032
12033          afterBouncePosition = swiper.maxTranslate();
12034          doBounce = true;
12035          data.allowMomentumBounce = true;
12036        } else {
12037          newPosition = swiper.maxTranslate();
12038        }
12039
12040        if (params.loop && params.centeredSlides) needsLoopFix = true;
12041      } else if (newPosition > swiper.minTranslate()) {
12042        if (params.freeMode.momentumBounce) {
12043          if (newPosition - swiper.minTranslate() > bounceAmount) {
12044            newPosition = swiper.minTranslate() + bounceAmount;
12045          }
12046
12047          afterBouncePosition = swiper.minTranslate();
12048          doBounce = true;
12049          data.allowMomentumBounce = true;
12050        } else {
12051          newPosition = swiper.minTranslate();
12052        }
12053
12054        if (params.loop && params.centeredSlides) needsLoopFix = true;
12055      } else if (params.freeMode.sticky) {
12056        let nextSlide;
12057
12058        for (let j = 0; j < snapGrid.length; j += 1) {
12059          if (snapGrid[j] > -newPosition) {
12060            nextSlide = j;
12061            break;
12062          }
12063        }
12064
12065        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
12066          newPosition = snapGrid[nextSlide];
12067        } else {
12068          newPosition = snapGrid[nextSlide - 1];
12069        }
12070
12071        newPosition = -newPosition;
12072      }
12073
12074      if (needsLoopFix) {
12075        once('transitionEnd', () => {
12076          swiper.loopFix();
12077        });
12078      } // Fix duration
12079
12080
12081      if (swiper.velocity !== 0) {
12082        if (rtl) {
12083          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
12084        } else {
12085          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
12086        }
12087
12088        if (params.freeMode.sticky) {
12089          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
12090          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
12091          // It's easy to see this when simulating touch with mouse events. To fix this,
12092          // limit single-slide swipes to the default slide duration. This also has the
12093          // nice side effect of matching slide speed if the user stopped moving before
12094          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
12095          // For faster swipes, also apply limits (albeit higher ones).
12096          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
12097          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
12098
12099          if (moveDistance < currentSlideSize) {
12100            momentumDuration = params.speed;
12101          } else if (moveDistance < 2 * currentSlideSize) {
12102            momentumDuration = params.speed * 1.5;
12103          } else {
12104            momentumDuration = params.speed * 2.5;
12105          }
12106        }
12107      } else if (params.freeMode.sticky) {
12108        swiper.slideToClosest();
12109        return;
12110      }
12111
12112      if (params.freeMode.momentumBounce && doBounce) {
12113        swiper.updateProgress(afterBouncePosition);
12114        swiper.setTransition(momentumDuration);
12115        swiper.setTranslate(newPosition);
12116        swiper.transitionStart(true, swiper.swipeDirection);
12117        swiper.animating = true;
12118        $wrapperEl.transitionEnd(() => {
12119          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
12120          emit('momentumBounce');
12121          swiper.setTransition(params.speed);
12122          setTimeout(() => {
12123            swiper.setTranslate(afterBouncePosition);
12124            $wrapperEl.transitionEnd(() => {
12125              if (!swiper || swiper.destroyed) return;
12126              swiper.transitionEnd();
12127            });
12128          }, 0);
12129        });
12130      } else if (swiper.velocity) {
12131        emit('_freeModeNoMomentumRelease');
12132        swiper.updateProgress(newPosition);
12133        swiper.setTransition(momentumDuration);
12134        swiper.setTranslate(newPosition);
12135        swiper.transitionStart(true, swiper.swipeDirection);
12136
12137        if (!swiper.animating) {
12138          swiper.animating = true;
12139          $wrapperEl.transitionEnd(() => {
12140            if (!swiper || swiper.destroyed) return;
12141            swiper.transitionEnd();
12142          });
12143        }
12144      } else {
12145        swiper.updateProgress(newPosition);
12146      }
12147
12148      swiper.updateActiveIndex();
12149      swiper.updateSlidesClasses();
12150    } else if (params.freeMode.sticky) {
12151      swiper.slideToClosest();
12152      return;
12153    } else if (params.freeMode) {
12154      emit('_freeModeNoMomentumRelease');
12155    }
12156
12157    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
12158      swiper.updateProgress();
12159      swiper.updateActiveIndex();
12160      swiper.updateSlidesClasses();
12161    }
12162  }
12163
12164  Object.assign(swiper, {
12165    freeMode: {
12166      onTouchStart,
12167      onTouchMove,
12168      onTouchEnd
12169    }
12170  });
12171}
12172
12173/***/ }),
12174
vendor: 3,832 bytes, lines 12175-12304
12175/***/ "./node_modules/swiper/modules/grid/grid.js":
12176/*!**************************************************!*\
12177  !*** ./node_modules/swiper/modules/grid/grid.js ***!
12178  \**************************************************/
12179/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12180
12181"use strict";
12182__webpack_require__.r(__webpack_exports__);
12183/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12184/* harmony export */   "default": function() { return /* binding */ Grid; }
12185/* harmony export */ });
12186function Grid({
12187  swiper,
12188  extendParams
12189}) {
12190  extendParams({
12191    grid: {
12192      rows: 1,
12193      fill: 'column'
12194    }
12195  });
12196  let slidesNumberEvenToRows;
12197  let slidesPerRow;
12198  let numFullColumns;
12199
12200  const initSlides = slidesLength => {
12201    const {
12202      slidesPerView
12203    } = swiper.params;
12204    const {
12205      rows,
12206      fill
12207    } = swiper.params.grid;
12208    slidesPerRow = slidesNumberEvenToRows / rows;
12209    numFullColumns = Math.floor(slidesLength / rows);
12210
12211    if (Math.floor(slidesLength / rows) === slidesLength / rows) {
12212      slidesNumberEvenToRows = slidesLength;
12213    } else {
12214      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
12215    }
12216
12217    if (slidesPerView !== 'auto' && fill === 'row') {
12218      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
12219    }
12220  };
12221
12222  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {
12223    const {
12224      slidesPerGroup,
12225      spaceBetween
12226    } = swiper.params;
12227    const {
12228      rows,
12229      fill
12230    } = swiper.params.grid; // Set slides order
12231
12232    let newSlideOrderIndex;
12233    let column;
12234    let row;
12235
12236    if (fill === 'row' && slidesPerGroup > 1) {
12237      const groupIndex = Math.floor(i / (slidesPerGroup * rows));
12238      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
12239      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
12240      row = Math.floor(slideIndexInGroup / columnsInGroup);
12241      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
12242      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
12243      slide.css({
12244        '-webkit-order': newSlideOrderIndex,
12245        order: newSlideOrderIndex
12246      });
12247    } else if (fill === 'column') {
12248      column = Math.floor(i / rows);
12249      row = i - column * rows;
12250
12251      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
12252        row += 1;
12253
12254        if (row >= rows) {
12255          row = 0;
12256          column += 1;
12257        }
12258      }
12259    } else {
12260      row = Math.floor(i / slidesPerRow);
12261      column = i - row * slidesPerRow;
12262    }
12263
12264    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');
12265  };
12266
12267  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {
12268    const {
12269      spaceBetween,
12270      centeredSlides,
12271      roundLengths
12272    } = swiper.params;
12273    const {
12274      rows
12275    } = swiper.params.grid;
12276    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
12277    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
12278    swiper.$wrapperEl.css({
12279      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`
12280    });
12281
12282    if (centeredSlides) {
12283      snapGrid.splice(0, snapGrid.length);
12284      const newSlidesGrid = [];
12285
12286      for (let i = 0; i < snapGrid.length; i += 1) {
12287        let slidesGridItem = snapGrid[i];
12288        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
12289        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
12290      }
12291
12292      snapGrid.push(...newSlidesGrid);
12293    }
12294  };
12295
12296  swiper.grid = {
12297    initSlides,
12298    updateSlide,
12299    updateWrapperSize
12300  };
12301}
12302
12303/***/ }),
12304
vendor: 3,816 bytes, lines 12305-12416
12305/***/ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js":
12306/*!************************************************************************!*\
12307  !*** ./node_modules/swiper/modules/hash-navigation/hash-navigation.js ***!
12308  \************************************************************************/
12309/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12310
12311"use strict";
12312__webpack_require__.r(__webpack_exports__);
12313/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12314/* harmony export */   "default": function() { return /* binding */ HashNavigation; }
12315/* harmony export */ });
12316/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12317/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
12318
12319
12320function HashNavigation({
12321  swiper,
12322  extendParams,
12323  emit,
12324  on
12325}) {
12326  let initialized = false;
12327  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
12328  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12329  extendParams({
12330    hashNavigation: {
12331      enabled: false,
12332      replaceState: false,
12333      watchState: false
12334    }
12335  });
12336
12337  const onHashChange = () => {
12338    emit('hashChange');
12339    const newHash = document.location.hash.replace('#', '');
12340    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
12341
12342    if (newHash !== activeSlideHash) {
12343      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
12344      if (typeof newIndex === 'undefined') return;
12345      swiper.slideTo(newIndex);
12346    }
12347  };
12348
12349  const setHash = () => {
12350    if (!initialized || !swiper.params.hashNavigation.enabled) return;
12351
12352    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
12353      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');
12354      emit('hashSet');
12355    } else {
12356      const slide = swiper.slides.eq(swiper.activeIndex);
12357      const hash = slide.attr('data-hash') || slide.attr('data-history');
12358      document.location.hash = hash || '';
12359      emit('hashSet');
12360    }
12361  };
12362
12363  const init = () => {
12364    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
12365    initialized = true;
12366    const hash = document.location.hash.replace('#', '');
12367
12368    if (hash) {
12369      const speed = 0;
12370
12371      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
12372        const slide = swiper.slides.eq(i);
12373        const slideHash = slide.attr('data-hash') || slide.attr('data-history');
12374
12375        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
12376          const index = slide.index();
12377          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
12378        }
12379      }
12380    }
12381
12382    if (swiper.params.hashNavigation.watchState) {
12383      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).on('hashchange', onHashChange);
12384    }
12385  };
12386
12387  const destroy = () => {
12388    if (swiper.params.hashNavigation.watchState) {
12389      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).off('hashchange', onHashChange);
12390    }
12391  };
12392
12393  on('init', () => {
12394    if (swiper.params.hashNavigation.enabled) {
12395      init();
12396    }
12397  });
12398  on('destroy', () => {
12399    if (swiper.params.hashNavigation.enabled) {
12400      destroy();
12401    }
12402  });
12403  on('transitionEnd _freeModeNoMomentumRelease', () => {
12404    if (initialized) {
12405      setHash();
12406    }
12407  });
12408  on('slideChange', () => {
12409    if (initialized && swiper.params.cssMode) {
12410      setHash();
12411    }
12412  });
12413}
12414
12415/***/ }),
12416
vendor: 4,833 bytes, lines 12417-12586
12417/***/ "./node_modules/swiper/modules/history/history.js":
12418/*!********************************************************!*\
12419  !*** ./node_modules/swiper/modules/history/history.js ***!
12420  \********************************************************/
12421/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12422
12423"use strict";
12424__webpack_require__.r(__webpack_exports__);
12425/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12426/* harmony export */   "default": function() { return /* binding */ History; }
12427/* harmony export */ });
12428/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12429
12430function History({
12431  swiper,
12432  extendParams,
12433  on
12434}) {
12435  extendParams({
12436    history: {
12437      enabled: false,
12438      root: '',
12439      replaceState: false,
12440      key: 'slides',
12441      keepQuery: false
12442    }
12443  });
12444  let initialized = false;
12445  let paths = {};
12446
12447  const slugify = text => {
12448    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
12449  };
12450
12451  const getPathValues = urlOverride => {
12452    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12453    let location;
12454
12455    if (urlOverride) {
12456      location = new URL(urlOverride);
12457    } else {
12458      location = window.location;
12459    }
12460
12461    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');
12462    const total = pathArray.length;
12463    const key = pathArray[total - 2];
12464    const value = pathArray[total - 1];
12465    return {
12466      key,
12467      value
12468    };
12469  };
12470
12471  const setHistory = (key, index) => {
12472    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12473    if (!initialized || !swiper.params.history.enabled) return;
12474    let location;
12475
12476    if (swiper.params.url) {
12477      location = new URL(swiper.params.url);
12478    } else {
12479      location = window.location;
12480    }
12481
12482    const slide = swiper.slides.eq(index);
12483    let value = slugify(slide.attr('data-history'));
12484
12485    if (swiper.params.history.root.length > 0) {
12486      let root = swiper.params.history.root;
12487      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
12488      value = `${root}/${key}/${value}`;
12489    } else if (!location.pathname.includes(key)) {
12490      value = `${key}/${value}`;
12491    }
12492
12493    if (swiper.params.history.keepQuery) {
12494      value += location.search;
12495    }
12496
12497    const currentState = window.history.state;
12498
12499    if (currentState && currentState.value === value) {
12500      return;
12501    }
12502
12503    if (swiper.params.history.replaceState) {
12504      window.history.replaceState({
12505        value
12506      }, null, value);
12507    } else {
12508      window.history.pushState({
12509        value
12510      }, null, value);
12511    }
12512  };
12513
12514  const scrollToSlide = (speed, value, runCallbacks) => {
12515    if (value) {
12516      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
12517        const slide = swiper.slides.eq(i);
12518        const slideHistory = slugify(slide.attr('data-history'));
12519
12520        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
12521          const index = slide.index();
12522          swiper.slideTo(index, speed, runCallbacks);
12523        }
12524      }
12525    } else {
12526      swiper.slideTo(0, speed, runCallbacks);
12527    }
12528  };
12529
12530  const setHistoryPopState = () => {
12531    paths = getPathValues(swiper.params.url);
12532    scrollToSlide(swiper.params.speed, paths.value, false);
12533  };
12534
12535  const init = () => {
12536    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12537    if (!swiper.params.history) return;
12538
12539    if (!window.history || !window.history.pushState) {
12540      swiper.params.history.enabled = false;
12541      swiper.params.hashNavigation.enabled = true;
12542      return;
12543    }
12544
12545    initialized = true;
12546    paths = getPathValues(swiper.params.url);
12547    if (!paths.key && !paths.value) return;
12548    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
12549
12550    if (!swiper.params.history.replaceState) {
12551      window.addEventListener('popstate', setHistoryPopState);
12552    }
12553  };
12554
12555  const destroy = () => {
12556    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12557
12558    if (!swiper.params.history.replaceState) {
12559      window.removeEventListener('popstate', setHistoryPopState);
12560    }
12561  };
12562
12563  on('init', () => {
12564    if (swiper.params.history.enabled) {
12565      init();
12566    }
12567  });
12568  on('destroy', () => {
12569    if (swiper.params.history.enabled) {
12570      destroy();
12571    }
12572  });
12573  on('transitionEnd _freeModeNoMomentumRelease', () => {
12574    if (initialized) {
12575      setHistory(swiper.params.history.key, swiper.activeIndex);
12576    }
12577  });
12578  on('slideChange', () => {
12579    if (initialized && swiper.params.cssMode) {
12580      setHistory(swiper.params.history.key, swiper.activeIndex);
12581    }
12582  });
12583}
12584
12585/***/ }),
12586
vendor: 5,214 bytes, lines 12587-12733
12587/***/ "./node_modules/swiper/modules/keyboard/keyboard.js":
12588/*!**********************************************************!*\
12589  !*** ./node_modules/swiper/modules/keyboard/keyboard.js ***!
12590  \**********************************************************/
12591/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12592
12593"use strict";
12594__webpack_require__.r(__webpack_exports__);
12595/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12596/* harmony export */   "default": function() { return /* binding */ Keyboard; }
12597/* harmony export */ });
12598/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12599/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
12600/* eslint-disable consistent-return */
12601
12602
12603function Keyboard({
12604  swiper,
12605  extendParams,
12606  on,
12607  emit
12608}) {
12609  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
12610  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12611  swiper.keyboard = {
12612    enabled: false
12613  };
12614  extendParams({
12615    keyboard: {
12616      enabled: false,
12617      onlyInViewport: true,
12618      pageUpDown: true
12619    }
12620  });
12621
12622  function handle(event) {
12623    if (!swiper.enabled) return;
12624    const {
12625      rtlTranslate: rtl
12626    } = swiper;
12627    let e = event;
12628    if (e.originalEvent) e = e.originalEvent; // jquery fix
12629
12630    const kc = e.keyCode || e.charCode;
12631    const pageUpDown = swiper.params.keyboard.pageUpDown;
12632    const isPageUp = pageUpDown && kc === 33;
12633    const isPageDown = pageUpDown && kc === 34;
12634    const isArrowLeft = kc === 37;
12635    const isArrowRight = kc === 39;
12636    const isArrowUp = kc === 38;
12637    const isArrowDown = kc === 40; // Directions locks
12638
12639    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
12640      return false;
12641    }
12642
12643    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
12644      return false;
12645    }
12646
12647    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
12648      return undefined;
12649    }
12650
12651    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
12652      return undefined;
12653    }
12654
12655    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
12656      let inView = false; // Check that swiper should be inside of visible area of window
12657
12658      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {
12659        return undefined;
12660      }
12661
12662      const $el = swiper.$el;
12663      const swiperWidth = $el[0].clientWidth;
12664      const swiperHeight = $el[0].clientHeight;
12665      const windowWidth = window.innerWidth;
12666      const windowHeight = window.innerHeight;
12667      const swiperOffset = swiper.$el.offset();
12668      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
12669      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
12670
12671      for (let i = 0; i < swiperCoord.length; i += 1) {
12672        const point = swiperCoord[i];
12673
12674        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
12675          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
12676
12677          inView = true;
12678        }
12679      }
12680
12681      if (!inView) return undefined;
12682    }
12683
12684    if (swiper.isHorizontal()) {
12685      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
12686        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
12687      }
12688
12689      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
12690      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
12691    } else {
12692      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
12693        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
12694      }
12695
12696      if (isPageDown || isArrowDown) swiper.slideNext();
12697      if (isPageUp || isArrowUp) swiper.slidePrev();
12698    }
12699
12700    emit('keyPress', kc);
12701    return undefined;
12702  }
12703
12704  function enable() {
12705    if (swiper.keyboard.enabled) return;
12706    (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).on('keydown', handle);
12707    swiper.keyboard.enabled = true;
12708  }
12709
12710  function disable() {
12711    if (!swiper.keyboard.enabled) return;
12712    (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).off('keydown', handle);
12713    swiper.keyboard.enabled = false;
12714  }
12715
12716  on('init', () => {
12717    if (swiper.params.keyboard.enabled) {
12718      enable();
12719    }
12720  });
12721  on('destroy', () => {
12722    if (swiper.keyboard.enabled) {
12723      disable();
12724    }
12725  });
12726  Object.assign(swiper.keyboard, {
12727    enable,
12728    disable
12729  });
12730}
12731
12732/***/ }),
12733
vendor: 10,969 bytes, lines 12734-13036
12734/***/ "./node_modules/swiper/modules/lazy/lazy.js":
12735/*!**************************************************!*\
12736  !*** ./node_modules/swiper/modules/lazy/lazy.js ***!
12737  \**************************************************/
12738/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12739
12740"use strict";
12741__webpack_require__.r(__webpack_exports__);
12742/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12743/* harmony export */   "default": function() { return /* binding */ Lazy; }
12744/* harmony export */ });
12745/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12746/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
12747
12748
12749function Lazy({
12750  swiper,
12751  extendParams,
12752  on,
12753  emit
12754}) {
12755  extendParams({
12756    lazy: {
12757      checkInView: false,
12758      enabled: false,
12759      loadPrevNext: false,
12760      loadPrevNextAmount: 1,
12761      loadOnTransitionStart: false,
12762      scrollingElement: '',
12763      elementClass: 'swiper-lazy',
12764      loadingClass: 'swiper-lazy-loading',
12765      loadedClass: 'swiper-lazy-loaded',
12766      preloaderClass: 'swiper-lazy-preloader'
12767    }
12768  });
12769  swiper.lazy = {};
12770  let scrollHandlerAttached = false;
12771  let initialImageLoaded = false;
12772
12773  function loadInSlide(index, loadInDuplicate = true) {
12774    const params = swiper.params.lazy;
12775    if (typeof index === 'undefined') return;
12776    if (swiper.slides.length === 0) return;
12777    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
12778    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index);
12779    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
12780
12781    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
12782      $images.push($slideEl[0]);
12783    }
12784
12785    if ($images.length === 0) return;
12786    $images.each(imageEl => {
12787      const $imageEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl);
12788      $imageEl.addClass(params.loadingClass);
12789      const background = $imageEl.attr('data-background');
12790      const src = $imageEl.attr('data-src');
12791      const srcset = $imageEl.attr('data-srcset');
12792      const sizes = $imageEl.attr('data-sizes');
12793      const $pictureEl = $imageEl.parent('picture');
12794      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {
12795        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
12796
12797        if (background) {
12798          $imageEl.css('background-image', `url("${background}")`);
12799          $imageEl.removeAttr('data-background');
12800        } else {
12801          if (srcset) {
12802            $imageEl.attr('srcset', srcset);
12803            $imageEl.removeAttr('data-srcset');
12804          }
12805
12806          if (sizes) {
12807            $imageEl.attr('sizes', sizes);
12808            $imageEl.removeAttr('data-sizes');
12809          }
12810
12811          if ($pictureEl.length) {
12812            $pictureEl.children('source').each(sourceEl => {
12813              const $source = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(sourceEl);
12814
12815              if ($source.attr('data-srcset')) {
12816                $source.attr('srcset', $source.attr('data-srcset'));
12817                $source.removeAttr('data-srcset');
12818              }
12819            });
12820          }
12821
12822          if (src) {
12823            $imageEl.attr('src', src);
12824            $imageEl.removeAttr('data-src');
12825          }
12826        }
12827
12828        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
12829        $slideEl.find(`.${params.preloaderClass}`).remove();
12830
12831        if (swiper.params.loop && loadInDuplicate) {
12832          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
12833
12834          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
12835            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
12836            loadInSlide(originalSlide.index(), false);
12837          } else {
12838            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
12839            loadInSlide(duplicatedSlide.index(), false);
12840          }
12841        }
12842
12843        emit('lazyImageReady', $slideEl[0], $imageEl[0]);
12844
12845        if (swiper.params.autoHeight) {
12846          swiper.updateAutoHeight();
12847        }
12848      });
12849      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
12850    });
12851  }
12852
12853  function load() {
12854    const {
12855      $wrapperEl,
12856      params: swiperParams,
12857      slides,
12858      activeIndex
12859    } = swiper;
12860    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;
12861    const params = swiperParams.lazy;
12862    let slidesPerView = swiperParams.slidesPerView;
12863
12864    if (slidesPerView === 'auto') {
12865      slidesPerView = 0;
12866    }
12867
12868    function slideExist(index) {
12869      if (isVirtual) {
12870        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) {
12871          return true;
12872        }
12873      } else if (slides[index]) return true;
12874
12875      return false;
12876    }
12877
12878    function slideIndex(slideEl) {
12879      if (isVirtual) {
12880        return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index');
12881      }
12882
12883      return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index();
12884    }
12885
12886    if (!initialImageLoaded) initialImageLoaded = true;
12887
12888    if (swiper.params.watchSlidesProgress) {
12889      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {
12890        const index = isVirtual ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index') : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index();
12891        loadInSlide(index);
12892      });
12893    } else if (slidesPerView > 1) {
12894      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
12895        if (slideExist(i)) loadInSlide(i);
12896      }
12897    } else {
12898      loadInSlide(activeIndex);
12899    }
12900
12901    if (params.loadPrevNext) {
12902      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
12903        const amount = params.loadPrevNextAmount;
12904        const spv = Math.ceil(slidesPerView);
12905        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
12906        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
12907
12908        for (let i = activeIndex + spv; i < maxIndex; i += 1) {
12909          if (slideExist(i)) loadInSlide(i);
12910        } // Prev Slides
12911
12912
12913        for (let i = minIndex; i < activeIndex; i += 1) {
12914          if (slideExist(i)) loadInSlide(i);
12915        }
12916      } else {
12917        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
12918        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));
12919        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
12920        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));
12921      }
12922    }
12923  }
12924
12925  function checkInViewOnLoad() {
12926    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12927    if (!swiper || swiper.destroyed) return;
12928    const $scrollElement = swiper.params.lazy.scrollingElement ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.lazy.scrollingElement) : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window);
12929    const isWindow = $scrollElement[0] === window;
12930    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;
12931    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;
12932    const swiperOffset = swiper.$el.offset();
12933    const {
12934      rtlTranslate: rtl
12935    } = swiper;
12936    let inView = false;
12937    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
12938    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]];
12939
12940    for (let i = 0; i < swiperCoord.length; i += 1) {
12941      const point = swiperCoord[i];
12942
12943      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {
12944        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
12945
12946        inView = true;
12947      }
12948    }
12949
12950    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {
12951      passive: true,
12952      capture: false
12953    } : false;
12954
12955    if (inView) {
12956      load();
12957      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);
12958    } else if (!scrollHandlerAttached) {
12959      scrollHandlerAttached = true;
12960      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);
12961    }
12962  }
12963
12964  on('beforeInit', () => {
12965    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
12966      swiper.params.preloadImages = false;
12967    }
12968  });
12969  on('init', () => {
12970    if (swiper.params.lazy.enabled) {
12971      if (swiper.params.lazy.checkInView) {
12972        checkInViewOnLoad();
12973      } else {
12974        load();
12975      }
12976    }
12977  });
12978  on('scroll', () => {
12979    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {
12980      load();
12981    }
12982  });
12983  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {
12984    if (swiper.params.lazy.enabled) {
12985      if (swiper.params.lazy.checkInView) {
12986        checkInViewOnLoad();
12987      } else {
12988        load();
12989      }
12990    }
12991  });
12992  on('transitionStart', () => {
12993    if (swiper.params.lazy.enabled) {
12994      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {
12995        if (swiper.params.lazy.checkInView) {
12996          checkInViewOnLoad();
12997        } else {
12998          load();
12999        }
13000      }
13001    }
13002  });
13003  on('transitionEnd', () => {
13004    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
13005      if (swiper.params.lazy.checkInView) {
13006        checkInViewOnLoad();
13007      } else {
13008        load();
13009      }
13010    }
13011  });
13012  on('slideChange', () => {
13013    const {
13014      lazy,
13015      cssMode,
13016      watchSlidesProgress,
13017      touchReleaseOnEdges,
13018      resistanceRatio
13019    } = swiper.params;
13020
13021    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {
13022      load();
13023    }
13024  });
13025  on('destroy', () => {
13026    if (!swiper.$el) return;
13027    swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);
13028  });
13029  Object.assign(swiper.lazy, {
13030    load,
13031    loadInSlide
13032  });
13033}
13034
13035/***/ }),
13036
vendor: 2,197 bytes, lines 13037-13071
13037/***/ "./node_modules/swiper/modules/manipulation/manipulation.js":
13038/*!******************************************************************!*\
13039  !*** ./node_modules/swiper/modules/manipulation/manipulation.js ***!
13040  \******************************************************************/
13041/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13042
13043"use strict";
13044__webpack_require__.r(__webpack_exports__);
13045/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13046/* harmony export */   "default": function() { return /* binding */ Manipulation; }
13047/* harmony export */ });
13048/* harmony import */ var _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./methods/appendSlide.js */ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js");
13049/* harmony import */ var _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./methods/prependSlide.js */ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js");
13050/* harmony import */ var _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./methods/addSlide.js */ "./node_modules/swiper/modules/manipulation/methods/addSlide.js");
13051/* harmony import */ var _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./methods/removeSlide.js */ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js");
13052/* harmony import */ var _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./methods/removeAllSlides.js */ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js");
13053
13054
13055
13056
13057
13058function Manipulation({
13059  swiper
13060}) {
13061  Object.assign(swiper, {
13062    appendSlide: _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__["default"].bind(swiper),
13063    prependSlide: _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper),
13064    addSlide: _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper),
13065    removeSlide: _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper),
13066    removeAllSlides: _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__["default"].bind(swiper)
13067  });
13068}
13069
13070/***/ }),
13071
vendor: 2,122 bytes, lines 13072-13149
13072/***/ "./node_modules/swiper/modules/manipulation/methods/addSlide.js":
13073/*!**********************************************************************!*\
13074  !*** ./node_modules/swiper/modules/manipulation/methods/addSlide.js ***!
13075  \**********************************************************************/
13076/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13077
13078"use strict";
13079__webpack_require__.r(__webpack_exports__);
13080/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13081/* harmony export */   "default": function() { return /* binding */ addSlide; }
13082/* harmony export */ });
13083function addSlide(index, slides) {
13084  const swiper = this;
13085  const {
13086    $wrapperEl,
13087    params,
13088    activeIndex
13089  } = swiper;
13090  let activeIndexBuffer = activeIndex;
13091
13092  if (params.loop) {
13093    activeIndexBuffer -= swiper.loopedSlides;
13094    swiper.loopDestroy();
13095    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
13096  }
13097
13098  const baseLength = swiper.slides.length;
13099
13100  if (index <= 0) {
13101    swiper.prependSlide(slides);
13102    return;
13103  }
13104
13105  if (index >= baseLength) {
13106    swiper.appendSlide(slides);
13107    return;
13108  }
13109
13110  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
13111  const slidesBuffer = [];
13112
13113  for (let i = baseLength - 1; i >= index; i -= 1) {
13114    const currentSlide = swiper.slides.eq(i);
13115    currentSlide.remove();
13116    slidesBuffer.unshift(currentSlide);
13117  }
13118
13119  if (typeof slides === 'object' && 'length' in slides) {
13120    for (let i = 0; i < slides.length; i += 1) {
13121      if (slides[i]) $wrapperEl.append(slides[i]);
13122    }
13123
13124    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
13125  } else {
13126    $wrapperEl.append(slides);
13127  }
13128
13129  for (let i = 0; i < slidesBuffer.length; i += 1) {
13130    $wrapperEl.append(slidesBuffer[i]);
13131  }
13132
13133  if (params.loop) {
13134    swiper.loopCreate();
13135  }
13136
13137  if (!params.observer) {
13138    swiper.update();
13139  }
13140
13141  if (params.loop) {
13142    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
13143  } else {
13144    swiper.slideTo(newActiveIndex, 0, false);
13145  }
13146}
13147
13148/***/ }),
13149
vendor: 1,126 bytes, lines 13150-13190
13150/***/ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js":
13151/*!*************************************************************************!*\
13152  !*** ./node_modules/swiper/modules/manipulation/methods/appendSlide.js ***!
13153  \*************************************************************************/
13154/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13155
13156"use strict";
13157__webpack_require__.r(__webpack_exports__);
13158/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13159/* harmony export */   "default": function() { return /* binding */ appendSlide; }
13160/* harmony export */ });
13161function appendSlide(slides) {
13162  const swiper = this;
13163  const {
13164    $wrapperEl,
13165    params
13166  } = swiper;
13167
13168  if (params.loop) {
13169    swiper.loopDestroy();
13170  }
13171
13172  if (typeof slides === 'object' && 'length' in slides) {
13173    for (let i = 0; i < slides.length; i += 1) {
13174      if (slides[i]) $wrapperEl.append(slides[i]);
13175    }
13176  } else {
13177    $wrapperEl.append(slides);
13178  }
13179
13180  if (params.loop) {
13181    swiper.loopCreate();
13182  }
13183
13184  if (!params.observer) {
13185    swiper.update();
13186  }
13187}
13188
13189/***/ }),
13190
vendor: 1,288 bytes, lines 13191-13238
13191/***/ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js":
13192/*!**************************************************************************!*\
13193  !*** ./node_modules/swiper/modules/manipulation/methods/prependSlide.js ***!
13194  \**************************************************************************/
13195/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13196
13197"use strict";
13198__webpack_require__.r(__webpack_exports__);
13199/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13200/* harmony export */   "default": function() { return /* binding */ prependSlide; }
13201/* harmony export */ });
13202function prependSlide(slides) {
13203  const swiper = this;
13204  const {
13205    params,
13206    $wrapperEl,
13207    activeIndex
13208  } = swiper;
13209
13210  if (params.loop) {
13211    swiper.loopDestroy();
13212  }
13213
13214  let newActiveIndex = activeIndex + 1;
13215
13216  if (typeof slides === 'object' && 'length' in slides) {
13217    for (let i = 0; i < slides.length; i += 1) {
13218      if (slides[i]) $wrapperEl.prepend(slides[i]);
13219    }
13220
13221    newActiveIndex = activeIndex + slides.length;
13222  } else {
13223    $wrapperEl.prepend(slides);
13224  }
13225
13226  if (params.loop) {
13227    swiper.loopCreate();
13228  }
13229
13230  if (!params.observer) {
13231    swiper.update();
13232  }
13233
13234  swiper.slideTo(newActiveIndex, 0, false);
13235}
13236
13237/***/ }),
13238
vendor: 879 bytes, lines 13239-13262
13239/***/ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js":
13240/*!*****************************************************************************!*\
13241  !*** ./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js ***!
13242  \*****************************************************************************/
13243/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13244
13245"use strict";
13246__webpack_require__.r(__webpack_exports__);
13247/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13248/* harmony export */   "default": function() { return /* binding */ removeAllSlides; }
13249/* harmony export */ });
13250function removeAllSlides() {
13251  const swiper = this;
13252  const slidesIndexes = [];
13253
13254  for (let i = 0; i < swiper.slides.length; i += 1) {
13255    slidesIndexes.push(i);
13256  }
13257
13258  swiper.removeSlide(slidesIndexes);
13259}
13260
13261/***/ }),
13262
vendor: 1,917 bytes, lines 13263-13323
13263/***/ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js":
13264/*!*************************************************************************!*\
13265  !*** ./node_modules/swiper/modules/manipulation/methods/removeSlide.js ***!
13266  \*************************************************************************/
13267/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13268
13269"use strict";
13270__webpack_require__.r(__webpack_exports__);
13271/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13272/* harmony export */   "default": function() { return /* binding */ removeSlide; }
13273/* harmony export */ });
13274function removeSlide(slidesIndexes) {
13275  const swiper = this;
13276  const {
13277    params,
13278    $wrapperEl,
13279    activeIndex
13280  } = swiper;
13281  let activeIndexBuffer = activeIndex;
13282
13283  if (params.loop) {
13284    activeIndexBuffer -= swiper.loopedSlides;
13285    swiper.loopDestroy();
13286    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
13287  }
13288
13289  let newActiveIndex = activeIndexBuffer;
13290  let indexToRemove;
13291
13292  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
13293    for (let i = 0; i < slidesIndexes.length; i += 1) {
13294      indexToRemove = slidesIndexes[i];
13295      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
13296      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
13297    }
13298
13299    newActiveIndex = Math.max(newActiveIndex, 0);
13300  } else {
13301    indexToRemove = slidesIndexes;
13302    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
13303    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
13304    newActiveIndex = Math.max(newActiveIndex, 0);
13305  }
13306
13307  if (params.loop) {
13308    swiper.loopCreate();
13309  }
13310
13311  if (!params.observer) {
13312    swiper.update();
13313  }
13314
13315  if (params.loop) {
13316    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
13317  } else {
13318    swiper.slideTo(newActiveIndex, 0, false);
13319  }
13320}
13321
13322/***/ }),
13323
vendor: 15,602 bytes, lines 13324-13762
13324/***/ "./node_modules/swiper/modules/mousewheel/mousewheel.js":
13325/*!**************************************************************!*\
13326  !*** ./node_modules/swiper/modules/mousewheel/mousewheel.js ***!
13327  \**************************************************************/
13328/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13329
13330"use strict";
13331__webpack_require__.r(__webpack_exports__);
13332/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13333/* harmony export */   "default": function() { return /* binding */ Mousewheel; }
13334/* harmony export */ });
13335/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
13336/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
13337/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
13338/* eslint-disable consistent-return */
13339
13340
13341
13342function Mousewheel({
13343  swiper,
13344  extendParams,
13345  on,
13346  emit
13347}) {
13348  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
13349  extendParams({
13350    mousewheel: {
13351      enabled: false,
13352      releaseOnEdges: false,
13353      invert: false,
13354      forceToAxis: false,
13355      sensitivity: 1,
13356      eventsTarget: 'container',
13357      thresholdDelta: null,
13358      thresholdTime: null
13359    }
13360  });
13361  swiper.mousewheel = {
13362    enabled: false
13363  };
13364  let timeout;
13365  let lastScrollTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
13366  let lastEventBeforeSnap;
13367  const recentWheelEvents = [];
13368
13369  function normalize(e) {
13370    // Reasonable defaults
13371    const PIXEL_STEP = 10;
13372    const LINE_HEIGHT = 40;
13373    const PAGE_HEIGHT = 800;
13374    let sX = 0;
13375    let sY = 0; // spinX, spinY
13376
13377    let pX = 0;
13378    let pY = 0; // pixelX, pixelY
13379    // Legacy
13380
13381    if ('detail' in e) {
13382      sY = e.detail;
13383    }
13384
13385    if ('wheelDelta' in e) {
13386      sY = -e.wheelDelta / 120;
13387    }
13388
13389    if ('wheelDeltaY' in e) {
13390      sY = -e.wheelDeltaY / 120;
13391    }
13392
13393    if ('wheelDeltaX' in e) {
13394      sX = -e.wheelDeltaX / 120;
13395    } // side scrolling on FF with DOMMouseScroll
13396
13397
13398    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
13399      sX = sY;
13400      sY = 0;
13401    }
13402
13403    pX = sX * PIXEL_STEP;
13404    pY = sY * PIXEL_STEP;
13405
13406    if ('deltaY' in e) {
13407      pY = e.deltaY;
13408    }
13409
13410    if ('deltaX' in e) {
13411      pX = e.deltaX;
13412    }
13413
13414    if (e.shiftKey && !pX) {
13415      // if user scrolls with shift he wants horizontal scroll
13416      pX = pY;
13417      pY = 0;
13418    }
13419
13420    if ((pX || pY) && e.deltaMode) {
13421      if (e.deltaMode === 1) {
13422        // delta in LINE units
13423        pX *= LINE_HEIGHT;
13424        pY *= LINE_HEIGHT;
13425      } else {
13426        // delta in PAGE units
13427        pX *= PAGE_HEIGHT;
13428        pY *= PAGE_HEIGHT;
13429      }
13430    } // Fall-back if spin cannot be determined
13431
13432
13433    if (pX && !sX) {
13434      sX = pX < 1 ? -1 : 1;
13435    }
13436
13437    if (pY && !sY) {
13438      sY = pY < 1 ? -1 : 1;
13439    }
13440
13441    return {
13442      spinX: sX,
13443      spinY: sY,
13444      pixelX: pX,
13445      pixelY: pY
13446    };
13447  }
13448
13449  function handleMouseEnter() {
13450    if (!swiper.enabled) return;
13451    swiper.mouseEntered = true;
13452  }
13453
13454  function handleMouseLeave() {
13455    if (!swiper.enabled) return;
13456    swiper.mouseEntered = false;
13457  }
13458
13459  function animateSlider(newEvent) {
13460    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
13461      // Prevent if delta of wheel scroll delta is below configured threshold
13462      return false;
13463    }
13464
13465    if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
13466      // Prevent if time between scrolls is below configured threshold
13467      return false;
13468    } // If the movement is NOT big enough and
13469    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
13470    //   Don't go any further (avoid insignificant scroll movement).
13471
13472
13473    if (newEvent.delta >= 6 && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)() - lastScrollTime < 60) {
13474      // Return false as a default
13475      return true;
13476    } // If user is scrolling towards the end:
13477    //   If the slider hasn't hit the latest slide or
13478    //   if the slider is a loop and
13479    //   if the slider isn't moving right now:
13480    //     Go to next slide and
13481    //     emit a scroll event.
13482    // Else (the user is scrolling towards the beginning) and
13483    // if the slider hasn't hit the first slide or
13484    // if the slider is a loop and
13485    // if the slider isn't moving right now:
13486    //   Go to prev slide and
13487    //   emit a scroll event.
13488
13489
13490    if (newEvent.direction < 0) {
13491      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
13492        swiper.slideNext();
13493        emit('scroll', newEvent.raw);
13494      }
13495    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
13496      swiper.slidePrev();
13497      emit('scroll', newEvent.raw);
13498    } // If you got here is because an animation has been triggered so store the current time
13499
13500
13501    lastScrollTime = new window.Date().getTime(); // Return false as a default
13502
13503    return false;
13504  }
13505
13506  function releaseScroll(newEvent) {
13507    const params = swiper.params.mousewheel;
13508
13509    if (newEvent.direction < 0) {
13510      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
13511        // Return true to animate scroll on edges
13512        return true;
13513      }
13514    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
13515      // Return true to animate scroll on edges
13516      return true;
13517    }
13518
13519    return false;
13520  }
13521
13522  function handle(event) {
13523    let e = event;
13524    let disableParentSwiper = true;
13525    if (!swiper.enabled) return;
13526    const params = swiper.params.mousewheel;
13527
13528    if (swiper.params.cssMode) {
13529      e.preventDefault();
13530    }
13531
13532    let target = swiper.$el;
13533
13534    if (swiper.params.mousewheel.eventsTarget !== 'container') {
13535      target = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget);
13536    }
13537
13538    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
13539    if (e.originalEvent) e = e.originalEvent; // jquery fix
13540
13541    let delta = 0;
13542    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
13543    const data = normalize(e);
13544
13545    if (params.forceToAxis) {
13546      if (swiper.isHorizontal()) {
13547        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
13548      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
13549    } else {
13550      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
13551    }
13552
13553    if (delta === 0) return true;
13554    if (params.invert) delta = -delta; // Get the scroll positions
13555
13556    let positions = swiper.getTranslate() + delta * params.sensitivity;
13557    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
13558    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:
13559    //     the disableParentSwiper will be true.
13560    // When loop is false:
13561    //     if the scroll positions is not on edge,
13562    //     then the disableParentSwiper will be true.
13563    //     if the scroll on edge positions,
13564    //     then the disableParentSwiper will be false.
13565
13566    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
13567    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
13568
13569    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
13570      // Register the new event in a variable which stores the relevant data
13571      const newEvent = {
13572        time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
13573        delta: Math.abs(delta),
13574        direction: Math.sign(delta),
13575        raw: event
13576      }; // Keep the most recent events
13577
13578      if (recentWheelEvents.length >= 2) {
13579        recentWheelEvents.shift(); // only store the last N events
13580      }
13581
13582      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
13583      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
13584      //   If direction has changed or
13585      //   if the scroll is quicker than the previous one:
13586      //     Animate the slider.
13587      // Else (this is the first time the wheel is moved):
13588      //     Animate the slider.
13589
13590      if (prevEvent) {
13591        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
13592          animateSlider(newEvent);
13593        }
13594      } else {
13595        animateSlider(newEvent);
13596      } // If it's time to release the scroll:
13597      //   Return now so you don't hit the preventDefault.
13598
13599
13600      if (releaseScroll(newEvent)) {
13601        return true;
13602      }
13603    } else {
13604      // Freemode or scrollContainer:
13605      // If we recently snapped after a momentum scroll, then ignore wheel events
13606      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
13607      // or if it's a new scroll (larger delta or inverse sign as last event before
13608      // an end-of-momentum snap).
13609      const newEvent = {
13610        time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
13611        delta: Math.abs(delta),
13612        direction: Math.sign(delta)
13613      };
13614      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
13615
13616      if (!ignoreWheelEvents) {
13617        lastEventBeforeSnap = undefined;
13618
13619        if (swiper.params.loop) {
13620          swiper.loopFix();
13621        }
13622
13623        let position = swiper.getTranslate() + delta * params.sensitivity;
13624        const wasBeginning = swiper.isBeginning;
13625        const wasEnd = swiper.isEnd;
13626        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
13627        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
13628        swiper.setTransition(0);
13629        swiper.setTranslate(position);
13630        swiper.updateProgress();
13631        swiper.updateActiveIndex();
13632        swiper.updateSlidesClasses();
13633
13634        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
13635          swiper.updateSlidesClasses();
13636        }
13637
13638        if (swiper.params.freeMode.sticky) {
13639          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
13640          // the end of a momentum scroll by storing recent (N=15?) wheel events.
13641          // 1. do all N events have decreasing or same (absolute value) delta?
13642          // 2. did all N events arrive in the last M (M=500?) msecs?
13643          // 3. does the earliest event have an (absolute value) delta that's
13644          //    at least P (P=1?) larger than the most recent event's delta?
13645          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
13646          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
13647          // Snap immediately and ignore remaining wheel events in this scroll.
13648          // See comment above for "remaining wheel events in this scroll" determination.
13649          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
13650          clearTimeout(timeout);
13651          timeout = undefined;
13652
13653          if (recentWheelEvents.length >= 15) {
13654            recentWheelEvents.shift(); // only store the last N events
13655          }
13656
13657          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
13658          const firstEvent = recentWheelEvents[0];
13659          recentWheelEvents.push(newEvent);
13660
13661          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
13662            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
13663            recentWheelEvents.splice(0);
13664          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
13665            // We're at the end of the deceleration of a momentum scroll, so there's no need
13666            // to wait for more events. Snap ASAP on the next tick.
13667            // Also, because there's some remaining momentum we'll bias the snap in the
13668            // direction of the ongoing scroll because it's better UX for the scroll to snap
13669            // in the same direction as the scroll instead of reversing to snap.  Therefore,
13670            // if it's already scrolled more than 20% in the current direction, keep going.
13671            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
13672            lastEventBeforeSnap = newEvent;
13673            recentWheelEvents.splice(0);
13674            timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(() => {
13675              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
13676            }, 0); // no delay; move on next tick
13677          }
13678
13679          if (!timeout) {
13680            // if we get here, then we haven't detected the end of a momentum scroll, so
13681            // we'll consider a scroll "complete" when there haven't been any wheel events
13682            // for 500ms.
13683            timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(() => {
13684              const snapToThreshold = 0.5;
13685              lastEventBeforeSnap = newEvent;
13686              recentWheelEvents.splice(0);
13687              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
13688            }, 500);
13689          }
13690        } // Emit event
13691
13692
13693        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay
13694
13695        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
13696
13697        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
13698      }
13699    }
13700
13701    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
13702    return false;
13703  }
13704
13705  function events(method) {
13706    let target = swiper.$el;
13707
13708    if (swiper.params.mousewheel.eventsTarget !== 'container') {
13709      target = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget);
13710    }
13711
13712    target[method]('mouseenter', handleMouseEnter);
13713    target[method]('mouseleave', handleMouseLeave);
13714    target[method]('wheel', handle);
13715  }
13716
13717  function enable() {
13718    if (swiper.params.cssMode) {
13719      swiper.wrapperEl.removeEventListener('wheel', handle);
13720      return true;
13721    }
13722
13723    if (swiper.mousewheel.enabled) return false;
13724    events('on');
13725    swiper.mousewheel.enabled = true;
13726    return true;
13727  }
13728
13729  function disable() {
13730    if (swiper.params.cssMode) {
13731      swiper.wrapperEl.addEventListener(event, handle);
13732      return true;
13733    }
13734
13735    if (!swiper.mousewheel.enabled) return false;
13736    events('off');
13737    swiper.mousewheel.enabled = false;
13738    return true;
13739  }
13740
13741  on('init', () => {
13742    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
13743      disable();
13744    }
13745
13746    if (swiper.params.mousewheel.enabled) enable();
13747  });
13748  on('destroy', () => {
13749    if (swiper.params.cssMode) {
13750      enable();
13751    }
13752
13753    if (swiper.mousewheel.enabled) disable();
13754  });
13755  Object.assign(swiper.mousewheel, {
13756    enable,
13757    disable
13758  });
13759}
13760
13761/***/ }),
13762
vendor: 6,319 bytes, lines 13763-13985
13763/***/ "./node_modules/swiper/modules/navigation/navigation.js":
13764/*!**************************************************************!*\
13765  !*** ./node_modules/swiper/modules/navigation/navigation.js ***!
13766  \**************************************************************/
13767/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13768
13769"use strict";
13770__webpack_require__.r(__webpack_exports__);
13771/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13772/* harmony export */   "default": function() { return /* binding */ Navigation; }
13773/* harmony export */ });
13774/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
13775/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
13776
13777
13778function Navigation({
13779  swiper,
13780  extendParams,
13781  on,
13782  emit
13783}) {
13784  extendParams({
13785    navigation: {
13786      nextEl: null,
13787      prevEl: null,
13788      hideOnClick: false,
13789      disabledClass: 'swiper-button-disabled',
13790      hiddenClass: 'swiper-button-hidden',
13791      lockClass: 'swiper-button-lock',
13792      navigationDisabledClass: 'swiper-navigation-disabled'
13793    }
13794  });
13795  swiper.navigation = {
13796    nextEl: null,
13797    $nextEl: null,
13798    prevEl: null,
13799    $prevEl: null
13800  };
13801
13802  function getEl(el) {
13803    let $el;
13804
13805    if (el) {
13806      $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el);
13807
13808      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {
13809        $el = swiper.$el.find(el);
13810      }
13811    }
13812
13813    return $el;
13814  }
13815
13816  function toggleEl($el, disabled) {
13817    const params = swiper.params.navigation;
13818
13819    if ($el && $el.length > 0) {
13820      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);
13821      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;
13822
13823      if (swiper.params.watchOverflow && swiper.enabled) {
13824        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
13825      }
13826    }
13827  }
13828
13829  function update() {
13830    // Update Navigation Buttons
13831    if (swiper.params.loop) return;
13832    const {
13833      $nextEl,
13834      $prevEl
13835    } = swiper.navigation;
13836    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);
13837    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);
13838  }
13839
13840  function onPrevClick(e) {
13841    e.preventDefault();
13842    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
13843    swiper.slidePrev();
13844    emit('navigationPrev');
13845  }
13846
13847  function onNextClick(e) {
13848    e.preventDefault();
13849    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
13850    swiper.slideNext();
13851    emit('navigationNext');
13852  }
13853
13854  function init() {
13855    const params = swiper.params.navigation;
13856    swiper.params.navigation = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
13857      nextEl: 'swiper-button-next',
13858      prevEl: 'swiper-button-prev'
13859    });
13860    if (!(params.nextEl || params.prevEl)) return;
13861    const $nextEl = getEl(params.nextEl);
13862    const $prevEl = getEl(params.prevEl);
13863
13864    if ($nextEl && $nextEl.length > 0) {
13865      $nextEl.on('click', onNextClick);
13866    }
13867
13868    if ($prevEl && $prevEl.length > 0) {
13869      $prevEl.on('click', onPrevClick);
13870    }
13871
13872    Object.assign(swiper.navigation, {
13873      $nextEl,
13874      nextEl: $nextEl && $nextEl[0],
13875      $prevEl,
13876      prevEl: $prevEl && $prevEl[0]
13877    });
13878
13879    if (!swiper.enabled) {
13880      if ($nextEl) $nextEl.addClass(params.lockClass);
13881      if ($prevEl) $prevEl.addClass(params.lockClass);
13882    }
13883  }
13884
13885  function destroy() {
13886    const {
13887      $nextEl,
13888      $prevEl
13889    } = swiper.navigation;
13890
13891    if ($nextEl && $nextEl.length) {
13892      $nextEl.off('click', onNextClick);
13893      $nextEl.removeClass(swiper.params.navigation.disabledClass);
13894    }
13895
13896    if ($prevEl && $prevEl.length) {
13897      $prevEl.off('click', onPrevClick);
13898      $prevEl.removeClass(swiper.params.navigation.disabledClass);
13899    }
13900  }
13901
13902  on('init', () => {
13903    if (swiper.params.navigation.enabled === false) {
13904      // eslint-disable-next-line
13905      disable();
13906    } else {
13907      init();
13908      update();
13909    }
13910  });
13911  on('toEdge fromEdge lock unlock', () => {
13912    update();
13913  });
13914  on('destroy', () => {
13915    destroy();
13916  });
13917  on('enable disable', () => {
13918    const {
13919      $nextEl,
13920      $prevEl
13921    } = swiper.navigation;
13922
13923    if ($nextEl) {
13924      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
13925    }
13926
13927    if ($prevEl) {
13928      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
13929    }
13930  });
13931  on('click', (_s, e) => {
13932    const {
13933      $nextEl,
13934      $prevEl
13935    } = swiper.navigation;
13936    const targetEl = e.target;
13937
13938    if (swiper.params.navigation.hideOnClick && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($prevEl) && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($nextEl)) {
13939      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
13940      let isHidden;
13941
13942      if ($nextEl) {
13943        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
13944      } else if ($prevEl) {
13945        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
13946      }
13947
13948      if (isHidden === true) {
13949        emit('navigationShow');
13950      } else {
13951        emit('navigationHide');
13952      }
13953
13954      if ($nextEl) {
13955        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
13956      }
13957
13958      if ($prevEl) {
13959        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
13960      }
13961    }
13962  });
13963
13964  const enable = () => {
13965    swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);
13966    init();
13967    update();
13968  };
13969
13970  const disable = () => {
13971    swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);
13972    destroy();
13973  };
13974
13975  Object.assign(swiper.navigation, {
13976    enable,
13977    disable,
13978    update,
13979    init,
13980    destroy
13981  });
13982}
13983
13984/***/ }),
13985
vendor: 16,180 bytes, lines 13986-14443
13986/***/ "./node_modules/swiper/modules/pagination/pagination.js":
13987/*!**************************************************************!*\
13988  !*** ./node_modules/swiper/modules/pagination/pagination.js ***!
13989  \**************************************************************/
13990/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13991
13992"use strict";
13993__webpack_require__.r(__webpack_exports__);
13994/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13995/* harmony export */   "default": function() { return /* binding */ Pagination; }
13996/* harmony export */ });
13997/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
13998/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
13999/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
14000
14001
14002
14003function Pagination({
14004  swiper,
14005  extendParams,
14006  on,
14007  emit
14008}) {
14009  const pfx = 'swiper-pagination';
14010  extendParams({
14011    pagination: {
14012      el: null,
14013      bulletElement: 'span',
14014      clickable: false,
14015      hideOnClick: false,
14016      renderBullet: null,
14017      renderProgressbar: null,
14018      renderFraction: null,
14019      renderCustom: null,
14020      progressbarOpposite: false,
14021      type: 'bullets',
14022      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
14023      dynamicBullets: false,
14024      dynamicMainBullets: 1,
14025      formatFractionCurrent: number => number,
14026      formatFractionTotal: number => number,
14027      bulletClass: `${pfx}-bullet`,
14028      bulletActiveClass: `${pfx}-bullet-active`,
14029      modifierClass: `${pfx}-`,
14030      currentClass: `${pfx}-current`,
14031      totalClass: `${pfx}-total`,
14032      hiddenClass: `${pfx}-hidden`,
14033      progressbarFillClass: `${pfx}-progressbar-fill`,
14034      progressbarOppositeClass: `${pfx}-progressbar-opposite`,
14035      clickableClass: `${pfx}-clickable`,
14036      lockClass: `${pfx}-lock`,
14037      horizontalClass: `${pfx}-horizontal`,
14038      verticalClass: `${pfx}-vertical`,
14039      paginationDisabledClass: `${pfx}-disabled`
14040    }
14041  });
14042  swiper.pagination = {
14043    el: null,
14044    $el: null,
14045    bullets: []
14046  };
14047  let bulletSize;
14048  let dynamicBulletIndex = 0;
14049
14050  function isPaginationDisabled() {
14051    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;
14052  }
14053
14054  function setSideBullets($bulletEl, position) {
14055    const {
14056      bulletActiveClass
14057    } = swiper.params.pagination;
14058    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);
14059  }
14060
14061  function update() {
14062    // Render || Update Pagination bullets/items
14063    const rtl = swiper.rtl;
14064    const params = swiper.params.pagination;
14065    if (isPaginationDisabled()) return;
14066    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
14067    const $el = swiper.pagination.$el; // Current/Total
14068
14069    let current;
14070    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
14071
14072    if (swiper.params.loop) {
14073      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
14074
14075      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
14076        current -= slidesLength - swiper.loopedSlides * 2;
14077      }
14078
14079      if (current > total - 1) current -= total;
14080      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
14081    } else if (typeof swiper.snapIndex !== 'undefined') {
14082      current = swiper.snapIndex;
14083    } else {
14084      current = swiper.activeIndex || 0;
14085    } // Types
14086
14087
14088    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
14089      const bullets = swiper.pagination.bullets;
14090      let firstIndex;
14091      let lastIndex;
14092      let midIndex;
14093
14094      if (params.dynamicBullets) {
14095        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
14096        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);
14097
14098        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
14099          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);
14100
14101          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
14102            dynamicBulletIndex = params.dynamicMainBullets - 1;
14103          } else if (dynamicBulletIndex < 0) {
14104            dynamicBulletIndex = 0;
14105          }
14106        }
14107
14108        firstIndex = Math.max(current - dynamicBulletIndex, 0);
14109        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
14110        midIndex = (lastIndex + firstIndex) / 2;
14111      }
14112
14113      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));
14114
14115      if ($el.length > 1) {
14116        bullets.each(bullet => {
14117          const $bullet = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(bullet);
14118          const bulletIndex = $bullet.index();
14119
14120          if (bulletIndex === current) {
14121            $bullet.addClass(params.bulletActiveClass);
14122          }
14123
14124          if (params.dynamicBullets) {
14125            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
14126              $bullet.addClass(`${params.bulletActiveClass}-main`);
14127            }
14128
14129            if (bulletIndex === firstIndex) {
14130              setSideBullets($bullet, 'prev');
14131            }
14132
14133            if (bulletIndex === lastIndex) {
14134              setSideBullets($bullet, 'next');
14135            }
14136          }
14137        });
14138      } else {
14139        const $bullet = bullets.eq(current);
14140        const bulletIndex = $bullet.index();
14141        $bullet.addClass(params.bulletActiveClass);
14142
14143        if (params.dynamicBullets) {
14144          const $firstDisplayedBullet = bullets.eq(firstIndex);
14145          const $lastDisplayedBullet = bullets.eq(lastIndex);
14146
14147          for (let i = firstIndex; i <= lastIndex; i += 1) {
14148            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
14149          }
14150
14151          if (swiper.params.loop) {
14152            if (bulletIndex >= bullets.length) {
14153              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
14154                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
14155              }
14156
14157              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
14158            } else {
14159              setSideBullets($firstDisplayedBullet, 'prev');
14160              setSideBullets($lastDisplayedBullet, 'next');
14161            }
14162          } else {
14163            setSideBullets($firstDisplayedBullet, 'prev');
14164            setSideBullets($lastDisplayedBullet, 'next');
14165          }
14166        }
14167      }
14168
14169      if (params.dynamicBullets) {
14170        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
14171        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
14172        const offsetProp = rtl ? 'right' : 'left';
14173        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);
14174      }
14175    }
14176
14177    if (params.type === 'fraction') {
14178      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.currentClass)).text(params.formatFractionCurrent(current + 1));
14179      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.totalClass)).text(params.formatFractionTotal(total));
14180    }
14181
14182    if (params.type === 'progressbar') {
14183      let progressbarDirection;
14184
14185      if (params.progressbarOpposite) {
14186        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
14187      } else {
14188        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
14189      }
14190
14191      const scale = (current + 1) / total;
14192      let scaleX = 1;
14193      let scaleY = 1;
14194
14195      if (progressbarDirection === 'horizontal') {
14196        scaleX = scale;
14197      } else {
14198        scaleY = scale;
14199      }
14200
14201      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
14202    }
14203
14204    if (params.type === 'custom' && params.renderCustom) {
14205      $el.html(params.renderCustom(swiper, current + 1, total));
14206      emit('paginationRender', $el[0]);
14207    } else {
14208      emit('paginationUpdate', $el[0]);
14209    }
14210
14211    if (swiper.params.watchOverflow && swiper.enabled) {
14212      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
14213    }
14214  }
14215
14216  function render() {
14217    // Render Container
14218    const params = swiper.params.pagination;
14219    if (isPaginationDisabled()) return;
14220    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
14221    const $el = swiper.pagination.$el;
14222    let paginationHTML = '';
14223
14224    if (params.type === 'bullets') {
14225      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
14226
14227      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {
14228        numberOfBullets = slidesLength;
14229      }
14230
14231      for (let i = 0; i < numberOfBullets; i += 1) {
14232        if (params.renderBullet) {
14233          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
14234        } else {
14235          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
14236        }
14237      }
14238
14239      $el.html(paginationHTML);
14240      swiper.pagination.bullets = $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass));
14241    }
14242
14243    if (params.type === 'fraction') {
14244      if (params.renderFraction) {
14245        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
14246      } else {
14247        paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
14248      }
14249
14250      $el.html(paginationHTML);
14251    }
14252
14253    if (params.type === 'progressbar') {
14254      if (params.renderProgressbar) {
14255        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
14256      } else {
14257        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
14258      }
14259
14260      $el.html(paginationHTML);
14261    }
14262
14263    if (params.type !== 'custom') {
14264      emit('paginationRender', swiper.pagination.$el[0]);
14265    }
14266  }
14267
14268  function init() {
14269    swiper.params.pagination = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__["default"])(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
14270      el: 'swiper-pagination'
14271    });
14272    const params = swiper.params.pagination;
14273    if (!params.el) return;
14274    let $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.el);
14275    if ($el.length === 0) return;
14276
14277    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
14278      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper
14279
14280      if ($el.length > 1) {
14281        $el = $el.filter(el => {
14282          if ((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el).parents('.swiper')[0] !== swiper.el) return false;
14283          return true;
14284        });
14285      }
14286    }
14287
14288    if (params.type === 'bullets' && params.clickable) {
14289      $el.addClass(params.clickableClass);
14290    }
14291
14292    $el.addClass(params.modifierClass + params.type);
14293    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
14294
14295    if (params.type === 'bullets' && params.dynamicBullets) {
14296      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
14297      dynamicBulletIndex = 0;
14298
14299      if (params.dynamicMainBullets < 1) {
14300        params.dynamicMainBullets = 1;
14301      }
14302    }
14303
14304    if (params.type === 'progressbar' && params.progressbarOpposite) {
14305      $el.addClass(params.progressbarOppositeClass);
14306    }
14307
14308    if (params.clickable) {
14309      $el.on('click', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass), function onClick(e) {
14310        e.preventDefault();
14311        let index = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this).index() * swiper.params.slidesPerGroup;
14312        if (swiper.params.loop) index += swiper.loopedSlides;
14313        swiper.slideTo(index);
14314      });
14315    }
14316
14317    Object.assign(swiper.pagination, {
14318      $el,
14319      el: $el[0]
14320    });
14321
14322    if (!swiper.enabled) {
14323      $el.addClass(params.lockClass);
14324    }
14325  }
14326
14327  function destroy() {
14328    const params = swiper.params.pagination;
14329    if (isPaginationDisabled()) return;
14330    const $el = swiper.pagination.$el;
14331    $el.removeClass(params.hiddenClass);
14332    $el.removeClass(params.modifierClass + params.type);
14333    $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
14334    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
14335
14336    if (params.clickable) {
14337      $el.off('click', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass));
14338    }
14339  }
14340
14341  on('init', () => {
14342    if (swiper.params.pagination.enabled === false) {
14343      // eslint-disable-next-line
14344      disable();
14345    } else {
14346      init();
14347      render();
14348      update();
14349    }
14350  });
14351  on('activeIndexChange', () => {
14352    if (swiper.params.loop) {
14353      update();
14354    } else if (typeof swiper.snapIndex === 'undefined') {
14355      update();
14356    }
14357  });
14358  on('snapIndexChange', () => {
14359    if (!swiper.params.loop) {
14360      update();
14361    }
14362  });
14363  on('slidesLengthChange', () => {
14364    if (swiper.params.loop) {
14365      render();
14366      update();
14367    }
14368  });
14369  on('snapGridLengthChange', () => {
14370    if (!swiper.params.loop) {
14371      render();
14372      update();
14373    }
14374  });
14375  on('destroy', () => {
14376    destroy();
14377  });
14378  on('enable disable', () => {
14379    const {
14380      $el
14381    } = swiper.pagination;
14382
14383    if ($el) {
14384      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);
14385    }
14386  });
14387  on('lock unlock', () => {
14388    update();
14389  });
14390  on('click', (_s, e) => {
14391    const targetEl = e.target;
14392    const {
14393      $el
14394    } = swiper.pagination;
14395
14396    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
14397      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
14398      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);
14399
14400      if (isHidden === true) {
14401        emit('paginationShow');
14402      } else {
14403        emit('paginationHide');
14404      }
14405
14406      $el.toggleClass(swiper.params.pagination.hiddenClass);
14407    }
14408  });
14409
14410  const enable = () => {
14411    swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
14412
14413    if (swiper.pagination.$el) {
14414      swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
14415    }
14416
14417    init();
14418    render();
14419    update();
14420  };
14421
14422  const disable = () => {
14423    swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);
14424
14425    if (swiper.pagination.$el) {
14426      swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);
14427    }
14428
14429    destroy();
14430  };
14431
14432  Object.assign(swiper.pagination, {
14433    enable,
14434    disable,
14435    render,
14436    update,
14437    init,
14438    destroy
14439  });
14440}
14441
14442/***/ }),
14443
vendor: 4,336 bytes, lines 14444-14572
14444/***/ "./node_modules/swiper/modules/parallax/parallax.js":
14445/*!**********************************************************!*\
14446  !*** ./node_modules/swiper/modules/parallax/parallax.js ***!
14447  \**********************************************************/
14448/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14449
14450"use strict";
14451__webpack_require__.r(__webpack_exports__);
14452/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14453/* harmony export */   "default": function() { return /* binding */ Parallax; }
14454/* harmony export */ });
14455/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14456
14457function Parallax({
14458  swiper,
14459  extendParams,
14460  on
14461}) {
14462  extendParams({
14463    parallax: {
14464      enabled: false
14465    }
14466  });
14467
14468  const setTransform = (el, progress) => {
14469    const {
14470      rtl
14471    } = swiper;
14472    const $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el);
14473    const rtlFactor = rtl ? -1 : 1;
14474    const p = $el.attr('data-swiper-parallax') || '0';
14475    let x = $el.attr('data-swiper-parallax-x');
14476    let y = $el.attr('data-swiper-parallax-y');
14477    const scale = $el.attr('data-swiper-parallax-scale');
14478    const opacity = $el.attr('data-swiper-parallax-opacity');
14479
14480    if (x || y) {
14481      x = x || '0';
14482      y = y || '0';
14483    } else if (swiper.isHorizontal()) {
14484      x = p;
14485      y = '0';
14486    } else {
14487      y = p;
14488      x = '0';
14489    }
14490
14491    if (x.indexOf('%') >= 0) {
14492      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
14493    } else {
14494      x = `${x * progress * rtlFactor}px`;
14495    }
14496
14497    if (y.indexOf('%') >= 0) {
14498      y = `${parseInt(y, 10) * progress}%`;
14499    } else {
14500      y = `${y * progress}px`;
14501    }
14502
14503    if (typeof opacity !== 'undefined' && opacity !== null) {
14504      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
14505      $el[0].style.opacity = currentOpacity;
14506    }
14507
14508    if (typeof scale === 'undefined' || scale === null) {
14509      $el.transform(`translate3d(${x}, ${y}, 0px)`);
14510    } else {
14511      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
14512      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
14513    }
14514  };
14515
14516  const setTranslate = () => {
14517    const {
14518      $el,
14519      slides,
14520      progress,
14521      snapGrid
14522    } = swiper;
14523    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {
14524      setTransform(el, progress);
14525    });
14526    slides.each((slideEl, slideIndex) => {
14527      let slideProgress = slideEl.progress;
14528
14529      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
14530        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
14531      }
14532
14533      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
14534      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {
14535        setTransform(el, slideProgress);
14536      });
14537    });
14538  };
14539
14540  const setTransition = (duration = swiper.params.speed) => {
14541    const {
14542      $el
14543    } = swiper;
14544    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {
14545      const $parallaxEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(parallaxEl);
14546      let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
14547      if (duration === 0) parallaxDuration = 0;
14548      $parallaxEl.transition(parallaxDuration);
14549    });
14550  };
14551
14552  on('beforeInit', () => {
14553    if (!swiper.params.parallax.enabled) return;
14554    swiper.params.watchSlidesProgress = true;
14555    swiper.originalParams.watchSlidesProgress = true;
14556  });
14557  on('init', () => {
14558    if (!swiper.params.parallax.enabled) return;
14559    setTranslate();
14560  });
14561  on('setTranslate', () => {
14562    if (!swiper.params.parallax.enabled) return;
14563    setTranslate();
14564  });
14565  on('setTransition', (_swiper, duration) => {
14566    if (!swiper.params.parallax.enabled) return;
14567    setTransition(duration);
14568  });
14569}
14570
14571/***/ }),
14572
vendor: 11,786 bytes, lines 14573-14993
14573/***/ "./node_modules/swiper/modules/scrollbar/scrollbar.js":
14574/*!************************************************************!*\
14575  !*** ./node_modules/swiper/modules/scrollbar/scrollbar.js ***!
14576  \************************************************************/
14577/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14578
14579"use strict";
14580__webpack_require__.r(__webpack_exports__);
14581/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14582/* harmony export */   "default": function() { return /* binding */ Scrollbar; }
14583/* harmony export */ });
14584/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14585/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14586/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
14587/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
14588
14589
14590
14591
14592function Scrollbar({
14593  swiper,
14594  extendParams,
14595  on,
14596  emit
14597}) {
14598  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
14599  let isTouched = false;
14600  let timeout = null;
14601  let dragTimeout = null;
14602  let dragStartPos;
14603  let dragSize;
14604  let trackSize;
14605  let divider;
14606  extendParams({
14607    scrollbar: {
14608      el: null,
14609      dragSize: 'auto',
14610      hide: false,
14611      draggable: false,
14612      snapOnRelease: true,
14613      lockClass: 'swiper-scrollbar-lock',
14614      dragClass: 'swiper-scrollbar-drag',
14615      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
14616      horizontalClass: `swiper-scrollbar-horizontal`,
14617      verticalClass: `swiper-scrollbar-vertical`
14618    }
14619  });
14620  swiper.scrollbar = {
14621    el: null,
14622    dragEl: null,
14623    $el: null,
14624    $dragEl: null
14625  };
14626
14627  function setTranslate() {
14628    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
14629    const {
14630      scrollbar,
14631      rtlTranslate: rtl,
14632      progress
14633    } = swiper;
14634    const {
14635      $dragEl,
14636      $el
14637    } = scrollbar;
14638    const params = swiper.params.scrollbar;
14639    let newSize = dragSize;
14640    let newPos = (trackSize - dragSize) * progress;
14641
14642    if (rtl) {
14643      newPos = -newPos;
14644
14645      if (newPos > 0) {
14646        newSize = dragSize - newPos;
14647        newPos = 0;
14648      } else if (-newPos + dragSize > trackSize) {
14649        newSize = trackSize + newPos;
14650      }
14651    } else if (newPos < 0) {
14652      newSize = dragSize + newPos;
14653      newPos = 0;
14654    } else if (newPos + dragSize > trackSize) {
14655      newSize = trackSize - newPos;
14656    }
14657
14658    if (swiper.isHorizontal()) {
14659      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
14660      $dragEl[0].style.width = `${newSize}px`;
14661    } else {
14662      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
14663      $dragEl[0].style.height = `${newSize}px`;
14664    }
14665
14666    if (params.hide) {
14667      clearTimeout(timeout);
14668      $el[0].style.opacity = 1;
14669      timeout = setTimeout(() => {
14670        $el[0].style.opacity = 0;
14671        $el.transition(400);
14672      }, 1000);
14673    }
14674  }
14675
14676  function setTransition(duration) {
14677    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
14678    swiper.scrollbar.$dragEl.transition(duration);
14679  }
14680
14681  function updateSize() {
14682    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
14683    const {
14684      scrollbar
14685    } = swiper;
14686    const {
14687      $dragEl,
14688      $el
14689    } = scrollbar;
14690    $dragEl[0].style.width = '';
14691    $dragEl[0].style.height = '';
14692    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
14693    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
14694
14695    if (swiper.params.scrollbar.dragSize === 'auto') {
14696      dragSize = trackSize * divider;
14697    } else {
14698      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
14699    }
14700
14701    if (swiper.isHorizontal()) {
14702      $dragEl[0].style.width = `${dragSize}px`;
14703    } else {
14704      $dragEl[0].style.height = `${dragSize}px`;
14705    }
14706
14707    if (divider >= 1) {
14708      $el[0].style.display = 'none';
14709    } else {
14710      $el[0].style.display = '';
14711    }
14712
14713    if (swiper.params.scrollbar.hide) {
14714      $el[0].style.opacity = 0;
14715    }
14716
14717    if (swiper.params.watchOverflow && swiper.enabled) {
14718      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
14719    }
14720  }
14721
14722  function getPointerPosition(e) {
14723    if (swiper.isHorizontal()) {
14724      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
14725    }
14726
14727    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
14728  }
14729
14730  function setDragPosition(e) {
14731    const {
14732      scrollbar,
14733      rtlTranslate: rtl
14734    } = swiper;
14735    const {
14736      $el
14737    } = scrollbar;
14738    let positionRatio;
14739    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
14740    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
14741
14742    if (rtl) {
14743      positionRatio = 1 - positionRatio;
14744    }
14745
14746    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
14747    swiper.updateProgress(position);
14748    swiper.setTranslate(position);
14749    swiper.updateActiveIndex();
14750    swiper.updateSlidesClasses();
14751  }
14752
14753  function onDragStart(e) {
14754    const params = swiper.params.scrollbar;
14755    const {
14756      scrollbar,
14757      $wrapperEl
14758    } = swiper;
14759    const {
14760      $el,
14761      $dragEl
14762    } = scrollbar;
14763    isTouched = true;
14764    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
14765    e.preventDefault();
14766    e.stopPropagation();
14767    $wrapperEl.transition(100);
14768    $dragEl.transition(100);
14769    setDragPosition(e);
14770    clearTimeout(dragTimeout);
14771    $el.transition(0);
14772
14773    if (params.hide) {
14774      $el.css('opacity', 1);
14775    }
14776
14777    if (swiper.params.cssMode) {
14778      swiper.$wrapperEl.css('scroll-snap-type', 'none');
14779    }
14780
14781    emit('scrollbarDragStart', e);
14782  }
14783
14784  function onDragMove(e) {
14785    const {
14786      scrollbar,
14787      $wrapperEl
14788    } = swiper;
14789    const {
14790      $el,
14791      $dragEl
14792    } = scrollbar;
14793    if (!isTouched) return;
14794    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
14795    setDragPosition(e);
14796    $wrapperEl.transition(0);
14797    $el.transition(0);
14798    $dragEl.transition(0);
14799    emit('scrollbarDragMove', e);
14800  }
14801
14802  function onDragEnd(e) {
14803    const params = swiper.params.scrollbar;
14804    const {
14805      scrollbar,
14806      $wrapperEl
14807    } = swiper;
14808    const {
14809      $el
14810    } = scrollbar;
14811    if (!isTouched) return;
14812    isTouched = false;
14813
14814    if (swiper.params.cssMode) {
14815      swiper.$wrapperEl.css('scroll-snap-type', '');
14816      $wrapperEl.transition('');
14817    }
14818
14819    if (params.hide) {
14820      clearTimeout(dragTimeout);
14821      dragTimeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(() => {
14822        $el.css('opacity', 0);
14823        $el.transition(400);
14824      }, 1000);
14825    }
14826
14827    emit('scrollbarDragEnd', e);
14828
14829    if (params.snapOnRelease) {
14830      swiper.slideToClosest();
14831    }
14832  }
14833
14834  function events(method) {
14835    const {
14836      scrollbar,
14837      touchEventsTouch,
14838      touchEventsDesktop,
14839      params,
14840      support
14841    } = swiper;
14842    const $el = scrollbar.$el;
14843    if (!$el) return;
14844    const target = $el[0];
14845    const activeListener = support.passiveListener && params.passiveListeners ? {
14846      passive: false,
14847      capture: false
14848    } : false;
14849    const passiveListener = support.passiveListener && params.passiveListeners ? {
14850      passive: true,
14851      capture: false
14852    } : false;
14853    if (!target) return;
14854    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
14855
14856    if (!support.touch) {
14857      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);
14858      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);
14859      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);
14860    } else {
14861      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);
14862      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);
14863      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);
14864    }
14865  }
14866
14867  function enableDraggable() {
14868    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
14869    events('on');
14870  }
14871
14872  function disableDraggable() {
14873    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
14874    events('off');
14875  }
14876
14877  function init() {
14878    const {
14879      scrollbar,
14880      $el: $swiperEl
14881    } = swiper;
14882    swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__["default"])(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
14883      el: 'swiper-scrollbar'
14884    });
14885    const params = swiper.params.scrollbar;
14886    if (!params.el) return;
14887    let $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el);
14888
14889    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
14890      $el = $swiperEl.find(params.el);
14891    }
14892
14893    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
14894    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
14895
14896    if ($dragEl.length === 0) {
14897      $dragEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
14898      $el.append($dragEl);
14899    }
14900
14901    Object.assign(scrollbar, {
14902      $el,
14903      el: $el[0],
14904      $dragEl,
14905      dragEl: $dragEl[0]
14906    });
14907
14908    if (params.draggable) {
14909      enableDraggable();
14910    }
14911
14912    if ($el) {
14913      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
14914    }
14915  }
14916
14917  function destroy() {
14918    const params = swiper.params.scrollbar;
14919    const $el = swiper.scrollbar.$el;
14920
14921    if ($el) {
14922      $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
14923    }
14924
14925    disableDraggable();
14926  }
14927
14928  on('init', () => {
14929    if (swiper.params.scrollbar.enabled === false) {
14930      // eslint-disable-next-line
14931      disable();
14932    } else {
14933      init();
14934      updateSize();
14935      setTranslate();
14936    }
14937  });
14938  on('update resize observerUpdate lock unlock', () => {
14939    updateSize();
14940  });
14941  on('setTranslate', () => {
14942    setTranslate();
14943  });
14944  on('setTransition', (_s, duration) => {
14945    setTransition(duration);
14946  });
14947  on('enable disable', () => {
14948    const {
14949      $el
14950    } = swiper.scrollbar;
14951
14952    if ($el) {
14953      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
14954    }
14955  });
14956  on('destroy', () => {
14957    destroy();
14958  });
14959
14960  const enable = () => {
14961    swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
14962
14963    if (swiper.scrollbar.$el) {
14964      swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
14965    }
14966
14967    init();
14968    updateSize();
14969    setTranslate();
14970  };
14971
14972  const disable = () => {
14973    swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
14974
14975    if (swiper.scrollbar.$el) {
14976      swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
14977    }
14978
14979    destroy();
14980  };
14981
14982  Object.assign(swiper.scrollbar, {
14983    enable,
14984    disable,
14985    updateSize,
14986    setTranslate,
14987    init,
14988    destroy
14989  });
14990}
14991
14992/***/ }),
14993
vendor: 8,529 bytes, lines 14994-15212
14994/***/ "./node_modules/swiper/modules/thumbs/thumbs.js":
14995/*!******************************************************!*\
14996  !*** ./node_modules/swiper/modules/thumbs/thumbs.js ***!
14997  \******************************************************/
14998/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14999
15000"use strict";
15001__webpack_require__.r(__webpack_exports__);
15002/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15003/* harmony export */   "default": function() { return /* binding */ Thumb; }
15004/* harmony export */ });
15005/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15006/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15007
15008
15009function Thumb({
15010  swiper,
15011  extendParams,
15012  on
15013}) {
15014  extendParams({
15015    thumbs: {
15016      swiper: null,
15017      multipleActiveThumbs: true,
15018      autoScrollOffset: 0,
15019      slideThumbActiveClass: 'swiper-slide-thumb-active',
15020      thumbsContainerClass: 'swiper-thumbs'
15021    }
15022  });
15023  let initialized = false;
15024  let swiperCreated = false;
15025  swiper.thumbs = {
15026    swiper: null
15027  };
15028
15029  function onThumbClick() {
15030    const thumbsSwiper = swiper.thumbs.swiper;
15031    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
15032    const clickedIndex = thumbsSwiper.clickedIndex;
15033    const clickedSlide = thumbsSwiper.clickedSlide;
15034    if (clickedSlide && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
15035    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
15036    let slideToIndex;
15037
15038    if (thumbsSwiper.params.loop) {
15039      slideToIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
15040    } else {
15041      slideToIndex = clickedIndex;
15042    }
15043
15044    if (swiper.params.loop) {
15045      let currentIndex = swiper.activeIndex;
15046
15047      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
15048        swiper.loopFix(); // eslint-disable-next-line
15049
15050        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
15051        currentIndex = swiper.activeIndex;
15052      }
15053
15054      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
15055      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
15056      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
15057    }
15058
15059    swiper.slideTo(slideToIndex);
15060  }
15061
15062  function init() {
15063    const {
15064      thumbs: thumbsParams
15065    } = swiper.params;
15066    if (initialized) return false;
15067    initialized = true;
15068    const SwiperClass = swiper.constructor;
15069
15070    if (thumbsParams.swiper instanceof SwiperClass) {
15071      swiper.thumbs.swiper = thumbsParams.swiper;
15072      Object.assign(swiper.thumbs.swiper.originalParams, {
15073        watchSlidesProgress: true,
15074        slideToClickedSlide: false
15075      });
15076      Object.assign(swiper.thumbs.swiper.params, {
15077        watchSlidesProgress: true,
15078        slideToClickedSlide: false
15079      });
15080    } else if ((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(thumbsParams.swiper)) {
15081      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
15082      Object.assign(thumbsSwiperParams, {
15083        watchSlidesProgress: true,
15084        slideToClickedSlide: false
15085      });
15086      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
15087      swiperCreated = true;
15088    }
15089
15090    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
15091    swiper.thumbs.swiper.on('tap', onThumbClick);
15092    return true;
15093  }
15094
15095  function update(initial) {
15096    const thumbsSwiper = swiper.thumbs.swiper;
15097    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
15098    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs
15099
15100    let thumbsToActivate = 1;
15101    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
15102
15103    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
15104      thumbsToActivate = swiper.params.slidesPerView;
15105    }
15106
15107    if (!swiper.params.thumbs.multipleActiveThumbs) {
15108      thumbsToActivate = 1;
15109    }
15110
15111    thumbsToActivate = Math.floor(thumbsToActivate);
15112    thumbsSwiper.slides.removeClass(thumbActiveClass);
15113
15114    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
15115      for (let i = 0; i < thumbsToActivate; i += 1) {
15116        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
15117      }
15118    } else {
15119      for (let i = 0; i < thumbsToActivate; i += 1) {
15120        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
15121      }
15122    }
15123
15124    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
15125    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
15126
15127    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
15128      let currentThumbsIndex = thumbsSwiper.activeIndex;
15129      let newThumbsIndex;
15130      let direction;
15131
15132      if (thumbsSwiper.params.loop) {
15133        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
15134          thumbsSwiper.loopFix(); // eslint-disable-next-line
15135
15136          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
15137          currentThumbsIndex = thumbsSwiper.activeIndex;
15138        } // Find actual thumbs index to slide to
15139
15140
15141        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index();
15142        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index();
15143
15144        if (typeof prevThumbsIndex === 'undefined') {
15145          newThumbsIndex = nextThumbsIndex;
15146        } else if (typeof nextThumbsIndex === 'undefined') {
15147          newThumbsIndex = prevThumbsIndex;
15148        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {
15149          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;
15150        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {
15151          newThumbsIndex = nextThumbsIndex;
15152        } else {
15153          newThumbsIndex = prevThumbsIndex;
15154        }
15155
15156        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
15157      } else {
15158        newThumbsIndex = swiper.realIndex;
15159        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
15160      }
15161
15162      if (useOffset) {
15163        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
15164      }
15165
15166      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
15167        if (thumbsSwiper.params.centeredSlides) {
15168          if (newThumbsIndex > currentThumbsIndex) {
15169            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
15170          } else {
15171            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
15172          }
15173        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;
15174        }
15175
15176        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
15177      }
15178    }
15179  }
15180
15181  on('beforeInit', () => {
15182    const {
15183      thumbs
15184    } = swiper.params;
15185    if (!thumbs || !thumbs.swiper) return;
15186    init();
15187    update(true);
15188  });
15189  on('slideChange update resize observerUpdate', () => {
15190    update();
15191  });
15192  on('setTransition', (_s, duration) => {
15193    const thumbsSwiper = swiper.thumbs.swiper;
15194    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
15195    thumbsSwiper.setTransition(duration);
15196  });
15197  on('beforeDestroy', () => {
15198    const thumbsSwiper = swiper.thumbs.swiper;
15199    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
15200
15201    if (swiperCreated) {
15202      thumbsSwiper.destroy();
15203    }
15204  });
15205  Object.assign(swiper.thumbs, {
15206    init,
15207    update
15208  });
15209}
15210
15211/***/ }),
15212
vendor: 9,089 bytes, lines 15213-15525
15213/***/ "./node_modules/swiper/modules/virtual/virtual.js":
15214/*!********************************************************!*\
15215  !*** ./node_modules/swiper/modules/virtual/virtual.js ***!
15216  \********************************************************/
15217/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15218
15219"use strict";
15220__webpack_require__.r(__webpack_exports__);
15221/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15222/* harmony export */   "default": function() { return /* binding */ Virtual; }
15223/* harmony export */ });
15224/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15225/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15226
15227
15228function Virtual({
15229  swiper,
15230  extendParams,
15231  on,
15232  emit
15233}) {
15234  extendParams({
15235    virtual: {
15236      enabled: false,
15237      slides: [],
15238      cache: true,
15239      renderSlide: null,
15240      renderExternal: null,
15241      renderExternalUpdate: true,
15242      addSlidesBefore: 0,
15243      addSlidesAfter: 0
15244    }
15245  });
15246  let cssModeTimeout;
15247  swiper.virtual = {
15248    cache: {},
15249    from: undefined,
15250    to: undefined,
15251    slides: [],
15252    offset: 0,
15253    slidesGrid: []
15254  };
15255
15256  function renderSlide(slide, index) {
15257    const params = swiper.params.virtual;
15258
15259    if (params.cache && swiper.virtual.cache[index]) {
15260      return swiper.virtual.cache[index];
15261    }
15262
15263    const $slideEl = params.renderSlide ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.renderSlide.call(swiper, slide, index)) : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
15264    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
15265    if (params.cache) swiper.virtual.cache[index] = $slideEl;
15266    return $slideEl;
15267  }
15268
15269  function update(force) {
15270    const {
15271      slidesPerView,
15272      slidesPerGroup,
15273      centeredSlides
15274    } = swiper.params;
15275    const {
15276      addSlidesBefore,
15277      addSlidesAfter
15278    } = swiper.params.virtual;
15279    const {
15280      from: previousFrom,
15281      to: previousTo,
15282      slides,
15283      slidesGrid: previousSlidesGrid,
15284      offset: previousOffset
15285    } = swiper.virtual;
15286
15287    if (!swiper.params.cssMode) {
15288      swiper.updateActiveIndex();
15289    }
15290
15291    const activeIndex = swiper.activeIndex || 0;
15292    let offsetProp;
15293    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
15294    let slidesAfter;
15295    let slidesBefore;
15296
15297    if (centeredSlides) {
15298      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
15299      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
15300    } else {
15301      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
15302      slidesBefore = slidesPerGroup + addSlidesBefore;
15303    }
15304
15305    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
15306    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
15307    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
15308    Object.assign(swiper.virtual, {
15309      from,
15310      to,
15311      offset,
15312      slidesGrid: swiper.slidesGrid
15313    });
15314
15315    function onRendered() {
15316      swiper.updateSlides();
15317      swiper.updateProgress();
15318      swiper.updateSlidesClasses();
15319
15320      if (swiper.lazy && swiper.params.lazy.enabled) {
15321        swiper.lazy.load();
15322      }
15323
15324      emit('virtualUpdate');
15325    }
15326
15327    if (previousFrom === from && previousTo === to && !force) {
15328      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
15329        swiper.slides.css(offsetProp, `${offset}px`);
15330      }
15331
15332      swiper.updateProgress();
15333      emit('virtualUpdate');
15334      return;
15335    }
15336
15337    if (swiper.params.virtual.renderExternal) {
15338      swiper.params.virtual.renderExternal.call(swiper, {
15339        offset,
15340        from,
15341        to,
15342        slides: function getSlides() {
15343          const slidesToRender = [];
15344
15345          for (let i = from; i <= to; i += 1) {
15346            slidesToRender.push(slides[i]);
15347          }
15348
15349          return slidesToRender;
15350        }()
15351      });
15352
15353      if (swiper.params.virtual.renderExternalUpdate) {
15354        onRendered();
15355      } else {
15356        emit('virtualUpdate');
15357      }
15358
15359      return;
15360    }
15361
15362    const prependIndexes = [];
15363    const appendIndexes = [];
15364
15365    if (force) {
15366      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
15367    } else {
15368      for (let i = previousFrom; i <= previousTo; i += 1) {
15369        if (i < from || i > to) {
15370          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
15371        }
15372      }
15373    }
15374
15375    for (let i = 0; i < slides.length; i += 1) {
15376      if (i >= from && i <= to) {
15377        if (typeof previousTo === 'undefined' || force) {
15378          appendIndexes.push(i);
15379        } else {
15380          if (i > previousTo) appendIndexes.push(i);
15381          if (i < previousFrom) prependIndexes.push(i);
15382        }
15383      }
15384    }
15385
15386    appendIndexes.forEach(index => {
15387      swiper.$wrapperEl.append(renderSlide(slides[index], index));
15388    });
15389    prependIndexes.sort((a, b) => b - a).forEach(index => {
15390      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
15391    });
15392    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
15393    onRendered();
15394  }
15395
15396  function appendSlide(slides) {
15397    if (typeof slides === 'object' && 'length' in slides) {
15398      for (let i = 0; i < slides.length; i += 1) {
15399        if (slides[i]) swiper.virtual.slides.push(slides[i]);
15400      }
15401    } else {
15402      swiper.virtual.slides.push(slides);
15403    }
15404
15405    update(true);
15406  }
15407
15408  function prependSlide(slides) {
15409    const activeIndex = swiper.activeIndex;
15410    let newActiveIndex = activeIndex + 1;
15411    let numberOfNewSlides = 1;
15412
15413    if (Array.isArray(slides)) {
15414      for (let i = 0; i < slides.length; i += 1) {
15415        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
15416      }
15417
15418      newActiveIndex = activeIndex + slides.length;
15419      numberOfNewSlides = slides.length;
15420    } else {
15421      swiper.virtual.slides.unshift(slides);
15422    }
15423
15424    if (swiper.params.virtual.cache) {
15425      const cache = swiper.virtual.cache;
15426      const newCache = {};
15427      Object.keys(cache).forEach(cachedIndex => {
15428        const $cachedEl = cache[cachedIndex];
15429        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
15430
15431        if (cachedElIndex) {
15432          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
15433        }
15434
15435        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
15436      });
15437      swiper.virtual.cache = newCache;
15438    }
15439
15440    update(true);
15441    swiper.slideTo(newActiveIndex, 0);
15442  }
15443
15444  function removeSlide(slidesIndexes) {
15445    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
15446    let activeIndex = swiper.activeIndex;
15447
15448    if (Array.isArray(slidesIndexes)) {
15449      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
15450        swiper.virtual.slides.splice(slidesIndexes[i], 1);
15451
15452        if (swiper.params.virtual.cache) {
15453          delete swiper.virtual.cache[slidesIndexes[i]];
15454        }
15455
15456        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
15457        activeIndex = Math.max(activeIndex, 0);
15458      }
15459    } else {
15460      swiper.virtual.slides.splice(slidesIndexes, 1);
15461
15462      if (swiper.params.virtual.cache) {
15463        delete swiper.virtual.cache[slidesIndexes];
15464      }
15465
15466      if (slidesIndexes < activeIndex) activeIndex -= 1;
15467      activeIndex = Math.max(activeIndex, 0);
15468    }
15469
15470    update(true);
15471    swiper.slideTo(activeIndex, 0);
15472  }
15473
15474  function removeAllSlides() {
15475    swiper.virtual.slides = [];
15476
15477    if (swiper.params.virtual.cache) {
15478      swiper.virtual.cache = {};
15479    }
15480
15481    update(true);
15482    swiper.slideTo(0, 0);
15483  }
15484
15485  on('beforeInit', () => {
15486    if (!swiper.params.virtual.enabled) return;
15487    swiper.virtual.slides = swiper.params.virtual.slides;
15488    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
15489    swiper.params.watchSlidesProgress = true;
15490    swiper.originalParams.watchSlidesProgress = true;
15491
15492    if (!swiper.params.initialSlide) {
15493      update();
15494    }
15495  });
15496  on('setTranslate', () => {
15497    if (!swiper.params.virtual.enabled) return;
15498
15499    if (swiper.params.cssMode && !swiper._immediateVirtual) {
15500      clearTimeout(cssModeTimeout);
15501      cssModeTimeout = setTimeout(() => {
15502        update();
15503      }, 100);
15504    } else {
15505      update();
15506    }
15507  });
15508  on('init update resize', () => {
15509    if (!swiper.params.virtual.enabled) return;
15510
15511    if (swiper.params.cssMode) {
15512      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.setCSSProperty)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
15513    }
15514  });
15515  Object.assign(swiper.virtual, {
15516    appendSlide,
15517    prependSlide,
15518    removeSlide,
15519    removeAllSlides,
15520    update
15521  });
15522}
15523
15524/***/ }),
15525
vendor: 21,682 bytes, lines 15526-16154
15526/***/ "./node_modules/swiper/modules/zoom/zoom.js":
15527/*!**************************************************!*\
15528  !*** ./node_modules/swiper/modules/zoom/zoom.js ***!
15529  \**************************************************/
15530/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15531
15532"use strict";
15533__webpack_require__.r(__webpack_exports__);
15534/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15535/* harmony export */   "default": function() { return /* binding */ Zoom; }
15536/* harmony export */ });
15537/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
15538/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15539/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15540
15541
15542
15543function Zoom({
15544  swiper,
15545  extendParams,
15546  on,
15547  emit
15548}) {
15549  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
15550  extendParams({
15551    zoom: {
15552      enabled: false,
15553      maxRatio: 3,
15554      minRatio: 1,
15555      toggle: true,
15556      containerClass: 'swiper-zoom-container',
15557      zoomedSlideClass: 'swiper-slide-zoomed'
15558    }
15559  });
15560  swiper.zoom = {
15561    enabled: false
15562  };
15563  let currentScale = 1;
15564  let isScaling = false;
15565  let gesturesEnabled;
15566  let fakeGestureTouched;
15567  let fakeGestureMoved;
15568  const gesture = {
15569    $slideEl: undefined,
15570    slideWidth: undefined,
15571    slideHeight: undefined,
15572    $imageEl: undefined,
15573    $imageWrapEl: undefined,
15574    maxRatio: 3
15575  };
15576  const image = {
15577    isTouched: undefined,
15578    isMoved: undefined,
15579    currentX: undefined,
15580    currentY: undefined,
15581    minX: undefined,
15582    minY: undefined,
15583    maxX: undefined,
15584    maxY: undefined,
15585    width: undefined,
15586    height: undefined,
15587    startX: undefined,
15588    startY: undefined,
15589    touchesStart: {},
15590    touchesCurrent: {}
15591  };
15592  const velocity = {
15593    x: undefined,
15594    y: undefined,
15595    prevPositionX: undefined,
15596    prevPositionY: undefined,
15597    prevTime: undefined
15598  };
15599  let scale = 1;
15600  Object.defineProperty(swiper.zoom, 'scale', {
15601    get() {
15602      return scale;
15603    },
15604
15605    set(value) {
15606      if (scale !== value) {
15607        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;
15608        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;
15609        emit('zoomChange', value, imageEl, slideEl);
15610      }
15611
15612      scale = value;
15613    }
15614
15615  });
15616
15617  function getDistanceBetweenTouches(e) {
15618    if (e.targetTouches.length < 2) return 1;
15619    const x1 = e.targetTouches[0].pageX;
15620    const y1 = e.targetTouches[0].pageY;
15621    const x2 = e.targetTouches[1].pageX;
15622    const y2 = e.targetTouches[1].pageY;
15623    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
15624    return distance;
15625  } // Events
15626
15627
15628  function onGestureStart(e) {
15629    const support = swiper.support;
15630    const params = swiper.params.zoom;
15631    fakeGestureTouched = false;
15632    fakeGestureMoved = false;
15633
15634    if (!support.gestures) {
15635      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
15636        return;
15637      }
15638
15639      fakeGestureTouched = true;
15640      gesture.scaleStart = getDistanceBetweenTouches(e);
15641    }
15642
15643    if (!gesture.$slideEl || !gesture.$slideEl.length) {
15644      gesture.$slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(`.${swiper.params.slideClass}`);
15645      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
15646      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
15647      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
15648      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
15649
15650      if (gesture.$imageWrapEl.length === 0) {
15651        gesture.$imageEl = undefined;
15652        return;
15653      }
15654    }
15655
15656    if (gesture.$imageEl) {
15657      gesture.$imageEl.transition(0);
15658    }
15659
15660    isScaling = true;
15661  }
15662
15663  function onGestureChange(e) {
15664    const support = swiper.support;
15665    const params = swiper.params.zoom;
15666    const zoom = swiper.zoom;
15667
15668    if (!support.gestures) {
15669      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
15670        return;
15671      }
15672
15673      fakeGestureMoved = true;
15674      gesture.scaleMove = getDistanceBetweenTouches(e);
15675    }
15676
15677    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
15678      if (e.type === 'gesturechange') onGestureStart(e);
15679      return;
15680    }
15681
15682    if (support.gestures) {
15683      zoom.scale = e.scale * currentScale;
15684    } else {
15685      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
15686    }
15687
15688    if (zoom.scale > gesture.maxRatio) {
15689      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
15690    }
15691
15692    if (zoom.scale < params.minRatio) {
15693      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
15694    }
15695
15696    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
15697  }
15698
15699  function onGestureEnd(e) {
15700    const device = swiper.device;
15701    const support = swiper.support;
15702    const params = swiper.params.zoom;
15703    const zoom = swiper.zoom;
15704
15705    if (!support.gestures) {
15706      if (!fakeGestureTouched || !fakeGestureMoved) {
15707        return;
15708      }
15709
15710      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
15711        return;
15712      }
15713
15714      fakeGestureTouched = false;
15715      fakeGestureMoved = false;
15716    }
15717
15718    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
15719    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
15720    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
15721    currentScale = zoom.scale;
15722    isScaling = false;
15723    if (zoom.scale === 1) gesture.$slideEl = undefined;
15724  }
15725
15726  function onTouchStart(e) {
15727    const device = swiper.device;
15728    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
15729    if (image.isTouched) return;
15730    if (device.android && e.cancelable) e.preventDefault();
15731    image.isTouched = true;
15732    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
15733    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
15734  }
15735
15736  function onTouchMove(e) {
15737    const zoom = swiper.zoom;
15738    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
15739    swiper.allowClick = false;
15740    if (!image.isTouched || !gesture.$slideEl) return;
15741
15742    if (!image.isMoved) {
15743      image.width = gesture.$imageEl[0].offsetWidth;
15744      image.height = gesture.$imageEl[0].offsetHeight;
15745      image.startX = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.getTranslate)(gesture.$imageWrapEl[0], 'x') || 0;
15746      image.startY = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.getTranslate)(gesture.$imageWrapEl[0], 'y') || 0;
15747      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
15748      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
15749      gesture.$imageWrapEl.transition(0);
15750    } // Define if we need image drag
15751
15752
15753    const scaledWidth = image.width * zoom.scale;
15754    const scaledHeight = image.height * zoom.scale;
15755    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
15756    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
15757    image.maxX = -image.minX;
15758    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
15759    image.maxY = -image.minY;
15760    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
15761    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
15762
15763    if (!image.isMoved && !isScaling) {
15764      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)) {
15765        image.isTouched = false;
15766        return;
15767      }
15768
15769      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)) {
15770        image.isTouched = false;
15771        return;
15772      }
15773    }
15774
15775    if (e.cancelable) {
15776      e.preventDefault();
15777    }
15778
15779    e.stopPropagation();
15780    image.isMoved = true;
15781    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
15782    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
15783
15784    if (image.currentX < image.minX) {
15785      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
15786    }
15787
15788    if (image.currentX > image.maxX) {
15789      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
15790    }
15791
15792    if (image.currentY < image.minY) {
15793      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
15794    }
15795
15796    if (image.currentY > image.maxY) {
15797      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
15798    } // Velocity
15799
15800
15801    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
15802    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
15803    if (!velocity.prevTime) velocity.prevTime = Date.now();
15804    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
15805    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
15806    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
15807    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
15808    velocity.prevPositionX = image.touchesCurrent.x;
15809    velocity.prevPositionY = image.touchesCurrent.y;
15810    velocity.prevTime = Date.now();
15811    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
15812  }
15813
15814  function onTouchEnd() {
15815    const zoom = swiper.zoom;
15816    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
15817
15818    if (!image.isTouched || !image.isMoved) {
15819      image.isTouched = false;
15820      image.isMoved = false;
15821      return;
15822    }
15823
15824    image.isTouched = false;
15825    image.isMoved = false;
15826    let momentumDurationX = 300;
15827    let momentumDurationY = 300;
15828    const momentumDistanceX = velocity.x * momentumDurationX;
15829    const newPositionX = image.currentX + momentumDistanceX;
15830    const momentumDistanceY = velocity.y * momentumDurationY;
15831    const newPositionY = image.currentY + momentumDistanceY; // Fix duration
15832
15833    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
15834    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
15835    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
15836    image.currentX = newPositionX;
15837    image.currentY = newPositionY; // Define if we need image drag
15838
15839    const scaledWidth = image.width * zoom.scale;
15840    const scaledHeight = image.height * zoom.scale;
15841    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
15842    image.maxX = -image.minX;
15843    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
15844    image.maxY = -image.minY;
15845    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
15846    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
15847    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
15848  }
15849
15850  function onTransitionEnd() {
15851    const zoom = swiper.zoom;
15852
15853    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
15854      if (gesture.$imageEl) {
15855        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
15856      }
15857
15858      if (gesture.$imageWrapEl) {
15859        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
15860      }
15861
15862      zoom.scale = 1;
15863      currentScale = 1;
15864      gesture.$slideEl = undefined;
15865      gesture.$imageEl = undefined;
15866      gesture.$imageWrapEl = undefined;
15867    }
15868  }
15869
15870  function zoomIn(e) {
15871    const zoom = swiper.zoom;
15872    const params = swiper.params.zoom;
15873
15874    if (!gesture.$slideEl) {
15875      if (e && e.target) {
15876        gesture.$slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(`.${swiper.params.slideClass}`);
15877      }
15878
15879      if (!gesture.$slideEl) {
15880        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
15881          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
15882        } else {
15883          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
15884        }
15885      }
15886
15887      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
15888      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
15889    }
15890
15891    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
15892
15893    if (swiper.params.cssMode) {
15894      swiper.wrapperEl.style.overflow = 'hidden';
15895      swiper.wrapperEl.style.touchAction = 'none';
15896    }
15897
15898    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
15899    let touchX;
15900    let touchY;
15901    let offsetX;
15902    let offsetY;
15903    let diffX;
15904    let diffY;
15905    let translateX;
15906    let translateY;
15907    let imageWidth;
15908    let imageHeight;
15909    let scaledWidth;
15910    let scaledHeight;
15911    let translateMinX;
15912    let translateMinY;
15913    let translateMaxX;
15914    let translateMaxY;
15915    let slideWidth;
15916    let slideHeight;
15917
15918    if (typeof image.touchesStart.x === 'undefined' && e) {
15919      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
15920      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
15921    } else {
15922      touchX = image.touchesStart.x;
15923      touchY = image.touchesStart.y;
15924    }
15925
15926    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
15927    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
15928
15929    if (e) {
15930      slideWidth = gesture.$slideEl[0].offsetWidth;
15931      slideHeight = gesture.$slideEl[0].offsetHeight;
15932      offsetX = gesture.$slideEl.offset().left + window.scrollX;
15933      offsetY = gesture.$slideEl.offset().top + window.scrollY;
15934      diffX = offsetX + slideWidth / 2 - touchX;
15935      diffY = offsetY + slideHeight / 2 - touchY;
15936      imageWidth = gesture.$imageEl[0].offsetWidth;
15937      imageHeight = gesture.$imageEl[0].offsetHeight;
15938      scaledWidth = imageWidth * zoom.scale;
15939      scaledHeight = imageHeight * zoom.scale;
15940      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
15941      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
15942      translateMaxX = -translateMinX;
15943      translateMaxY = -translateMinY;
15944      translateX = diffX * zoom.scale;
15945      translateY = diffY * zoom.scale;
15946
15947      if (translateX < translateMinX) {
15948        translateX = translateMinX;
15949      }
15950
15951      if (translateX > translateMaxX) {
15952        translateX = translateMaxX;
15953      }
15954
15955      if (translateY < translateMinY) {
15956        translateY = translateMinY;
15957      }
15958
15959      if (translateY > translateMaxY) {
15960        translateY = translateMaxY;
15961      }
15962    } else {
15963      translateX = 0;
15964      translateY = 0;
15965    }
15966
15967    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
15968    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
15969  }
15970
15971  function zoomOut() {
15972    const zoom = swiper.zoom;
15973    const params = swiper.params.zoom;
15974
15975    if (!gesture.$slideEl) {
15976      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
15977        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
15978      } else {
15979        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
15980      }
15981
15982      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
15983      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
15984    }
15985
15986    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
15987
15988    if (swiper.params.cssMode) {
15989      swiper.wrapperEl.style.overflow = '';
15990      swiper.wrapperEl.style.touchAction = '';
15991    }
15992
15993    zoom.scale = 1;
15994    currentScale = 1;
15995    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
15996    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
15997    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
15998    gesture.$slideEl = undefined;
15999  } // Toggle Zoom
16000
16001
16002  function zoomToggle(e) {
16003    const zoom = swiper.zoom;
16004
16005    if (zoom.scale && zoom.scale !== 1) {
16006      // Zoom Out
16007      zoomOut();
16008    } else {
16009      // Zoom In
16010      zoomIn(e);
16011    }
16012  }
16013
16014  function getListeners() {
16015    const support = swiper.support;
16016    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
16017      passive: true,
16018      capture: false
16019    } : false;
16020    const activeListenerWithCapture = support.passiveListener ? {
16021      passive: false,
16022      capture: true
16023    } : true;
16024    return {
16025      passiveListener,
16026      activeListenerWithCapture
16027    };
16028  }
16029
16030  function getSlideSelector() {
16031    return `.${swiper.params.slideClass}`;
16032  }
16033
16034  function toggleGestures(method) {
16035    const {
16036      passiveListener
16037    } = getListeners();
16038    const slideSelector = getSlideSelector();
16039    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);
16040    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);
16041    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);
16042  }
16043
16044  function enableGestures() {
16045    if (gesturesEnabled) return;
16046    gesturesEnabled = true;
16047    toggleGestures('on');
16048  }
16049
16050  function disableGestures() {
16051    if (!gesturesEnabled) return;
16052    gesturesEnabled = false;
16053    toggleGestures('off');
16054  } // Attach/Detach Events
16055
16056
16057  function enable() {
16058    const zoom = swiper.zoom;
16059    if (zoom.enabled) return;
16060    zoom.enabled = true;
16061    const support = swiper.support;
16062    const {
16063      passiveListener,
16064      activeListenerWithCapture
16065    } = getListeners();
16066    const slideSelector = getSlideSelector(); // Scale image
16067
16068    if (support.gestures) {
16069      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);
16070      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);
16071    } else if (swiper.touchEvents.start === 'touchstart') {
16072      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
16073      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
16074      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
16075
16076      if (swiper.touchEvents.cancel) {
16077        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
16078      }
16079    } // Move image
16080
16081
16082    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);
16083  }
16084
16085  function disable() {
16086    const zoom = swiper.zoom;
16087    if (!zoom.enabled) return;
16088    const support = swiper.support;
16089    zoom.enabled = false;
16090    const {
16091      passiveListener,
16092      activeListenerWithCapture
16093    } = getListeners();
16094    const slideSelector = getSlideSelector(); // Scale image
16095
16096    if (support.gestures) {
16097      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);
16098      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);
16099    } else if (swiper.touchEvents.start === 'touchstart') {
16100      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
16101      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
16102      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
16103
16104      if (swiper.touchEvents.cancel) {
16105        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
16106      }
16107    } // Move image
16108
16109
16110    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);
16111  }
16112
16113  on('init', () => {
16114    if (swiper.params.zoom.enabled) {
16115      enable();
16116    }
16117  });
16118  on('destroy', () => {
16119    disable();
16120  });
16121  on('touchStart', (_s, e) => {
16122    if (!swiper.zoom.enabled) return;
16123    onTouchStart(e);
16124  });
16125  on('touchEnd', (_s, e) => {
16126    if (!swiper.zoom.enabled) return;
16127    onTouchEnd(e);
16128  });
16129  on('doubleTap', (_s, e) => {
16130    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
16131      zoomToggle(e);
16132    }
16133  });
16134  on('transitionEnd', () => {
16135    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
16136      onTransitionEnd();
16137    }
16138  });
16139  on('slideChange', () => {
16140    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
16141      onTransitionEnd();
16142    }
16143  });
16144  Object.assign(swiper.zoom, {
16145    enable,
16146    disable,
16147    in: zoomIn,
16148    out: zoomOut,
16149    toggle: zoomToggle
16150  });
16151}
16152
16153/***/ }),
16154
vendor: 755 bytes, lines 16155-16172
16155/***/ "./node_modules/swiper/shared/classes-to-selector.js":
16156/*!***********************************************************!*\
16157  !*** ./node_modules/swiper/shared/classes-to-selector.js ***!
16158  \***********************************************************/
16159/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16160
16161"use strict";
16162__webpack_require__.r(__webpack_exports__);
16163/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16164/* harmony export */   "default": function() { return /* binding */ classesToSelector; }
16165/* harmony export */ });
16166function classesToSelector(classes = '') {
16167  return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line
16168  .replace(/ /g, '.')}`;
16169}
16170
16171/***/ }),
16172
vendor: 1,449 bytes, lines 16173-16210
16173/***/ "./node_modules/swiper/shared/create-element-if-not-defined.js":
16174/*!*********************************************************************!*\
16175  !*** ./node_modules/swiper/shared/create-element-if-not-defined.js ***!
16176  \*********************************************************************/
16177/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16178
16179"use strict";
16180__webpack_require__.r(__webpack_exports__);
16181/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16182/* harmony export */   "default": function() { return /* binding */ createElementIfNotDefined; }
16183/* harmony export */ });
16184/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
16185
16186function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
16187  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
16188
16189  if (swiper.params.createElements) {
16190    Object.keys(checkProps).forEach(key => {
16191      if (!params[key] && params.auto === true) {
16192        let element = swiper.$el.children(`.${checkProps[key]}`)[0];
16193
16194        if (!element) {
16195          element = document.createElement('div');
16196          element.className = checkProps[key];
16197          swiper.$el.append(element);
16198        }
16199
16200        params[key] = element;
16201        originalParams[key] = element;
16202      }
16203    });
16204  }
16205
16206  return params;
16207}
16208
16209/***/ }),
16210
vendor: 1,223 bytes, lines 16211-16238
16211/***/ "./node_modules/swiper/shared/create-shadow.js":
16212/*!*****************************************************!*\
16213  !*** ./node_modules/swiper/shared/create-shadow.js ***!
16214  \*****************************************************/
16215/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16216
16217"use strict";
16218__webpack_require__.r(__webpack_exports__);
16219/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16220/* harmony export */   "default": function() { return /* binding */ createShadow; }
16221/* harmony export */ });
16222/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ "./node_modules/swiper/shared/dom.js");
16223
16224function createShadow(params, $slideEl, side) {
16225  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;
16226  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;
16227  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);
16228
16229  if (!$shadowEl.length) {
16230    $shadowEl = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow${side ? `-${side}` : ''}"></div>`);
16231    $shadowContainer.append($shadowEl);
16232  }
16233
16234  return $shadowEl;
16235}
16236
16237/***/ }),
16238
vendor: 2,698 bytes, lines 16239-16296
16239/***/ "./node_modules/swiper/shared/dom.js":
16240/*!*******************************************!*\
16241  !*** ./node_modules/swiper/shared/dom.js ***!
16242  \*******************************************/
16243/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16244
16245"use strict";
16246__webpack_require__.r(__webpack_exports__);
16247/* harmony import */ var dom7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dom7 */ "./node_modules/dom7/dom7.esm.js");
16248
16249const Methods = {
16250  addClass: dom7__WEBPACK_IMPORTED_MODULE_0__.addClass,
16251  removeClass: dom7__WEBPACK_IMPORTED_MODULE_0__.removeClass,
16252  hasClass: dom7__WEBPACK_IMPORTED_MODULE_0__.hasClass,
16253  toggleClass: dom7__WEBPACK_IMPORTED_MODULE_0__.toggleClass,
16254  attr: dom7__WEBPACK_IMPORTED_MODULE_0__.attr,
16255  removeAttr: dom7__WEBPACK_IMPORTED_MODULE_0__.removeAttr,
16256  transform: dom7__WEBPACK_IMPORTED_MODULE_0__.transform,
16257  transition: dom7__WEBPACK_IMPORTED_MODULE_0__.transition,
16258  on: dom7__WEBPACK_IMPORTED_MODULE_0__.on,
16259  off: dom7__WEBPACK_IMPORTED_MODULE_0__.off,
16260  trigger: dom7__WEBPACK_IMPORTED_MODULE_0__.trigger,
16261  transitionEnd: dom7__WEBPACK_IMPORTED_MODULE_0__.transitionEnd,
16262  outerWidth: dom7__WEBPACK_IMPORTED_MODULE_0__.outerWidth,
16263  outerHeight: dom7__WEBPACK_IMPORTED_MODULE_0__.outerHeight,
16264  styles: dom7__WEBPACK_IMPORTED_MODULE_0__.styles,
16265  offset: dom7__WEBPACK_IMPORTED_MODULE_0__.offset,
16266  css: dom7__WEBPACK_IMPORTED_MODULE_0__.css,
16267  each: dom7__WEBPACK_IMPORTED_MODULE_0__.each,
16268  html: dom7__WEBPACK_IMPORTED_MODULE_0__.html,
16269  text: dom7__WEBPACK_IMPORTED_MODULE_0__.text,
16270  is: dom7__WEBPACK_IMPORTED_MODULE_0__.is,
16271  index: dom7__WEBPACK_IMPORTED_MODULE_0__.index,
16272  eq: dom7__WEBPACK_IMPORTED_MODULE_0__.eq,
16273  append: dom7__WEBPACK_IMPORTED_MODULE_0__.append,
16274  prepend: dom7__WEBPACK_IMPORTED_MODULE_0__.prepend,
16275  next: dom7__WEBPACK_IMPORTED_MODULE_0__.next,
16276  nextAll: dom7__WEBPACK_IMPORTED_MODULE_0__.nextAll,
16277  prev: dom7__WEBPACK_IMPORTED_MODULE_0__.prev,
16278  prevAll: dom7__WEBPACK_IMPORTED_MODULE_0__.prevAll,
16279  parent: dom7__WEBPACK_IMPORTED_MODULE_0__.parent,
16280  parents: dom7__WEBPACK_IMPORTED_MODULE_0__.parents,
16281  closest: dom7__WEBPACK_IMPORTED_MODULE_0__.closest,
16282  find: dom7__WEBPACK_IMPORTED_MODULE_0__.find,
16283  children: dom7__WEBPACK_IMPORTED_MODULE_0__.children,
16284  filter: dom7__WEBPACK_IMPORTED_MODULE_0__.filter,
16285  remove: dom7__WEBPACK_IMPORTED_MODULE_0__.remove
16286};
16287Object.keys(Methods).forEach(methodName => {
16288  Object.defineProperty(dom7__WEBPACK_IMPORTED_MODULE_0__.$.fn, methodName, {
16289    value: Methods[methodName],
16290    writable: true
16291  });
16292});
16293/* harmony default export */ __webpack_exports__["default"] = (dom7__WEBPACK_IMPORTED_MODULE_0__.$);
16294
16295/***/ }),
16296
vendor: 2,354 bytes, lines 16297-16372
16297/***/ "./node_modules/swiper/shared/effect-init.js":
16298/*!***************************************************!*\
16299  !*** ./node_modules/swiper/shared/effect-init.js ***!
16300  \***************************************************/
16301/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16302
16303"use strict";
16304__webpack_require__.r(__webpack_exports__);
16305/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16306/* harmony export */   "default": function() { return /* binding */ effectInit; }
16307/* harmony export */ });
16308function effectInit(params) {
16309  const {
16310    effect,
16311    swiper,
16312    on,
16313    setTranslate,
16314    setTransition,
16315    overwriteParams,
16316    perspective,
16317    recreateShadows,
16318    getEffectParams
16319  } = params;
16320  on('beforeInit', () => {
16321    if (swiper.params.effect !== effect) return;
16322    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
16323
16324    if (perspective && perspective()) {
16325      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
16326    }
16327
16328    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
16329    Object.assign(swiper.params, overwriteParamsResult);
16330    Object.assign(swiper.originalParams, overwriteParamsResult);
16331  });
16332  on('setTranslate', () => {
16333    if (swiper.params.effect !== effect) return;
16334    setTranslate();
16335  });
16336  on('setTransition', (_s, duration) => {
16337    if (swiper.params.effect !== effect) return;
16338    setTransition(duration);
16339  });
16340  on('transitionEnd', () => {
16341    if (swiper.params.effect !== effect) return;
16342
16343    if (recreateShadows) {
16344      if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows
16345
16346      swiper.slides.each(slideEl => {
16347        const $slideEl = swiper.$(slideEl);
16348        $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();
16349      }); // create new one
16350
16351      recreateShadows();
16352    }
16353  });
16354  let requireUpdateOnVirtual;
16355  on('virtualUpdate', () => {
16356    if (swiper.params.effect !== effect) return;
16357
16358    if (!swiper.slides.length) {
16359      requireUpdateOnVirtual = true;
16360    }
16361
16362    requestAnimationFrame(() => {
16363      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
16364        setTranslate();
16365        requireUpdateOnVirtual = false;
16366      }
16367    });
16368  });
16369}
16370
16371/***/ }),
16372
vendor: 832 bytes, lines 16373-16396
16373/***/ "./node_modules/swiper/shared/effect-target.js":
16374/*!*****************************************************!*\
16375  !*** ./node_modules/swiper/shared/effect-target.js ***!
16376  \*****************************************************/
16377/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16378
16379"use strict";
16380__webpack_require__.r(__webpack_exports__);
16381/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16382/* harmony export */   "default": function() { return /* binding */ effectTarget; }
16383/* harmony export */ });
16384function effectTarget(effectParams, $slideEl) {
16385  if (effectParams.transformEl) {
16386    return $slideEl.find(effectParams.transformEl).css({
16387      'backface-visibility': 'hidden',
16388      '-webkit-backface-visibility': 'hidden'
16389    });
16390  }
16391
16392  return $slideEl;
16393}
16394
16395/***/ }),
16396
vendor: 1,549 bytes, lines 16397-16445
16397/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.js":
16398/*!*********************************************************************!*\
16399  !*** ./node_modules/swiper/shared/effect-virtual-transition-end.js ***!
16400  \*********************************************************************/
16401/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16402
16403"use strict";
16404__webpack_require__.r(__webpack_exports__);
16405/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16406/* harmony export */   "default": function() { return /* binding */ effectVirtualTransitionEnd; }
16407/* harmony export */ });
16408function effectVirtualTransitionEnd({
16409  swiper,
16410  duration,
16411  transformEl,
16412  allSlides
16413}) {
16414  const {
16415    slides,
16416    activeIndex,
16417    $wrapperEl
16418  } = swiper;
16419
16420  if (swiper.params.virtualTranslate && duration !== 0) {
16421    let eventTriggered = false;
16422    let $transitionEndTarget;
16423
16424    if (allSlides) {
16425      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;
16426    } else {
16427      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);
16428    }
16429
16430    $transitionEndTarget.transitionEnd(() => {
16431      if (eventTriggered) return;
16432      if (!swiper || swiper.destroyed) return;
16433      eventTriggered = true;
16434      swiper.animating = false;
16435      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
16436
16437      for (let i = 0; i < triggerEvents.length; i += 1) {
16438        $wrapperEl.trigger(triggerEvents[i]);
16439      }
16440    });
16441  }
16442}
16443
16444/***/ }),
16445
vendor: 1,252 bytes, lines 16446-16486
16446/***/ "./node_modules/swiper/shared/get-browser.js":
16447/*!***************************************************!*\
16448  !*** ./node_modules/swiper/shared/get-browser.js ***!
16449  \***************************************************/
16450/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16451
16452"use strict";
16453__webpack_require__.r(__webpack_exports__);
16454/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16455/* harmony export */   getBrowser: function() { return /* binding */ getBrowser; }
16456/* harmony export */ });
16457/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
16458
16459let browser;
16460
16461function calcBrowser() {
16462  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
16463
16464  function isSafari() {
16465    const ua = window.navigator.userAgent.toLowerCase();
16466    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
16467  }
16468
16469  return {
16470    isSafari: isSafari(),
16471    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
16472  };
16473}
16474
16475function getBrowser() {
16476  if (!browser) {
16477    browser = calcBrowser();
16478  }
16479
16480  return browser;
16481}
16482
16483
16484
16485/***/ }),
16486
vendor: 2,425 bytes, lines 16487-16559
16487/***/ "./node_modules/swiper/shared/get-device.js":
16488/*!**************************************************!*\
16489  !*** ./node_modules/swiper/shared/get-device.js ***!
16490  \**************************************************/
16491/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16492
16493"use strict";
16494__webpack_require__.r(__webpack_exports__);
16495/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16496/* harmony export */   getDevice: function() { return /* binding */ getDevice; }
16497/* harmony export */ });
16498/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
16499/* harmony import */ var _get_support_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-support.js */ "./node_modules/swiper/shared/get-support.js");
16500
16501
16502let deviceCached;
16503
16504function calcDevice({
16505  userAgent
16506} = {}) {
16507  const support = (0,_get_support_js__WEBPACK_IMPORTED_MODULE_1__.getSupport)();
16508  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
16509  const platform = window.navigator.platform;
16510  const ua = userAgent || window.navigator.userAgent;
16511  const device = {
16512    ios: false,
16513    android: false
16514  };
16515  const screenWidth = window.screen.width;
16516  const screenHeight = window.screen.height;
16517  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
16518
16519  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
16520  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
16521  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
16522  const windows = platform === 'Win32';
16523  let macos = platform === 'MacIntel'; // iPadOs 13 fix
16524
16525  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
16526
16527  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
16528    ipad = ua.match(/(Version)\/([\d.]+)/);
16529    if (!ipad) ipad = [0, 1, '13_0_0'];
16530    macos = false;
16531  } // Android
16532
16533
16534  if (android && !windows) {
16535    device.os = 'android';
16536    device.android = true;
16537  }
16538
16539  if (ipad || iphone || ipod) {
16540    device.os = 'ios';
16541    device.ios = true;
16542  } // Export object
16543
16544
16545  return device;
16546}
16547
16548function getDevice(overrides = {}) {
16549  if (!deviceCached) {
16550    deviceCached = calcDevice(overrides);
16551  }
16552
16553  return deviceCached;
16554}
16555
16556
16557
16558/***/ }),
16559
vendor: 1,753 bytes, lines 16560-16615
16560/***/ "./node_modules/swiper/shared/get-support.js":
16561/*!***************************************************!*\
16562  !*** ./node_modules/swiper/shared/get-support.js ***!
16563  \***************************************************/
16564/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16565
16566"use strict";
16567__webpack_require__.r(__webpack_exports__);
16568/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16569/* harmony export */   getSupport: function() { return /* binding */ getSupport; }
16570/* harmony export */ });
16571/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
16572
16573let support;
16574
16575function calcSupport() {
16576  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
16577  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
16578  return {
16579    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,
16580    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
16581    passiveListener: function checkPassiveListener() {
16582      let supportsPassive = false;
16583
16584      try {
16585        const opts = Object.defineProperty({}, 'passive', {
16586          // eslint-disable-next-line
16587          get() {
16588            supportsPassive = true;
16589          }
16590
16591        });
16592        window.addEventListener('testPassiveListener', null, opts);
16593      } catch (e) {// No support
16594      }
16595
16596      return supportsPassive;
16597    }(),
16598    gestures: function checkGestures() {
16599      return 'ongesturestart' in window;
16600    }()
16601  };
16602}
16603
16604function getSupport() {
16605  if (!support) {
16606    support = calcSupport();
16607  }
16608
16609  return support;
16610}
16611
16612
16613
16614/***/ }),
16615
vendor: 7,097 bytes, lines 16616-16835
16616/***/ "./node_modules/swiper/shared/utils.js":
16617/*!*********************************************!*\
16618  !*** ./node_modules/swiper/shared/utils.js ***!
16619  \*********************************************/
16620/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16621
16622"use strict";
16623__webpack_require__.r(__webpack_exports__);
16624/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16625/* harmony export */   animateCSSModeScroll: function() { return /* binding */ animateCSSModeScroll; },
16626/* harmony export */   deleteProps: function() { return /* binding */ deleteProps; },
16627/* harmony export */   extend: function() { return /* binding */ extend; },
16628/* harmony export */   getComputedStyle: function() { return /* binding */ getComputedStyle; },
16629/* harmony export */   getTranslate: function() { return /* binding */ getTranslate; },
16630/* harmony export */   isObject: function() { return /* binding */ isObject; },
16631/* harmony export */   nextTick: function() { return /* binding */ nextTick; },
16632/* harmony export */   now: function() { return /* binding */ now; },
16633/* harmony export */   setCSSProperty: function() { return /* binding */ setCSSProperty; }
16634/* harmony export */ });
16635/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
16636
16637
16638function deleteProps(obj) {
16639  const object = obj;
16640  Object.keys(object).forEach(key => {
16641    try {
16642      object[key] = null;
16643    } catch (e) {// no getter for object
16644    }
16645
16646    try {
16647      delete object[key];
16648    } catch (e) {// something got wrong
16649    }
16650  });
16651}
16652
16653function nextTick(callback, delay = 0) {
16654  return setTimeout(callback, delay);
16655}
16656
16657function now() {
16658  return Date.now();
16659}
16660
16661function getComputedStyle(el) {
16662  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
16663  let style;
16664
16665  if (window.getComputedStyle) {
16666    style = window.getComputedStyle(el, null);
16667  }
16668
16669  if (!style && el.currentStyle) {
16670    style = el.currentStyle;
16671  }
16672
16673  if (!style) {
16674    style = el.style;
16675  }
16676
16677  return style;
16678}
16679
16680function getTranslate(el, axis = 'x') {
16681  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
16682  let matrix;
16683  let curTransform;
16684  let transformMatrix;
16685  const curStyle = getComputedStyle(el, null);
16686
16687  if (window.WebKitCSSMatrix) {
16688    curTransform = curStyle.transform || curStyle.webkitTransform;
16689
16690    if (curTransform.split(',').length > 6) {
16691      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
16692    } // Some old versions of Webkit choke when 'none' is passed; pass
16693    // empty string instead in this case
16694
16695
16696    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
16697  } else {
16698    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
16699    matrix = transformMatrix.toString().split(',');
16700  }
16701
16702  if (axis === 'x') {
16703    // Latest Chrome and webkits Fix
16704    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
16705    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
16706    else curTransform = parseFloat(matrix[4]);
16707  }
16708
16709  if (axis === 'y') {
16710    // Latest Chrome and webkits Fix
16711    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
16712    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
16713    else curTransform = parseFloat(matrix[5]);
16714  }
16715
16716  return curTransform || 0;
16717}
16718
16719function isObject(o) {
16720  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
16721}
16722
16723function isNode(node) {
16724  // eslint-disable-next-line
16725  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
16726    return node instanceof HTMLElement;
16727  }
16728
16729  return node && (node.nodeType === 1 || node.nodeType === 11);
16730}
16731
16732function extend(...args) {
16733  const to = Object(args[0]);
16734  const noExtend = ['__proto__', 'constructor', 'prototype'];
16735
16736  for (let i = 1; i < args.length; i += 1) {
16737    const nextSource = args[i];
16738
16739    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
16740      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
16741
16742      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
16743        const nextKey = keysArray[nextIndex];
16744        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
16745
16746        if (desc !== undefined && desc.enumerable) {
16747          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
16748            if (nextSource[nextKey].__swiper__) {
16749              to[nextKey] = nextSource[nextKey];
16750            } else {
16751              extend(to[nextKey], nextSource[nextKey]);
16752            }
16753          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
16754            to[nextKey] = {};
16755
16756            if (nextSource[nextKey].__swiper__) {
16757              to[nextKey] = nextSource[nextKey];
16758            } else {
16759              extend(to[nextKey], nextSource[nextKey]);
16760            }
16761          } else {
16762            to[nextKey] = nextSource[nextKey];
16763          }
16764        }
16765      }
16766    }
16767  }
16768
16769  return to;
16770}
16771
16772function setCSSProperty(el, varName, varValue) {
16773  el.style.setProperty(varName, varValue);
16774}
16775
16776function animateCSSModeScroll({
16777  swiper,
16778  targetPosition,
16779  side
16780}) {
16781  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
16782  const startPosition = -swiper.translate;
16783  let startTime = null;
16784  let time;
16785  const duration = swiper.params.speed;
16786  swiper.wrapperEl.style.scrollSnapType = 'none';
16787  window.cancelAnimationFrame(swiper.cssModeFrameID);
16788  const dir = targetPosition > startPosition ? 'next' : 'prev';
16789
16790  const isOutOfBound = (current, target) => {
16791    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
16792  };
16793
16794  const animate = () => {
16795    time = new Date().getTime();
16796
16797    if (startTime === null) {
16798      startTime = time;
16799    }
16800
16801    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
16802    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
16803    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
16804
16805    if (isOutOfBound(currentPosition, targetPosition)) {
16806      currentPosition = targetPosition;
16807    }
16808
16809    swiper.wrapperEl.scrollTo({
16810      [side]: currentPosition
16811    });
16812
16813    if (isOutOfBound(currentPosition, targetPosition)) {
16814      swiper.wrapperEl.style.overflow = 'hidden';
16815      swiper.wrapperEl.style.scrollSnapType = '';
16816      setTimeout(() => {
16817        swiper.wrapperEl.style.overflow = '';
16818        swiper.wrapperEl.scrollTo({
16819          [side]: currentPosition
16820        });
16821      });
16822      window.cancelAnimationFrame(swiper.cssModeFrameID);
16823      return;
16824    }
16825
16826    swiper.cssModeFrameID = window.requestAnimationFrame(animate);
16827  };
16828
16829  animate();
16830}
16831
16832
16833
16834/***/ }),
16835
vendor: 8,014 bytes, lines 16836-16917
16836/***/ "./node_modules/swiper/swiper-bundle.esm.js":
16837/*!**************************************************!*\
16838  !*** ./node_modules/swiper/swiper-bundle.esm.js ***!
16839  \**************************************************/
16840/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16841
16842"use strict";
16843__webpack_require__.r(__webpack_exports__);
16844/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16845/* harmony export */   Swiper: function() { return /* reexport safe */ _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; },
16846/* harmony export */   "default": function() { return /* reexport safe */ _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }
16847/* harmony export */ });
16848/* harmony import */ var _core_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/core.js */ "./node_modules/swiper/core/core.js");
16849/* harmony import */ var _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual/virtual.js */ "./node_modules/swiper/modules/virtual/virtual.js");
16850/* harmony import */ var _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard/keyboard.js */ "./node_modules/swiper/modules/keyboard/keyboard.js");
16851/* harmony import */ var _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel/mousewheel.js */ "./node_modules/swiper/modules/mousewheel/mousewheel.js");
16852/* harmony import */ var _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation/navigation.js */ "./node_modules/swiper/modules/navigation/navigation.js");
16853/* harmony import */ var _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination/pagination.js */ "./node_modules/swiper/modules/pagination/pagination.js");
16854/* harmony import */ var _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar/scrollbar.js */ "./node_modules/swiper/modules/scrollbar/scrollbar.js");
16855/* harmony import */ var _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax/parallax.js */ "./node_modules/swiper/modules/parallax/parallax.js");
16856/* harmony import */ var _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom/zoom.js */ "./node_modules/swiper/modules/zoom/zoom.js");
16857/* harmony import */ var _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/lazy/lazy.js */ "./node_modules/swiper/modules/lazy/lazy.js");
16858/* harmony import */ var _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/controller/controller.js */ "./node_modules/swiper/modules/controller/controller.js");
16859/* harmony import */ var _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/a11y/a11y.js */ "./node_modules/swiper/modules/a11y/a11y.js");
16860/* harmony import */ var _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/history/history.js */ "./node_modules/swiper/modules/history/history.js");
16861/* harmony import */ var _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/hash-navigation/hash-navigation.js */ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js");
16862/* harmony import */ var _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/autoplay/autoplay.js */ "./node_modules/swiper/modules/autoplay/autoplay.js");
16863/* harmony import */ var _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/thumbs/thumbs.js */ "./node_modules/swiper/modules/thumbs/thumbs.js");
16864/* harmony import */ var _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/free-mode/free-mode.js */ "./node_modules/swiper/modules/free-mode/free-mode.js");
16865/* harmony import */ var _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/grid/grid.js */ "./node_modules/swiper/modules/grid/grid.js");
16866/* harmony import */ var _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/manipulation/manipulation.js */ "./node_modules/swiper/modules/manipulation/manipulation.js");
16867/* harmony import */ var _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-fade/effect-fade.js */ "./node_modules/swiper/modules/effect-fade/effect-fade.js");
16868/* harmony import */ var _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-cube/effect-cube.js */ "./node_modules/swiper/modules/effect-cube/effect-cube.js");
16869/* harmony import */ var _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-flip/effect-flip.js */ "./node_modules/swiper/modules/effect-flip/effect-flip.js");
16870/* harmony import */ var _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-coverflow/effect-coverflow.js */ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js");
16871/* harmony import */ var _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-creative/effect-creative.js */ "./node_modules/swiper/modules/effect-creative/effect-creative.js");
16872/* harmony import */ var _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./modules/effect-cards/effect-cards.js */ "./node_modules/swiper/modules/effect-cards/effect-cards.js");
16873/**
16874 * Swiper 8.4.7
16875 * Most modern mobile touch slider and framework with hardware accelerated transitions
16876 * https://swiperjs.com
16877 *
16878 * Copyright 2014-2023 Vladimir Kharlampidi
16879 *
16880 * Released under the MIT License
16881 *
16882 * Released on: January 30, 2023
16883 */
16884
16885
16886
16887
16888
16889
16890
16891
16892
16893
16894
16895
16896
16897
16898
16899
16900
16901
16902
16903
16904
16905
16906
16907
16908
16909
16910
16911
16912// Swiper Class
16913const modules = [_modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__["default"], _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__["default"], _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__["default"], _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__["default"], _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__["default"], _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__["default"], _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__["default"], _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__["default"], _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__["default"], _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__["default"], _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__["default"], _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__["default"], _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__["default"], _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__["default"], _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__["default"], _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__["default"], _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__["default"]];
16914_core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"].use(modules);
16915
16916
16917/***/ })
vendor: 3,718 bytes, lines 16917-17009
16917
16918
16919/******/ 	});
16920/************************************************************************/
16921/******/ 	// The module cache
16922/******/ 	var __webpack_module_cache__ = {};
16923/******/ 	
16924/******/ 	// The require function
16925/******/ 	function __webpack_require__(moduleId) {
16926/******/ 		// Check if module is in cache
16927/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
16928/******/ 		if (cachedModule !== undefined) {
16929/******/ 			return cachedModule.exports;
16930/******/ 		}
16931/******/ 		// Create a new module (and put it into the cache)
16932/******/ 		var module = __webpack_module_cache__[moduleId] = {
16933/******/ 			// no module.id needed
16934/******/ 			// no module.loaded needed
16935/******/ 			exports: {}
16936/******/ 		};
16937/******/ 	
16938/******/ 		// Execute the module function
16939/******/ 		if (!(moduleId in __webpack_modules__)) {
16940/******/ 			delete __webpack_module_cache__[moduleId];
16941/******/ 			var e = new Error("Cannot find module '" + moduleId + "'");
16942/******/ 			e.code = 'MODULE_NOT_FOUND';
16943/******/ 			throw e;
16944/******/ 		}
16945/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
16946/******/ 	
16947/******/ 		// Return the exports of the module
16948/******/ 		return module.exports;
16949/******/ 	}
16950/******/ 	
16951/************************************************************************/
16952/******/ 	/* webpack/runtime/compat get default export */
16953/******/ 	!function() {
16954/******/ 		// getDefaultExport function for compatibility with non-harmony modules
16955/******/ 		__webpack_require__.n = function(module) {
16956/******/ 			var getter = module && module.__esModule ?
16957/******/ 				function() { return module['default']; } :
16958/******/ 				function() { return module; };
16959/******/ 			__webpack_require__.d(getter, { a: getter });
16960/******/ 			return getter;
16961/******/ 		};
16962/******/ 	}();
16963/******/ 	
16964/******/ 	/* webpack/runtime/define property getters */
16965/******/ 	!function() {
16966/******/ 		// define getter functions for harmony exports
16967/******/ 		__webpack_require__.d = function(exports, definition) {
16968/******/ 			for(var key in definition) {
16969/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
16970/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
16971/******/ 				}
16972/******/ 			}
16973/******/ 		};
16974/******/ 	}();
16975/******/ 	
16976/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
16977/******/ 	!function() {
16978/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
16979/******/ 	}();
16980/******/ 	
16981/******/ 	/* webpack/runtime/make namespace object */
16982/******/ 	!function() {
16983/******/ 		// define __esModule on exports
16984/******/ 		__webpack_require__.r = function(exports) {
16985/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
16986/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16987/******/ 			}
16988/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
16989/******/ 		};
16990/******/ 	}();
16991/******/ 	
16992/************************************************************************/
16993var __webpack_exports__ = {};
16994// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
16995!function() {
16996"use strict";
16997/*!***************************!*\
16998  !*** ./assets/js/main.js ***!
16999  \***************************/
17000__webpack_require__.r(__webpack_exports__);
17001/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_components */ "./assets/js/_components.js");
17002/* harmony import */ var _custom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_custom */ "./assets/js/_custom.js");
17003// Main JS file
17004 // Custom components
17005 // Custom scripts
17006}();
17007/******/ })()
17008;
17009//# sourceMappingURL=main.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.