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> / <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 `&` in href attributes (via 636 // esc_url). Some handlers read getAttribute('href') instead of .href, 637 // which produces `&%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('&') === -1 && rawHref.indexOf('&%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.